aa48ecb core/timer: Always use inactive_exit_timestamp if it is set

1 file Authored by daandemeyer 2 years ago, Committed by zbyszek 2 years ago,
    core/timer: Always use inactive_exit_timestamp if it is set
    
    If we're doing a daemon-reload, we'll be going from TIMER_DEAD => TIMER_WAITING,
    so we won't use inactive_exit_timestamp because TIMER_DEAD != UNIT_ACTIVE, even
    though inactive_exit_timestamp is serialized/deserialized and will be valid after
    the daemon-reload.
    
    This issue can lead to timers never firing as we'll always calculate the next
    elapse based on the current realtime on daemon-reload, so if daemon-reload happens
    often enough, the elapse interval will be moved into the future every time, which
    means the timer will never trigger.
    
    To fix the issue, let's always use inactive_exit_timestamp if it is set, and only
    fall back to the current realtime if it is not set.
    
    (cherry picked from commit 6546045fa0bf84737bd8b2e1e8bf7dd3941d8352)
    
        
file modified
+4 -6