private void PersistEventIfItIsComplete(BackgrounderEvent @event) { if (@event.CanBeMergedNow()) { PersistEvent(@event); } }
private BackgrounderJob GetFinalJobRecord(BackgrounderEvent @event) { var finalEvent = @event.StartEvent; if (@event.IsComplete()) { finalEvent.AddInfoFromEndEvent(@event.EndEvent); return(finalEvent); } if (_latestStartEvents.StartedBeforeLatestStartEvent(finalEvent)) { finalEvent.MarkAsTimedOut(); return(finalEvent); } finalEvent.MarkAsUnknown(); return(finalEvent); }
private void PersistEvent(BackgrounderEvent @event, bool deleteFromDictionary = true) { var jobEvent = GetFinalJobRecord(@event); _jobWriter.AddLine(jobEvent); if (ExtractRefreshJobTypes.Contains(jobEvent.JobType)) { var extractDetails = @event.ExtractJobDetails ?? new BackgrounderExtractJobDetail() { BackgrounderJobId = @event.StartEvent.JobId, }; var argChunks = jobEvent.Args? .Replace("[", "") .Replace("]", "") .Split(',') .ToArray(); if (argChunks?.Length > 0) { extractDetails.ResourceType = argChunks[0].Trim(); } if (argChunks?.Length >= 3) { extractDetails.ResourceName = argChunks[2].Trim(); } _extractJobDetailWriter.AddLine(extractDetails); } if (SubscriptionJobTypes.Contains(jobEvent.JobType) && @event.SubscriptionJobDetails != null) { _subscriptionJobDetailWriter.AddLine(@event.SubscriptionJobDetails); } if (deleteFromDictionary) { _events.Remove(jobEvent.JobId); } }