Exemple #1
0
        private async Task ExecuteTriggersAsync(Job job, SilenceTime silence, Log log)
        {
            try
            {
                if (silence.IsSilenceNow(log.DateTime))
                {
                    Trace.WriteLine("Start triggers for a job: " + job.Name);

                    silence.SetUntil(log.DateTime + job.FailureSilenceInterval);

                    var tasks = new List <Task>();

                    foreach (var trigger in job.GetTriggers())
                    {
                        tasks.Add(trigger.ExecuteAsync(log, silence));
                    }

                    await Task.WhenAll(tasks);

                    silence.ResetCounter();
                }
                else
                {
                    Trace.WriteLine("Mute triggers for a job: " + job.Name);
                    silence.IncreaseCounter();
                }
            }
            catch (Exception exception)
            {
                await SystemLogRepository.SaveAsync(exception, $"Unhandled trigger error. Job = [{job.Name}].");
            }
        }
Exemple #2
0
        public async Task RunAllAsync(List <Job> jobs)
        {
            try
            {
                var tasks = jobs.Select(job => Task.Run(async() => await RunCycleAsync(job))).ToList();

                await Task.WhenAll(tasks);
            }
            catch (Exception exception)
            {
                await SystemLogRepository.SaveAsync(exception, $"Fatal job runner error. Jobs will not be runned until restart.");
            }
        }
Exemple #3
0
        public async Task RunCycleAsync(Job job)
        {
            var silence = new SilenceTime();

            while (true)
            {
                try
                {
                    var elapsed = await RunJobAsync(job, silence);

                    await CoreEx.DelayIfNeeded(job.CheckInterval, elapsed);
                }
                catch (Exception exception)
                {
                    var minutes = TimeSpan.FromMinutes(10);

                    await SystemLogRepository.SaveAsync(exception,
                                                        $"Unhandled job error. Job = [{job.Name}]. Job will be recycled in {minutes}. ");

                    await Task.Delay(minutes);                     //TODO to config
                }
            }
        }
 public SystemLogService()
 {
     _systemLogRepository = new SystemLogRepository();
 }
Exemple #5
0
 public SystemLogController()
 {
     ControllerName = "SystemLog";
     Repository     = new SystemLogRepository();
 }