Example #1
0
        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;
                }
            }
        }
Example #2
0
        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;
                }
            }
        }