Seems that gc handler of connection can yield
filonenko-mikhail opened this issue · 1 comments
filonenko-mikhail commented
There is garbage collector for lua. It's prohibited to yield inside gc cycle. Any gc hook have to not use yielding calls.
There is probably yielding here. It's gc hook for connection and logic to put connection back to pool — pool:put. And inside pool:put channel can be put. And fiber.channel.put can yield in case when listener exists.
https://github.com/tarantool/mysql/blob/master/mysql/init.lua#L51
Totktonada commented
AFAIR, those get() and put() should be balanced in the sense that this put() always adds an object to a non-full channel. Anyway, it would be good to check it in the code and at least log if something goes wrong.