Beispiel #1
0
        private void HandleTaskException(TaskMetaData taskMetaData, Exception ex)
        {
            taskMetaData.FailureCounter++;

            string logMessage = "The '" + taskMetaData.InstanceName + "' instance of '" +
                                taskMetaData.Task.Name +
                                "' threw an exception. Attempt number " + taskMetaData.FailureCounter +
                                ". Exception details: \r\n" + ex;

            if (taskMetaData.FailureCounter >= TASK_FAILURE_LIMIT)
            {
                PutTaskIntoCooldown(taskMetaData);
                taskMetaData.FailureCounter = 0;
                logMessage = "Going into Cooldown, will resume at " +
                         taskMetaData.CooldownPoint + ". " + logMessage;
            }

            WriteErrorToLog(logMessage);
        }
Beispiel #2
0
 private void PutTaskIntoCooldown(TaskMetaData taskMetaData)
 {
     taskMetaData.CooldownPoint = DateTime.Now + new TimeSpan(0, 0, TASK_FAILURE_COOLDOWN_INTERVAL_S);
 }
Beispiel #3
0
        private bool TaskIsDueToDispatch(TaskMetaData taskMetaData, DateTime currentTime)
        {
            bool isInCooldownMode = taskMetaData.CooldownPoint > currentTime;
            DateTime nextDispatchTime = taskMetaData.LastDispatch + taskMetaData.Task.Interval;
            bool hasNotPassedDueTime = nextDispatchTime > currentTime;

            if (taskMetaData.Task == null || taskMetaData.IsRunning  || isInCooldownMode || hasNotPassedDueTime)
            {
                return false;
            }
            
            return true;
        }