diff --git a/src/box/iproto.cc b/src/box/iproto.cc index b5f31c2059e582357698c2e1874659d72a124fd6..cb60c0188373f0236fbfecbf55ca5440a0c2f4a2 100644 --- a/src/box/iproto.cc +++ b/src/box/iproto.cc @@ -522,7 +522,8 @@ iproto_connection_on_input(ev_loop *loop, struct ev_io *watcher, static inline struct iobuf * iproto_connection_output_iobuf(struct iproto_connection *con) { - if (obuf_size(&con->iobuf[1]->out)) + if (obuf_size(&con->iobuf[1]->out) && + obuf_size(&con->iobuf[1]->out) > con->write_pos.size) return con->iobuf[1]; /* * Don't try to write from a newer buffer if an older one @@ -531,7 +532,8 @@ iproto_connection_output_iobuf(struct iproto_connection *con) * pieces of replies from both buffers. */ if (ibuf_size(&con->iobuf[1]->in) == 0 && - obuf_size(&con->iobuf[0]->out)) + obuf_size(&con->iobuf[0]->out) && + obuf_size(&con->iobuf[0]->out) > con->write_pos.size) return con->iobuf[0]; return NULL; } diff --git a/src/lua/fiber.cc b/src/lua/fiber.cc index e983700ac09154f48537aca803328faf63191cbd..85c4d8cddc85bc20db5c4b3beaba9997bdf47f05 100644 --- a/src/lua/fiber.cc +++ b/src/lua/fiber.cc @@ -239,6 +239,17 @@ lbox_fiber_statof(struct fiber *f, void *cb_ctx) lua_pushnumber(L, f->csw); lua_settable(L, -3); + lua_pushliteral(L, "memory"); + lua_newtable(L); + lua_pushstring(L, "used"); + lua_pushnumber(L, region_used(&f->gc)); + lua_settable(L, -3); + lua_pushstring(L, "total"); + lua_pushnumber(L, region_total(&f->gc) + f->coro.stack_size + + sizeof(struct fiber)); + lua_settable(L, -3); + lua_settable(L, -3); + #ifdef ENABLE_BACKTRACE lua_pushstring(L, "backtrace"); lua_newtable(L);