schedulePeriodic method
Schedules eviction to run periodically.
The frequency
parameter determines how often eviction should run.
The minInterval
parameter sets a minimum time between evictions to prevent
excessive cleanup operations.
Implementation
void schedulePeriodic(Duration frequency, {Duration? minInterval}) {
if (_isRunning) {
_log.warning('Scheduler is already running. Stop it first.');
return;
}
if (frequency < Duration(minutes: 1)) {
_log.warning('Frequency is too short. Setting to 1 minute.');
frequency = Duration(minutes: 1);
}
if (minInterval != null) {
_minInterval = minInterval;
}
_conditions.add(EvictionTiming.periodic);
_periodicTimer = Timer.periodic(frequency, (_) => _checkAndEvict());
_isRunning = true;
_log.info(
'Scheduled periodic eviction every ${frequency.inMinutes} minutes');
}