public void WriteTraceEvent(FabricAnalysisEvent analysisEvent) { var primaryMoveAnalysisEvent = analysisEvent as PrimaryMoveAnalysisEvent; if (primaryMoveAnalysisEvent != null) { FabricEvents.Events.PrimaryMoveAnalysisEvent( primaryMoveAnalysisEvent.InstanceId, primaryMoveAnalysisEvent.PartitionId, primaryMoveAnalysisEvent.PrimaryMoveCompleteTimeStamp, primaryMoveAnalysisEvent.Delay.TotalSeconds, primaryMoveAnalysisEvent.Duration.TotalSeconds, primaryMoveAnalysisEvent.PreviousNode, primaryMoveAnalysisEvent.CurrentNode, primaryMoveAnalysisEvent.Reason.ToString(), primaryMoveAnalysisEvent.CorrelatedEventString); // Write the 'Join' event which correlates the Reconfiguration completed Event with the why the primary moved analysis Event. FabricEvents.Events.CorrelationOperational( Guid.NewGuid(), primaryMoveAnalysisEvent.TriggerReconfigurationCompletedTraceRecord.EventInstanceId, primaryMoveAnalysisEvent.TriggerReconfigurationCompletedTraceRecord.GetType().Name, primaryMoveAnalysisEvent.InstanceId, primaryMoveAnalysisEvent.GetType().Name); } else { this.logger.LogError("Unknown analysisEventType : {0}.", analysisEvent.GetType()); } }
public Task ConsumeAsync(FabricAnalysisEvent analysisDetails, CancellationToken token) { if (analysisDetails == null) { throw new ArgumentNullException("analysisDetails"); } AnalysisEventTraceWriter.Instance.WriteTraceEvent(analysisDetails); return(Task.FromResult(true)); }
public AnalysisContainer(FabricAnalysisEvent analysisEvent, AgentIdentifier agentIdentifier, int maxAnalysisAttempts = DefaultAnalysisAttempts) { if (maxAnalysisAttempts <= 0 || maxAnalysisAttempts > MaxAnalysisAttempts) { throw new ArgumentOutOfRangeException( "maxAnalysisAttempts", string.Format(CultureInfo.InvariantCulture, "Maximum Analysis attempt count is : '{0}'", MaxAnalysisAttempts)); } Assert.IsNotNull(analysisEvent, "analysisEvent != null"); this.AnalysisEvent = analysisEvent; this.maxAttempts = maxAnalysisAttempts; this.analysisOutput = new StringBuilder(); this.rootCauseContainer = new RootCauseContainer(); this.fixContainer = new FixContainer(); this.relevantTraces = new List <TraceRecord>(); this.customContext = new Dictionary <string, string>(); this.Agent = agentIdentifier; }