netbox: don't fire on_connect() at schema update
There was a bug that netbox at any schema update called on_connect() triggers. This was due to overcomplicated logic of handling of changes in the netbox state machine. On_connect() was fired each time the machine entered 'active' state, even if its previous states were 'active' and then 'fetch_schema'. The latter state can be entered many times without reconnects. Another bug was about on_disconnect() - it could be fired even if the connection never entered active state. For example, if its first 'fetch_schema' has failed. Now there is an explicit flag showing the machine connect state. The triggers are fired only when it is changed, on 'active' and on any error states. Intermediate states (fetch_schema, auth) do not matter anymore. Thanks @mtrempoltsev for the initial investigation and a draft fix. Closes #4593 (cherry picked from commit d56d869a)
Showing
- src/box/lua/net_box.lua 13 additions, 8 deletionssrc/box/lua/net_box.lua
- test/box/gh-4593-netbox-on_connect-disconnect.result 118 additions, 0 deletionstest/box/gh-4593-netbox-on_connect-disconnect.result
- test/box/gh-4593-netbox-on_connect-disconnect.test.lua 52 additions, 0 deletionstest/box/gh-4593-netbox-on_connect-disconnect.test.lua
Loading
Please register or sign in to comment