Lua 是否在tarantool中更改box.info字段上设置触发器?

Lua 是否在tarantool中更改box.info字段上设置触发器?,lua,tarantool,Lua,Tarantool,我需要捕获正在将box.info.status从“正在加载”更改为“准备就绪”。因此,我可以在WAL读取之后,但在复制同步之前启用触发器 box.space.myspace上的我的触发器函数: local function before_replace(old, new) -- collision resolving here if box.session.type() ~= 'applier' then box.space.stat:upsert(

我需要捕获正在将box.info.status从“正在加载”更改为“准备就绪”。因此,我可以在WAL读取之后,但在复制同步之前启用触发器

box.space.myspace上的我的触发器函数

local function before_replace(old, new)
    -- collision resolving here
    if box.session.type() ~= 'applier' then
        box.space.stat:upsert(
            { "key", 0 },
            {
                {"+", stat.COUNT, 1}
            })
    end
    return
end
  • 如果我在模式初始化时设置触发器,它将以只读方式失败 错误。在尝试向上插入只读
    stat
    space时
  • 如果我将其设置为
    box.info.ro==False
    它将跳过复制\u同步
我发现设置触发器最合适的时间是一个瞬间,然后
box.info.status
load
更改为
running
。我像你一样解决我的问题。但我想知道哪里有更好的方法


我考虑在
box.info.status
字段上设置回调函数。我如何才能做到这一点呢?

我能想到的最简单的方法是生成一个光纤,它定期检查更改,并在检测到更改时运行回拨。

你做错了。如果要等待实例离开只读模式,则有box.ctl.wait_ro()。如果要等待引导结束,请将代码放在box.cfg之后。最后,如果要捕获模式初始化事件,可以设置box.ctl.on_schema_init trigger。
请准确描述您正试图完成的任务,并为其提供适当的工具。

我修正了描述。想知道哪里有更合适的工具?