vinyl: fix false-positive assertion at exit
latch_destroy() and fiber_cond_destroy() are basically no-op. All they do is check that latch/cond is not used. When a global latch or cond object is destroyed at exit, it may still have users and this is OK as we don't stop fibers at exit. In vinyl this results in the following false-positive assertion failures: src/latch.h:81: latch_destroy: Assertion `l->owner == NULL' failed. src/fiber_cond.c:49: fiber_cond_destroy: Assertion `rlist_empty(&c->waiters)' failed. Remove "destruction" of vy_log::latch to suppress the first one. Wake up all fibers waiting on vy_quota::cond before destruction to suppress the second one. Add some test cases. Closes #3412
Showing
- src/box/vy_log.c 5 additions, 1 deletionsrc/box/vy_log.c
- src/box/vy_quota.h 1 addition, 0 deletionssrc/box/vy_quota.h
- src/errinj.h 1 addition, 0 deletionssrc/errinj.h
- test/box/errinj.result 10 additions, 8 deletionstest/box/errinj.result
- test/vinyl/errinj.result 68 additions, 0 deletionstest/vinyl/errinj.result
- test/vinyl/errinj.test.lua 25 additions, 0 deletionstest/vinyl/errinj.test.lua
Loading
Please register or sign in to comment