private async void OnTimedEvent(object sender,
                                        ElapsedEventArgs e)
        {
            if (JobQueueItemEntity == null)
            {
                return;
            }

            // All job progresses must have been sent to manager.
            if (_jobDetailSender.DetailsCount() != 0)
            {
                return;
            }

            Stop();

            if (_enableGc)
            {
                GC.Collect();
            }
            try
            {
                var httpResponseMessage = await TrySendStatus(new JobQueueItemEntity
                {
                    JobId = JobQueueItemEntity.JobId
                }, _cancellationTokenSource.Token);

                if (httpResponseMessage.IsSuccessStatusCode)
                {
                    if (!Logger.IsDebugEnabled)
                    {
                        _exceptionLoggerHandler.ResetLastLoggedTime("Sent job status to manager again.");
                    }

                    Logger.DebugWithLineNumber($"{_whoAmI} : Sent job status to manager ({httpResponseMessage.RequestMessage.RequestUri}) " +
                                               $"for job ( jobId, jobName ) : ( {JobQueueItemEntity.JobId}, {JobQueueItemEntity.Name} )");

                    InvokeTriggerTrySendStatusSucceded();
                }
                else
                {
                    Start();
                    var errorMessage = $"{_whoAmI} : Send status to manager failed for job ( jobId, jobName ) : " +
                                       $"( {JobQueueItemEntity.JobId}, {JobQueueItemEntity.Name} ). Reason : {httpResponseMessage.ReasonPhrase}";
                    _exceptionLoggerHandler.LogError(LoggerExtensions.GetFormattedLogMessage(errorMessage));
                }
            }

            catch (Exception exp)
            {
                Start();
                var errorMessage = $"{_whoAmI} : Send status to manager failed for job ( jobId, jobName ) :" +
                                   $" ( {JobQueueItemEntity.JobId}, {JobQueueItemEntity.Name} )";
                _exceptionLoggerHandler.LogError(LoggerExtensions.GetFormattedLogMessage(errorMessage), exp);
            }
        }
Пример #2
0
        private async void OnTimedEvent(object sender, ElapsedEventArgs e)
        {
            try
            {
                await SendPing(_nodeConfiguration.BaseAddress,
                               _nodeConfiguration.GetManagerNodeHeartbeatUri(),
                               _cancellationTokenSource.Token);

                _exceptionLoggerHandler.ResetLastLoggedTime("Successfully sent Heartbeat to manager again.");
            }
            catch (Exception exception)
            {
                var currentScopeMessage =
                    LoggerExtensions.GetFormattedLogMessage(_whoAmI + ": Heartbeat failed. Is the manager up and running?");
                _exceptionLoggerHandler.LogInfo(currentScopeMessage, exception);
                //Logger.InfoWithLineNumber(_whoAmI + ": Heartbeat failed. Is the manager up and running?");
            }
        }