Пример #1
0
        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());
            }
        }
Пример #2
0
        public Task ConsumeAsync(FabricAnalysisEvent analysisDetails, CancellationToken token)
        {
            if (analysisDetails == null)
            {
                throw new ArgumentNullException("analysisDetails");
            }

            AnalysisEventTraceWriter.Instance.WriteTraceEvent(analysisDetails);

            return(Task.FromResult(true));
        }
Пример #3
0
        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;
        }