• guybe7's avatar
    WAITAOF: Update fsynced_reploff_pending even if there's nothing to fsync (#12622) · c2a4b784
    guybe7 authored
    The problem is that WAITAOF could have hang in case commands were
    propagated only to replicas.
    This can happen if a module uses RM_Call with the REDISMODULE_ARGV_NO_AOF flag.
    In that case, master_repl_offset would increase, but there would be nothing to fsync, so
    in the absence of other traffic, fsynced_reploff_pending would stay the static, and WAITAOF can hang.
    
    This commit updates fsynced_reploff_pending to the latest offset in flushAppendOnlyFile in case
    there's nothing to fsync. i.e. in case it's behind because of the above mentions case it'll be refreshed
    and release the WAITAOF.
    
    Other changes:
    Fix a race in wait.tcl (client getting blocked vs. the fsync thread)
    c2a4b784
wait.tcl 17.8 KB