Skip to content
Snippets Groups Projects
  • Vladimir Davydov's avatar
    ff02157f
    vinyl: fix false-positive assertion at exit · ff02157f
    Vladimir Davydov authored
    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
    ff02157f
    History
    vinyl: fix false-positive assertion at exit
    Vladimir Davydov authored
    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