internal void PopulateDiagnosticInfo(RequestStatisticsDiagnosticArgument arguments, string jobPickupFailureMessage)
        {
            RequestJobDiagnosticInfoXML requestJobDiagnosticInfoXML = new RequestJobDiagnosticInfoXML
            {
                PoisonCount      = base.PoisonCount,
                LastPickupTime   = (base.LastPickupTime ?? DateTime.MinValue),
                IsCanceled       = base.CancelRequest,
                RetryCount       = base.RetryCount,
                TotalRetryCount  = base.TotalRetryCount,
                DomainController = base.DomainControllerToUpdate,
                SkippedItems     = base.SkippedItemCounts,
                FailureHistory   = base.FailureHistory
            };

            if (base.TimeTracker != null)
            {
                requestJobDiagnosticInfoXML.DoNotPickUntil   = (base.TimeTracker.GetTimestamp(RequestJobTimestamp.DoNotPickUntil) ?? DateTime.MinValue);
                requestJobDiagnosticInfoXML.LastProgressTime = (base.TimeTracker.GetTimestamp(RequestJobTimestamp.LastProgressCheckpoint) ?? DateTime.MinValue);
                requestJobDiagnosticInfoXML.TimeTracker      = base.TimeTracker.GetDiagnosticInfo(arguments);
            }
            if (base.ProgressTracker != null)
            {
                requestJobDiagnosticInfoXML.ProgressTracker = base.ProgressTracker.GetDiagnosticInfo(arguments);
            }
            if (!string.IsNullOrEmpty(jobPickupFailureMessage))
            {
                requestJobDiagnosticInfoXML.JobPickupFailureMessage = jobPickupFailureMessage;
            }
            base.DiagnosticInfo = requestJobDiagnosticInfoXML.Serialize(true);
        }
Example #2
0
        internal RequestJobTimeTrackerXML GetDiagnosticInfo(RequestStatisticsDiagnosticArgument arguments)
        {
            bool showTimeSlots = arguments.HasArgument("showtimeslots");

            this.RefreshDurations();
            RequestJobTimeTrackerXML requestJobTimeTrackerXML = new RequestJobTimeTrackerXML();

            requestJobTimeTrackerXML.CurrentState             = this.CurrentState.ToString();
            requestJobTimeTrackerXML.LastStateChangeTimeStamp = this.stateChangeTimestamp.ToString("O");
            for (RequestJobTimestamp requestJobTimestamp = RequestJobTimestamp.None; requestJobTimestamp < RequestJobTimestamp.MaxTimestamp; requestJobTimestamp++)
            {
                DateTime?timestamp = this.GetTimestamp(requestJobTimestamp);
                if (timestamp != null)
                {
                    requestJobTimeTrackerXML.AddTimestamp(requestJobTimestamp, timestamp.Value);
                }
            }
            foreach (RequestJobStateNode treeRoot in RequestJobStateNode.RootStates)
            {
                RequestJobTimeTrackerXML.DurationRec durationRec = this.DumpDurationTreeForDiagnostics(treeRoot, showTimeSlots);
                if (durationRec != null && durationRec.Duration != TimeSpan.Zero.ToString())
                {
                    if (requestJobTimeTrackerXML.Durations == null)
                    {
                        requestJobTimeTrackerXML.Durations = new List <RequestJobTimeTrackerXML.DurationRec>();
                    }
                    requestJobTimeTrackerXML.Durations.Add(durationRec);
                }
            }
            return(requestJobTimeTrackerXML);
        }
        internal TransferProgressTrackerXML GetDiagnosticInfo(RequestStatisticsDiagnosticArgument arguments)
        {
            bool showTimeSlots = arguments.HasArgument("showtimeslots");

            return(new TransferProgressTrackerXML(this, showTimeSlots));
        }