-
Notifications
You must be signed in to change notification settings - Fork 379
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Yield from a GC hook from a fiber serving an iproto request leads to assertion fail #6647
Comments
mkokryashkin
pushed a commit
to mkokryashkin/tarantool
that referenced
this issue
Nov 26, 2022
There is code that may save some time and resources for creating a new Lua state when it is present in the fiber storage of a current fiber. There are not so much of them: running a Lua trigger and construction of a next tuple in a merge source. Before the patch, fiber->storage.lua.stack is filled only for the main fiber and fibers created from Lua using fiber.create() or fiber.new(), but not for background fibers (which serve binary protocol requests). This patch fills fiber->storage.lua.stack for background fibers that serve a Lua call or eval: we already have this state and nothing prevents us from exposing it via the fiber storage. Closes tarantool#6647 Follows up tarantool#4954 NO_DOC=bugfix (cherry-picked from commit ec9b544)
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 12, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 12, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
pushed a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 13, 2022
There is code that may save some time and resources for creating a new Lua state when it is present in the fiber storage of a current fiber. There are not so much of them: running a Lua trigger and construction of a next tuple in a merge source. Before the patch, fiber->storage.lua.stack is filled only for the main fiber and fibers created from Lua using fiber.create() or fiber.new(), but not for background fibers (which serve binary protocol requests). This patch fills fiber->storage.lua.stack for background fibers that serve a Lua call or eval: we already have this state and nothing prevents us from exposing it via the fiber storage. Part of tarantool#6647 Follows up tarantool#4954 NO_DOC=bugfix (cherry-picked from commit ec9b544)
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 13, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix NO_CHANGELOG=already added in the previous patch
mkokryashkin
pushed a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 13, 2022
There is code that may save some time and resources for creating a new Lua state when it is present in the fiber storage of a current fiber. There are not so much of them: running a Lua trigger and construction of a next tuple in a merge source. Before the patch, fiber->storage.lua.stack is filled only for the main fiber and fibers created from Lua using fiber.create() or fiber.new(), but not for background fibers (which serve binary protocol requests). This patch fills fiber->storage.lua.stack for background fibers that serve a Lua call or eval: we already have this state and nothing prevents us from exposing it via the fiber storage. Part of tarantool#6647 Follows up tarantool#4954 NO_DOC=bugfix (cherry-picked from commit ec9b544)
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 13, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix NO_CHANGELOG=already added in the previous patch
mkokryashkin
pushed a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 13, 2022
There is code that may save some time and resources for creating a new Lua state when it is present in the fiber storage of a current fiber. There are not so much of them: running a Lua trigger and construction of a next tuple in a merge source. Before the patch, fiber->storage.lua.stack is filled only for the main fiber and fibers created from Lua using fiber.create() or fiber.new(), but not for background fibers (which serve binary protocol requests). This patch fills fiber->storage.lua.stack for background fibers that serve a Lua call or eval: we already have this state and nothing prevents us from exposing it via the fiber storage. Part of tarantool#6647 Follows up tarantool#4954 NO_DOC=bugfix (cherry-picked from commit ec9b544)
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 13, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix NO_CHANGELOG=already added in the previous patch
mkokryashkin
pushed a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 13, 2022
There is code that may save some time and resources for creating a new Lua state when it is present in the fiber storage of a current fiber. There are not so much of them: running a Lua trigger and construction of a next tuple in a merge source. Before the patch, fiber->storage.lua.stack is filled only for the main fiber and fibers created from Lua using fiber.create() or fiber.new(), but not for background fibers (which serve binary protocol requests). This patch fills fiber->storage.lua.stack for background fibers that serve a Lua call or eval: we already have this state and nothing prevents us from exposing it via the fiber storage. Part of tarantool#6647 Follows up tarantool#4954 NO_DOC=bugfix (cherry-picked from commit ec9b544)
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 13, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix NO_CHANGELOG=already added in the previous patch
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 13, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 15, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 15, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 15, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 15, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 15, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 15, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 15, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 15, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
mkokryashkin
added a commit
to mkokryashkin/tarantool
that referenced
this issue
Dec 16, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes tarantool#6647 NO_DOC=bugfix
igormunkin
pushed a commit
that referenced
this issue
Dec 16, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes #6647 NO_DOC=bugfix (cherry picked from commit dfe79b9)
igormunkin
pushed a commit
that referenced
this issue
Dec 16, 2022
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes #6647 NO_DOC=bugfix (cherry picked from commit dfe79b9)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
1.10.11-46-g5c8c025da
AFAIR, we can see an empty lua state in the fibr local storage on master too in some cases. It should be revisited carefully as for master as well as for 1.10.
Info for inspiration:
9be50ae
b4e186f
ec9b544
tarantool/tuple-merger#18
The text was updated successfully, but these errors were encountered: