• Binbin's avatar
    Fix active expire timeout when db done the scanning (#13030) · f20774ec
    Binbin authored
    When db->expires_cursor==0, it means the DB is done the scanning,
    we should exit the loop to avoid the useless scanning.
    
    It is easy to see the active expire timeout in the modified test,
    for example, let's assume that there is only 1 expired key in the
    DB, and the size / buckets ratio is less than 1%, which means that
    we will skip it in isExpiryDictValidForSamplingCb, and the return
    value of expires_cursor is 0.
    
    Because `data.sampled == 0` is always true, so `repeat` is also
    always true, we will keep scanning the DB, but every time it is
    skipped by the previous judgment (expires_cursor = 0), until the
    timelimit is finally exhausted.
    f20774ec
expire.tcl 30 KB