• Marko Mäkelä's avatar
    MDEV-14154: Failing assertion: slot->last_run <= current_time in fts0opt.cc · c663a941
    Marko Mäkelä authored
    The FTS optimizer thread made a false assumption that time(NULL)
    is monotonic. The system clock can be adjusted to the past,
    for example if the hardware clock was drifting to the future,
    and it was adjusted by NTP.
    
    fts_slot_t::interval_time: Replace with the constant
    FTS_OPTIMIZE_INTERVAL_IN_SECS.
    
    fts_slot_t::last_run, fts_slot_t::completed: Clarify the
    documentation.
    
    fts_optimize_get_time_limit(): Remove a type cast, and
    add a FIXME comment about domain mismatch.
    
    fts_optimize_compact(), fts_optimize_words(): Limit the time
    also when the current time has been moved to the past.
    
    fts_optimize_table_bk(): Check for wrap-around.
    
    fts_optimize_how_many(): Check for wrap-around, and remove the
    failing assertions.
    
    fts_is_sync_needed(): Remove a redundant call to time(NULL).
    c663a941
fts0opt.cc 77.9 KB