Kirill, thank you for mention that. In earlier version relay could be a NULL pointer but now it could be deleted only with replica. So it's outdated code. > + assert(replica->relay); >Вторник, 22 мая 2018, 10:08 +03:00 от Kirill Yukhin : > >Hello Kostya, >On 21 мая 20:07, Konstantin Belyavskiy wrote: >> This fix improves 'box.info.replication' output. >> If downstream fails and thus disconnects from upstream, improve >> logging by printing 'status: disconnected' and error message on >> both sides (master and replica). >> >> Closes #3365 >> --- >> diff --git a/src/box/lua/info.c b/src/box/lua/info.c >> index 9dbc3f92c..8f358d04e 100644 >> --- a/src/box/lua/info.c >> +++ b/src/box/lua/info.c >> @@ -148,6 +148,23 @@ lbox_pushreplica(lua_State *L, struct replica *replica) >> if (relay_get_state(replica->relay) == RELAY_FOLLOW) { >> lua_pushstring(L, "downstream"); >> lbox_pushrelay(L, relay); >> + lua_settable(L, -3); >> + } else if (relay_get_state(replica->relay) == RELAY_STOPPED) { >> + lua_pushstring(L, "downstream"); >> + >> + lua_newtable(L); >> + lua_pushstring(L, "status"); >> + lua_pushstring(L, "stopped"); >> + lua_settable(L, -3); >> + >> + assert(replica->relay); >Few lines above you dereferenced replica (in if-stmt). Why this assert? >If it is necessary, please note that relay is a pointer and should be compared >against NULL according to coding style. > >-- >Regards, Kirill Yukhin > Best regards, Konstantin Belyavskiy k.belyavskiy@tarantool.org