public async Task Run(CancellationToken token) { var prevStats = new Dictionary <string, ClusterNodeStatusReport>(); while (token.IsCancellationRequested == false) { var delay = TimeoutManager.WaitFor(SupervisorSamplePeriod, token); try { if (Suspended == false) { _iteration++; var newStats = _maintenance.GetStats(); await AnalyzeLatestStats(newStats, prevStats); prevStats = newStats; } await delay; } catch (Exception e) { if (_logger.IsInfoEnabled) { _logger.Info($"An error occurred while analyzing maintenance stats on node {_nodeTag}.", e); } } finally { await delay; } } }
public async Task Run(CancellationToken token) { // we give some time to populate the stats. await TimeoutManager.WaitFor(SupervisorSamplePeriod, token); var prevStats = _maintenance.GetStats(); // wait before collecting the stats again. await TimeoutManager.WaitFor(SupervisorSamplePeriod, token); while (_term == _engine.CurrentTerm && token.IsCancellationRequested == false) { var delay = TimeoutManager.WaitFor(SupervisorSamplePeriod, token); try { if (Suspended == false) { _iteration++; var newStats = _maintenance.GetStats(); await AnalyzeLatestStats(newStats, prevStats); prevStats = newStats; } } catch (Exception e) { if (_logger.IsInfoEnabled) { _logger.Info($"An error occurred while analyzing maintenance stats on node {_nodeTag}.", e); } } finally { await delay; } } }