public void MarkItemFailed(FtpOutboundData jobData, Exception err) { var errorObject = _eventReporter.ExceptionForObject(err, jobData); jobData.Status = EnumJobStatus.Error; jobData.AddException(err); jobData.ExceptionIdList.Add(errorObject.Id); _documentSession.SaveChanges(); }
public override void Run(ConfigType configuration) { _eventReporter.Trace(this.GetType().Name + ": job run started"); if (_singletonJob) { lock (typeof(EmailSenderJob)) { if (_isRunning) { _eventReporter.Info("EmailSenderJob already running"); return; } else { _isRunning = true; } } } try { bool done = false; int counter = 0; int maxItemsToProcess = this.GetMaxItemsToProcess(configuration); while (!done) { if (counter > maxItemsToProcess) { done = true; } JobDataType jobData = this.GetNextItemToProcess(configuration); if (jobData == null) { done = true; _eventReporter.Trace(this.GetType().Name + ": job run done"); } else { try { _eventReporter.InfoForObject(this.GetType().Name + ": processing item", jobData); this.ProcessItem(configuration, jobData); this.MarkItemSuccessful(jobData); _eventReporter.InfoForObject(this.GetType().Name + ": item done", jobData); } catch (Exception err) { this.MarkItemFailed(jobData, err); _eventReporter.ExceptionForObject(err, jobData); } } } } catch (Exception err) { _eventReporter.Exception(err); } finally { _isRunning = false; } }