• antirez's avatar
    Event loop: call after sleep() only from top level. · 54e4bbea
    antirez authored
    In general we do not want before/after sleep() callbacks to be called
    when we re-enter the event loop, since those calls are only designed in
    order to perform operations every main iteration of the event loop, and
    re-entering is often just a way to incrementally serve clietns with
    error messages or other auxiliary operations. However, if we call the
    callbacks, we are then forced to think at before/after sleep callbacks
    as re-entrant, which is much harder without any good need.
    
    However here there was also a clear bug: beforeSleep() was actually
    never called when re-entering the event loop. But the new afterSleep()
    callback was. This is broken and in this instance re-entering
    afterSleep() caused a modules GIL dead lock.
    54e4bbea
ae.h 4.71 KB