// Token: 0x0600124C RID: 4684 RVA: 0x00069300 File Offset: 0x00067500 public AssistantTaskContext BeginProcessingOAB(AssistantTaskContext assistantTaskContext) { OABGeneratorTaskContext oabgeneratorTaskContext = assistantTaskContext as OABGeneratorTaskContext; AssistantStep assistantStep = null; OABLogger.LogRecord(TraceType.FunctionTrace, "OABGeneratorAssistant.BeginProcessingOAB: start", new object[0]); OABGeneratorMailboxData oabgeneratorMailboxData = (OABGeneratorMailboxData)oabgeneratorTaskContext.Args.MailboxData; try { lock (this.currentOABsInProcessing) { if (this.currentOABsInProcessing.Contains(oabgeneratorTaskContext.CurrentOAB.Id.ObjectGuid)) { OABGeneratorAssistant.Tracer.TraceDebug <ADObjectId>((long)this.GetHashCode(), "OABGeneratorAssistant.BeginProcessingOAB: ignoring on-demand request requested OAB is already in processing: {0}.", oabgeneratorTaskContext.CurrentOAB.Id); return(null); } this.currentOABsInProcessing.Add(oabgeneratorTaskContext.CurrentOAB.Id.ObjectGuid); } OABGeneratorTaskContext oabgeneratorTaskContext2 = oabgeneratorTaskContext; oabgeneratorTaskContext2.Cleanup = (Action <OABGeneratorTaskContext>)Delegate.Combine(oabgeneratorTaskContext2.Cleanup, new Action <OABGeneratorTaskContext>(this.RemoveCurrentOABFromInProcessingList)); oabgeneratorTaskContext.OABGenerator = new OABGenerator(oabgeneratorTaskContext.PerOrgAdSystemConfigSession, oabgeneratorTaskContext.CurrentOAB, oabgeneratorMailboxData.MailboxSid, oabgeneratorMailboxData.MailboxDomain, new Action(this.AbortProcessingOnShutdown)); OABLogger.LogEvent(InfoWorkerEventLogConstants.Tuple_OABGenerationStartGeneration, new object[] { oabgeneratorTaskContext.CurrentOAB, oabgeneratorTaskContext.CurrentOAB.DistinguishedName, oabgeneratorTaskContext.CurrentOAB.Id.ObjectGuid }); oabgeneratorTaskContext.OABGenerator.Initialize(); oabgeneratorTaskContext.ReturnStep.Push(new AssistantStep(this.FinishProcessingOAB)); assistantStep = new AssistantStep(oabgeneratorTaskContext.OABGenerator.PrepareFilesForOABGeneration); } finally { OABLogger.LogRecord(TraceType.FunctionTrace, "OABGeneratorAssistant.BeginProcessingOAB: finish", new object[0]); if (assistantStep != null) { oabgeneratorTaskContext.OABStep = assistantStep; } } return(OABGeneratorTaskContext.FromOABGeneratorTaskContext(oabgeneratorTaskContext)); }
// Token: 0x06001338 RID: 4920 RVA: 0x0006FD1C File Offset: 0x0006DF1C public AssistantTaskContext ProduceSortedFlatFile(AssistantTaskContext assistantTaskContext) { OABGeneratorTaskContext oabgeneratorTaskContext = assistantTaskContext as OABGeneratorTaskContext; AssistantStep oabstep = oabgeneratorTaskContext.ReturnStep.Pop(); OABLogger.LogRecord(TraceType.FunctionTrace, "AddressListFileGenerator.ProduceSortedFlatFile: start", new object[0]); try { using (new StopwatchPerformanceTracker("Total", this.stats)) { using (new CpuPerformanceTracker("Total", this.stats)) { using (new StopwatchPerformanceTracker("ProduceSortedFlatFile", this.stats)) { using (new CpuPerformanceTracker("ProduceSortedFlatFile", this.stats)) { this.stats.DomainControllersUsed.Add(this.adAddressListEnumerator.LastUsedDc); this.uncompressedSortedFlatFile = this.fileSet.Create("OAB"); if (this.allResultsInSinglePage) { this.CreateFlatFileFromSinglePageOfResults(this.uncompressedSortedFlatFile, this.sortedEntries); } else { this.CreateFlatFileFromMultiplePagesOfResults(this.uncompressedSortedFlatFile, this.tempFiles); } } } } } } finally { OABLogger.LogRecord(TraceType.FunctionTrace, "AddressListFileGenerator.ProduceSortedFlatFile: finish", new object[0]); oabgeneratorTaskContext.OABStep = oabstep; } return(OABGeneratorTaskContext.FromOABGeneratorTaskContext(oabgeneratorTaskContext)); }
// Token: 0x0600118E RID: 4494 RVA: 0x000668D4 File Offset: 0x00064AD4 public override AssistantTaskContext InitialStep(AssistantTaskContext context) { DateTime utcNow = DateTime.UtcNow; DateTime? dateTime = null; DateTime? dateTime2 = null; DateTime? dateTime3 = null; DateTime? dateTime4 = null; Guid guid = Guid.Empty; AssistantTaskContext result; try { this.ValidateContext(context); guid = context.Args.StoreSession.MailboxGuid; ExDateTime?valueOrDefault = context.Args.StoreSession.Mailbox.GetValueOrDefault <ExDateTime?>(MailboxSchema.InferenceTrainingLastAttemptTimestamp, null); if (valueOrDefault != null) { dateTime = new DateTime?(valueOrDefault.Value.UniversalTime); } valueOrDefault = context.Args.StoreSession.Mailbox.GetValueOrDefault <ExDateTime?>(MailboxSchema.InferenceTrainingLastSuccessTimestamp, null); if (valueOrDefault != null) { dateTime2 = new DateTime?(valueOrDefault.Value.UniversalTime); } valueOrDefault = context.Args.StoreSession.Mailbox.GetValueOrDefault <ExDateTime?>(MailboxSchema.InferenceTruthLoggingLastAttemptTimestamp, null); if (valueOrDefault != null) { dateTime3 = new DateTime?(valueOrDefault.Value.UniversalTime); } valueOrDefault = context.Args.StoreSession.Mailbox.GetValueOrDefault <ExDateTime?>(MailboxSchema.InferenceTruthLoggingLastSuccessTimestamp, null); if (valueOrDefault != null) { dateTime4 = new DateTime?(valueOrDefault.Value.UniversalTime); } MailboxSession mailboxSession = context.Args.StoreSession as MailboxSession; if (mailboxSession == null) { string text = "Reason=NonMailboxSession"; this.trainingStatusLogger.LogStatus(guid, 4, new DateTime?(utcNow), dateTime, dateTime2, text); this.truthLabelsStatusLogger.LogStatus(mailboxSession.MailboxGuid, 4, new DateTime?(utcNow), dateTime3, dateTime4, text); this.groupingModelTrainingStatusLogger.LogStatus(guid, 4, text); result = null; } else if (mailboxSession.MailboxOwner.RecipientTypeDetails != RecipientTypeDetails.UserMailbox && mailboxSession.MailboxOwner.RecipientTypeDetails != RecipientTypeDetails.LinkedMailbox) { string text2 = string.Format("Reason=NonUserMailbox#Name={0}#Type={1}", mailboxSession.MailboxOwner.MailboxInfo.DisplayName, mailboxSession.MailboxOwner.RecipientTypeDetails.ToString()); this.trainingStatusLogger.LogStatus(mailboxSession.MailboxGuid, 4, new DateTime?(utcNow), dateTime, dateTime2, text2); this.truthLabelsStatusLogger.LogStatus(mailboxSession.MailboxGuid, 4, new DateTime?(utcNow), dateTime3, dateTime4, text2); this.groupingModelTrainingStatusLogger.LogStatus(mailboxSession.MailboxGuid, 4, text2); result = null; } else { VariantConfigurationSnapshot flightFeatures = FlightModule.GetFlightFeatures(mailboxSession); Exception ex; OrganizationContext organizationInformation = this.orgContentExtractor.GetOrganizationInformation(mailboxSession.MailboxOwner, new ADRecipientInfo.TraceDelegate(this.DiagnosticsSession.TraceDebug), new ADRecipientInfo.TraceDelegate(this.DiagnosticsSession.TraceError), ref ex); FolderDataSelectionConfig.RefreshSettings(); List <Exception> list = new List <Exception>(); if (ex != null) { list.Add(ex); } OutlookActivityManager.SafeProcess(mailboxSession); ActivityHistory activityHistory = new ActivityHistory(mailboxSession, utcNow); ModelVersionSelector modelVersionSelector = InferenceXsoUtil.CreateModelVersionSelector(ServerModelConfigurationWrapper.CurrentWrapper, mailboxSession, delegate(string str) { this.DiagnosticsSession.TraceDebug(str, new object[0]); }); result = new InferenceTrainingTaskContext(context.MailboxData, context.Job, new AssistantStep(this.TrainStep), new MailboxTrainingState(modelVersionSelector, organizationInformation, activityHistory, utcNow, dateTime, dateTime2, flightFeatures, list), new MailboxTruthLoggingState(utcNow, dateTime3, dateTime4, activityHistory)); } } catch (Exception ex2) { string text3 = string.Format("Reason=InitialStepFailed#Exception={0}", InferenceCommonUtility.StringizeException(ex2)); this.trainingStatusLogger.LogStatus(guid, 3, new DateTime?(utcNow), dateTime, dateTime2, text3); this.truthLabelsStatusLogger.LogStatus(guid, 3, new DateTime?(utcNow), dateTime3, dateTime4, text3); this.groupingModelTrainingStatusLogger.LogStatus(guid, 3, text3); throw; } return(result); }
// Token: 0x06001193 RID: 4499 RVA: 0x00067300 File Offset: 0x00065500 private void ValidateContext(AssistantTaskContext context) { this.ValidateContext(context, null); }
// Token: 0x060000E1 RID: 225 RVA: 0x00005763 File Offset: 0x00003963 public virtual AssistantTaskContext InitialStep(AssistantTaskContext context) { this.Invoke(context.Args, context.CustomDataToLog); return(null); }
// Token: 0x06001337 RID: 4919 RVA: 0x0006F84C File Offset: 0x0006DA4C public AssistantTaskContext ProcessOnePageOfADResults(AssistantTaskContext assistantTaskContext) { OABGeneratorTaskContext oabgeneratorTaskContext = assistantTaskContext as OABGeneratorTaskContext; AssistantStep oabstep = new AssistantStep(this.ProduceSortedFlatFile); OABLogger.LogRecord(TraceType.FunctionTrace, "AddressListFileGenerator.ProcessOnePageOfADResults: start", new object[0]); try { using (new StopwatchPerformanceTracker("Total", this.stats)) { using (new CpuPerformanceTracker("Total", this.stats)) { using (new StopwatchPerformanceTracker("ProcessOnePageOfADResults", this.stats)) { using (new CpuPerformanceTracker("ProcessOnePageOfADResults", this.stats)) { if (this.adAddressListEnumerator.RetrievedAllData == null || !this.adAddressListEnumerator.RetrievedAllData.Value) { this.sortedEntries = this.adAddressListEnumerator.GetNextPageSorted(); this.allResultsInSinglePage = (this.firstPage && this.adAddressListEnumerator.RetrievedAllData != null && this.adAddressListEnumerator.RetrievedAllData.Value); this.firstPage = false; if (!this.allResultsInSinglePage) { using (new StopwatchPerformanceTracker("ProcessOnePageOfADResults.ResolveLinks", this.stats)) { using (new CpuPerformanceTracker("ProcessOnePageOfADResults.ResolveLinks", this.stats)) { using (new ADPerformanceTracker("ProcessOnePageOfADResults.ResolveLinks", this.stats)) { using (new ActiveManagerPerformanceTracker("ProcessOnePageOfADResults.ResolveLinks", this.stats)) { this.propertyManager.ResolveLinks(this.sortedEntries); } } } } FileStream fileStream = this.fileSet.Create("TMP"); this.tempFiles.Add(fileStream); this.stats.TotalNumberOfTempFiles++; using (new StopwatchPerformanceTracker("ProcessOnePageOfADResults.WriteTempFiles", this.stats)) { using (new CpuPerformanceTracker("ProcessOnePageOfADResults.WriteTempFiles", this.stats)) { using (IOCostStream iocostStream = new IOCostStream(new NoCloseStream(fileStream))) { using (new FileSystemPerformanceTracker("ProcessOnePageOfADResults.WriteTempFiles", iocostStream, this.stats)) { using (BinaryWriter binaryWriter = new BinaryWriter(iocostStream)) { foreach (ADRawEntry adrawEntry in this.sortedEntries) { this.abortProcessingOnShutdown(); OABFileRecord oabfileRecord = this.CreateDetailsRecord(adrawEntry); binaryWriter.Write(((Guid)adrawEntry[ADObjectSchema.ExchangeObjectId]).ToByteArray()); oabfileRecord.WriteTo(binaryWriter); } this.stats.IODuration += iocostStream.Writing; } } } } } } } if (this.adAddressListEnumerator.RetrievedAllData == null || !this.adAddressListEnumerator.RetrievedAllData.Value) { oabstep = new AssistantStep(this.ProcessOnePageOfADResults); } } } } } } finally { OABLogger.LogRecord(TraceType.FunctionTrace, "AddressListFileGenerator.ProcessOnePageOfADResults: finish", new object[0]); oabgeneratorTaskContext.OABStep = oabstep; } return(OABGeneratorTaskContext.FromOABGeneratorTaskContext(oabgeneratorTaskContext)); }
// Token: 0x060015A1 RID: 5537 RVA: 0x0007A7FA File Offset: 0x000789FA public override AssistantTaskContext InitialStep(AssistantTaskContext context) { this.TraceDebugExecuting(ExTraceGlobals.ProbeTimeBasedAssistantTracer.IsTraceEnabled(TraceType.DebugTrace) ? MethodBase.GetCurrentMethod().Name : string.Empty); return(base.InitialStep(context)); }
// Token: 0x0600145A RID: 5210 RVA: 0x0007583C File Offset: 0x00073A3C private AssistantTaskContext CollectionStep(AssistantTaskContext context) { this.tracer.TraceFunction((long)this.GetHashCode(), "InferenceDataCollectionAssistant.CollectionStep"); ExAssert.RetailAssert(context != null, "Collection step invoked with a null task context"); StoreSession storeSession = context.Args.StoreSession; InferenceDataCollectionTaskContext inferenceDataCollectionTaskContext = context as InferenceDataCollectionTaskContext; ExAssert.RetailAssert(inferenceDataCollectionTaskContext != null, "Collection step invoked with an invalid task context. {0}", new object[] { context.GetType().FullName }); this.diagnosticLogger.LogInformation("Starting collection task. CollectionGuid={0}, Init={1}, Watermark={2}, MailboxGuid={3}, Name={4}", new object[] { inferenceDataCollectionTaskContext.MailboxProcessingState.CollectionGuid, inferenceDataCollectionTaskContext.MailboxProcessingState.IsInitialized, (inferenceDataCollectionTaskContext.MailboxProcessingState.Watermark == null) ? "None" : inferenceDataCollectionTaskContext.MailboxProcessingState.Watermark.DocumentId.ToString(), storeSession.MailboxGuid, storeSession.MailboxOwner.MailboxInfo.DisplayName }); Exception exception = null; MailboxProcessor.ProcessingResult processingResult; try { MailboxProcessor mailboxProcessor = new MailboxProcessor(this.collectionContext, storeSession, inferenceDataCollectionTaskContext.MailboxProcessingState); processingResult = mailboxProcessor.Process(); } catch (NonUniqueRecipientException ex) { processingResult = 1; exception = ex; } AssistantTaskContext result; if (processingResult == 2) { this.diagnosticLogger.LogInformation("Yielding collection task. CollectionGuid={0}, Init={1}, Watermark={2}, MailboxGuid={3}, Name={4}", new object[] { inferenceDataCollectionTaskContext.MailboxProcessingState.CollectionGuid, inferenceDataCollectionTaskContext.MailboxProcessingState.IsInitialized, (inferenceDataCollectionTaskContext.MailboxProcessingState.Watermark == null) ? "None" : inferenceDataCollectionTaskContext.MailboxProcessingState.Watermark.DocumentId.ToString(), storeSession.MailboxGuid, storeSession.MailboxOwner.MailboxInfo.DisplayName }); result = new InferenceDataCollectionTaskContext(context.MailboxData, context.Job, new AssistantStep(this.CollectionStep), inferenceDataCollectionTaskContext.MailboxProcessingState); } else { storeSession.Mailbox[MailboxSchema.InferenceDataCollectionProcessingState] = new byte[] { 1 }; storeSession.Mailbox.Save(); if (processingResult == 1) { this.diagnosticLogger.LogError("Failed collection task. CollectionGuid={0}, Init={1}, Watermark={2}, MailboxGuid={3}, Name={4}, Exception={5}", new object[] { inferenceDataCollectionTaskContext.MailboxProcessingState.CollectionGuid, inferenceDataCollectionTaskContext.MailboxProcessingState.IsInitialized, (inferenceDataCollectionTaskContext.MailboxProcessingState.Watermark == null) ? "None" : inferenceDataCollectionTaskContext.MailboxProcessingState.Watermark.DocumentId.ToString(), storeSession.MailboxGuid, storeSession.MailboxOwner.MailboxInfo.DisplayName, Util.StringizeException(exception) }); } else { this.diagnosticLogger.LogInformation("Finished collection task. CollectionGuid={0}, Init={1}, Watermark={2}, MailboxGuid={3}, Name={4}", new object[] { inferenceDataCollectionTaskContext.MailboxProcessingState.CollectionGuid, inferenceDataCollectionTaskContext.MailboxProcessingState.IsInitialized, (inferenceDataCollectionTaskContext.MailboxProcessingState.Watermark == null) ? "None" : inferenceDataCollectionTaskContext.MailboxProcessingState.Watermark.DocumentId.ToString(), storeSession.MailboxGuid, storeSession.MailboxOwner.MailboxInfo.DisplayName }); } result = null; } InferenceDataCollectionAssistant.PostInferenceDataCollectionProgressNotification(storeSession.MailboxGuid, processingResult.ToString()); if (processingResult == null) { InferenceDataCollectionAssistant.PostInferenceDataCollectionSuccessNotification(storeSession.MailboxGuid); } return(result); }
// Token: 0x0600124B RID: 4683 RVA: 0x00069084 File Offset: 0x00067284 public AssistantTaskContext InitializeOABGeneration(AssistantTaskContext assistantTaskContext) { OABGeneratorTaskContext oabgeneratorTaskContext = assistantTaskContext as OABGeneratorTaskContext; AssistantStep oabstep = new AssistantStep(this.BeginProcessingOAB); OABLogger.LogRecord(TraceType.FunctionTrace, "OABGeneratorAssistant.InitialStep: start", new object[0]); OABGeneratorMailboxData oabgeneratorMailboxData = (OABGeneratorMailboxData)oabgeneratorTaskContext.Args.MailboxData; try { OrganizationId organizationId = oabgeneratorMailboxData.OrganizationId; if (organizationId == null) { throw new ArgumentException("unable to determine organization Id"); } oabgeneratorTaskContext.PerOrgAdSystemConfigSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(false, ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(organizationId), 502, "InitializeOABGeneration", "f:\\15.00.1497\\sources\\dev\\MailboxAssistants\\src\\assistants\\OABGenerator\\OABGeneratorAssistant.cs"); if (oabgeneratorMailboxData.OfflineAddressBook == Guid.Empty) { OABLogger.LogRecord(TraceType.InfoTrace, "OABGenerator invoked for scheduled generation of OABs for Org '{0}' on DatabaseGuid={1}", new object[] { organizationId, oabgeneratorTaskContext.Args.MailboxData.DatabaseGuid }); oabgeneratorTaskContext.OABsToGenerate = this.GetOABsFromAD(oabgeneratorTaskContext, Guid.Empty); } else { OABLogger.LogRecord(TraceType.InfoTrace, "OABGenerator invoked {0} for on-demand generation of OAB {1} for Org {2} DatabaseGuid={3}, MailboxGuid={4}", new object[] { oabgeneratorMailboxData.JobDescription, oabgeneratorMailboxData.OfflineAddressBook, organizationId, oabgeneratorTaskContext.Args.MailboxData.DatabaseGuid, oabgeneratorMailboxData.MailboxGuid }); oabgeneratorTaskContext.OABsToGenerate = this.GetOABsFromAD(oabgeneratorTaskContext, oabgeneratorMailboxData.OfflineAddressBook); if (oabgeneratorTaskContext.OABsToGenerate == null || oabgeneratorTaskContext.OABsToGenerate.Count != 1) { OABLogger.LogEvent(InfoWorkerEventLogConstants.Tuple_CannotFindOAB, new object[] { oabgeneratorMailboxData.OfflineAddressBook }); } } if (oabgeneratorTaskContext.OABsToGenerate == null || oabgeneratorTaskContext.OABsToGenerate.Count == 0) { OABLogger.LogRecord(TraceType.InfoTrace, "InvokeInternal. No OABs found to generate for DatabaseGuid={0}, MailboxGuid={1}", new object[] { oabgeneratorMailboxData.DatabaseGuid, oabgeneratorMailboxData.MailboxGuid.ToString(), oabgeneratorMailboxData.Guid }); if (oabgeneratorTaskContext.Cleanup != null) { oabgeneratorTaskContext.Cleanup(oabgeneratorTaskContext); } return(null); } OABLogger.LogRecord(TraceType.InfoTrace, "Found {0} OAB(s) to generate", new object[] { oabgeneratorTaskContext.OABsToGenerate.Count }); oabgeneratorTaskContext.CurrentOAB = oabgeneratorTaskContext.OABsToGenerate.Dequeue(); } finally { OABLogger.LogRecord(TraceType.FunctionTrace, "OABGeneratorAssistant.InitialStep: finish", new object[0]); oabgeneratorTaskContext.OABStep = oabstep; } return(OABGeneratorTaskContext.FromOABGeneratorTaskContext(oabgeneratorTaskContext)); }
// Token: 0x0600101C RID: 4124 RVA: 0x0005E0C8 File Offset: 0x0005C2C8 public override AssistantTaskContext InitialStep(AssistantTaskContext context) { Utilities.DebugTrace(DirectoryProcessorAssistant.Tracer, "Entering DirectoryProcessorAssistant.InitialStep", new object[0]); DirectoryProcessorMailboxData directoryProcessorMailboxData = context.MailboxData as DirectoryProcessorMailboxData; AssistantTaskContext result; try { Queue <TaskQueueItem> queue = new Queue <TaskQueueItem>(); RunData runData = this.CreateRunData(directoryProcessorMailboxData); GrammarGenerator.CleanUpOldGrammarRuns(runData, DirectoryProcessorAssistant.Tracer); UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_DirectoryProcessorStarted, null, new object[] { runData.TenantId, runData.MailboxGuid, runData.RunId }); List <DirectoryProcessorBaseTask> generators = this.GetGenerators(runData); List <DirectoryProcessorBaseTask> list = this.FilterGenerators(generators, runData, RecipientType.User); List <DirectoryProcessorBaseTask> list2 = this.FilterGenerators(generators, runData, RecipientType.Group); if (list.Count > 0) { queue.Enqueue(new TaskQueueItem(ADCrawler.Create(runData, RecipientType.User), RecipientType.User)); } foreach (DirectoryProcessorBaseTask task in list) { queue.Enqueue(new TaskQueueItem(task, RecipientType.User)); } if (list2.Count > 0) { queue.Enqueue(new TaskQueueItem(ADCrawler.Create(runData, RecipientType.Group), RecipientType.Group)); } foreach (DirectoryProcessorBaseTask task2 in list2) { queue.Enqueue(new TaskQueueItem(task2, RecipientType.Group)); } DirectoryProcessorBaseTaskContext directoryProcessorBaseTaskContext = new DirectoryProcessorBaseTaskContext(context.MailboxData, context.Job, queue, new AssistantStep(this.DoTask), TaskStatus.NoError, runData, new List <DirectoryProcessorBaseTask>()); result = directoryProcessorBaseTaskContext; } catch (Exception ex) { string tenantIdentifiableDN = RunData.GetTenantIdentifiableDN(directoryProcessorMailboxData.OrgId); Utilities.ErrorTrace(DirectoryProcessorAssistant.Tracer, "DirectoryProcessorAssistant.InitialStep, Exception='{0}' for '{1}' in database '{2}'", new object[] { ex, tenantIdentifiableDN, directoryProcessorMailboxData.DatabaseGuid }); UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_DirectoryProcessorInitialStepEncounteredException, null, new object[] { tenantIdentifiableDN, directoryProcessorMailboxData.DatabaseGuid, CommonUtil.ToEventLogString(ex) }); if (ex is IOException) { throw new SkipException(ex); } throw; } return(result); }
// Token: 0x0600101D RID: 4125 RVA: 0x0005E330 File Offset: 0x0005C530 public AssistantTaskContext DoTask(AssistantTaskContext context) { DirectoryProcessorBaseTaskContext directoryProcessorBaseTaskContext = context as DirectoryProcessorBaseTaskContext; ExAssert.RetailAssert(null != directoryProcessorBaseTaskContext, "Check InitialStep that it returns DirectoryProcessorBaseTaskContext. "); ExAssert.RetailAssert(null != directoryProcessorBaseTaskContext.TaskQueue, "Check InitialStep that it assigns TaskQueue to DirectoryProcessorBaseTaskContext. "); Utilities.DebugTrace(DirectoryProcessorAssistant.Tracer, "Entering DirectoryProcessorAssistant.DoTask. taskContext='{0}' taskQueue size='{1}'", new object[] { directoryProcessorBaseTaskContext.ClassName, directoryProcessorBaseTaskContext.TaskQueue.Count }); if (directoryProcessorBaseTaskContext.TaskQueue.Count > 0) { TaskQueueItem taskQueueItem = directoryProcessorBaseTaskContext.TaskQueue.Peek(); ExAssert.RetailAssert(null != taskQueueItem, "Should not have added null taskQueueItem into queue. Check enqueue logic. "); ExAssert.RetailAssert(null != taskQueueItem.Task, "Should not have added null task into queue. Check enqueue logic. "); ExAssert.RetailAssert(taskQueueItem.Task.RunData == directoryProcessorBaseTaskContext.RunData, "They should reference to same RunData object. Check DirectoryProcessorAssistant.InitialStep. "); AssistantTaskContext assistantTaskContext = null; try { Utilities.DebugTrace(DirectoryProcessorAssistant.Tracer, "DirectoryProcessorAssistant.DoTask calls Task.DoChunkWork Task='{0}' TaskRecipientType='{1}'", new object[] { taskQueueItem.Task.ClassName, taskQueueItem.TaskRecipientType.ToString() }); assistantTaskContext = taskQueueItem.Task.DoChunk(directoryProcessorBaseTaskContext, taskQueueItem.TaskRecipientType); } catch (Exception e) { this.LogException(taskQueueItem.Task.RunData, e, taskQueueItem.Task, directoryProcessorBaseTaskContext); if (taskQueueItem.Task.ShouldWatson(e)) { throw; } assistantTaskContext = null; } if (assistantTaskContext == null) { Utilities.DebugTrace(DirectoryProcessorAssistant.Tracer, "DirectoryProcessorAssistant.DoTask Task='{0}' TaskRecipientType='{1}' is done. ", new object[] { taskQueueItem.Task.ClassName, taskQueueItem.TaskRecipientType.ToString() }); if (taskQueueItem.Task.ShouldDeferFinalize) { if (!directoryProcessorBaseTaskContext.DeferredFinalizeTasks.Contains(taskQueueItem.Task)) { directoryProcessorBaseTaskContext.DeferredFinalizeTasks.Add(taskQueueItem.Task); Utilities.DebugTrace(DirectoryProcessorAssistant.Tracer, "Task {0} TaskRecipientType='{1}' is added to deferred finalize list. ", new object[] { taskQueueItem.Task.ClassName, taskQueueItem.TaskRecipientType.ToString() }); } } else { this.FinalizeTask(taskQueueItem.Task, directoryProcessorBaseTaskContext); } directoryProcessorBaseTaskContext.TaskQueue.Dequeue(); assistantTaskContext = new DirectoryProcessorBaseTaskContext(directoryProcessorBaseTaskContext.MailboxData, directoryProcessorBaseTaskContext.Job, directoryProcessorBaseTaskContext.TaskQueue, directoryProcessorBaseTaskContext.Step, directoryProcessorBaseTaskContext.TaskStatus, directoryProcessorBaseTaskContext.RunData, directoryProcessorBaseTaskContext.DeferredFinalizeTasks); } return(assistantTaskContext); } Utilities.DebugTrace(DirectoryProcessorAssistant.Tracer, "DirectoryProcessorAssistant has {0} deferred finalize tasks. Finalize them. ", new object[] { directoryProcessorBaseTaskContext.DeferredFinalizeTasks.Count }); foreach (DirectoryProcessorBaseTask task in directoryProcessorBaseTaskContext.DeferredFinalizeTasks) { this.FinalizeTask(task, directoryProcessorBaseTaskContext); } directoryProcessorBaseTaskContext.DeferredFinalizeTasks.Clear(); Utilities.DebugTrace(DirectoryProcessorAssistant.Tracer, "DirectoryProcessorAssistant has done all tasks. ", new object[0]); UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_DirectoryProcessorCompleted, null, new object[] { directoryProcessorBaseTaskContext.RunData.TenantId, directoryProcessorBaseTaskContext.RunData.MailboxGuid, directoryProcessorBaseTaskContext.RunData.RunId }); return(null); }