You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix deadlock in case test performs lots of checks without yielding
Before commit 6c5c8b7 ("Print luatest logs to stdout when unified
log is disabled"), luatest implicitly configured the logger to operate
in the non-blocking mode by using a pipe for the logs destination.
Now, it uses a file albeit the file actually points to a pipe file
descriptor. Tarantool thinks it's a regular file and writes all logs in
the blocking mode. This leads to a deadlock if a test performs a lot
of checks (which are logged) without yielding execution to the fiber
processing logs because the size of a pipe is quite limited. Let's fix
this issue by writing all logs through a pipe, as we did before. Let's
also explicitly enable non-blocking logging to avoid breakages like this
in future.
The fix isn't ideal because it may lead to dropping logs. We should
probably handle logs emitted by the luatest runner in a separate
process, like we do for processes spawned in tests.
Closes#416
0 commit comments