Size: a a a

2020 June 22

GS

Guram Savinov in Tarantool
спейсы пустые были, поэтому не срабатывало
источник

GS

Guram Savinov in Tarantool
теперь срабатывает только на мастерах
источник

MM

Max Melentiev in Tarantool
потому что на реплики сначала приезжает создание спэйса, а потом устанавливается триггер.
вам надо
function role.init()
 box.space._space:on_replace(... hook() ...)
 hook()
источник

GS

Guram Savinov in Tarantool
local function init(opts)
   local log = require('log')
   box.space._space:on_replace(function(old_space, new_space)
       log.info('on _space replace')
       log.info(old_space)
       log.info(new_space)
   end)

 ...
 return true
end

чего здесь не хватает для реплик?
источник

DS

Dmitry Sharonov in Tarantool
обхода спейсов которые осзданы до навешивания триггера
источник

DS

Dmitry Sharonov in Tarantool
(например до подъема реплики)
источник

GS

Guram Savinov in Tarantool
то что на реплике на момент init роли все спейсы уже существуют это мне везет или последовательность по факту такая: сначала создаются все спейсы которых не существует, потом инитятся роли?
источник

DS

Dmitry Sharonov in Tarantool
скорее везет, я бы не закладывался на последовательность
источник

DS

Dmitry Sharonov in Tarantool
скорее так: вызывается box.cfg, потом инитятся роли
источник

DS

Dmitry Sharonov in Tarantool
но отдаст ли боксцфг управление до того как догонится? а может и отдать
источник

DS

Dmitry Sharonov in Tarantool
Dmitry Sharonov
но отдаст ли боксцфг управление до того как догонится? а может и отдать
при рестарте, например
источник

MM

Max Melentiev in Tarantool
Dmitry Sharonov
скорее везет, я бы не закладывался на последовательность
Почему везёт? Сначала в любом случае инитится мастер, там создаются спэйсы. При джойне реплики она сначала синкает данные и у неё появляются спжйсы, потом вызывается инит
источник

YD

Yaroslav Dynnikov in Tarantool
везёт. однозначно. инит ролей на мастере и на реплике не синхронизирован.
Ярче всего рейсы проявляются, если сначала собрать репликасет без ролей, а потом включить на нем роль.
источник

YD

Yaroslav Dynnikov in Tarantool
Guram Savinov
то что на реплике на момент init роли все спейсы уже существуют это мне везет или последовательность по факту такая: сначала создаются все спейсы которых не существует, потом инитятся роли?
вам нужно закладываться на оба варианта:

if box.space.my_space ~= nil then
   ...
else
   -- setup trigger
источник

MM

Max Melentiev in Tarantool
Yaroslav Dynnikov
вам нужно закладываться на оба варианта:

if box.space.my_space ~= nil then
   ...
else
   -- setup trigger
Триггер не по условию) он изначально нужен был для отслеживания изменения формата спэйса
источник

YD

Yaroslav Dynnikov in Tarantool
ок, значит else лишний
источник
2020 June 23

YS

Yura Sokolov in Tarantool
источник

DS

Dmitry Sharonov in Tarantool
вот она, слава!
источник

AK

Alexey Kuzin in Tarantool
источник

YS

Yura Sokolov in Tarantool
Ну, от меня в коммите только упоминание.
источник