/// <summary> /// Updates the statistics related to the task in the specified index. /// The stats relate to tasks that have been run on that index. /// </summary> /// <param name="index">Index to update.</param> public void UpdateTaskCompletedStatistics(IErrorIndex index) { if ((index != null) && (index.Status == ErrorIndexStatus.Created)) { StackHashTaskStatus taskStatus = index.GetTaskStatistics(this.TaskType); taskStatus.TaskState = StackHashTaskState.Completed; taskStatus.ServiceErrorCode = StackHashException.GetServiceErrorCode(this.LastException); if (this.LastException != null) { taskStatus.FailedCount++; taskStatus.LastFailedRunTimeUtc = taskStatus.LastStartedTimeUtc; taskStatus.LastException = this.LastException.ToString(); } else { taskStatus.SuccessCount++; taskStatus.LastSuccessfulRunTimeUtc = taskStatus.LastStartedTimeUtc; } taskStatus.LastDurationInSeconds = (int)(DateTime.Now.ToUniversalTime() - taskStatus.LastStartedTimeUtc).TotalSeconds; taskStatus.TaskState = StackHashTaskState.Completed; index.SetTaskStatistics(taskStatus); } }
public void ProvideFault(Exception error, System.ServiceModel.Channels.MessageVersion version, ref System.ServiceModel.Channels.Message fault) { if (m_ReentrancyCheck) { return; } m_ReentrancyCheck = true; try { if ((fault == null) && (error != null)) { ReceiverFaultDetail receiverFaultDetail = new ReceiverFaultDetail( error.Message, getDescription(error), StackHashException.GetServiceErrorCode(error)); FaultException <ReceiverFaultDetail> fe = new FaultException <ReceiverFaultDetail>( receiverFaultDetail, error.Message, FaultCode.CreateReceiverFaultCode(new FaultCode("ReceiverFault"))); MessageFault mf = fe.CreateMessageFault(); fault = Message.CreateMessage(version, mf, fe.Action); try { DiagnosticsHelper.LogException(DiagSeverity.Warning, "Service exception occurred", error); } catch (System.Exception) { // Ignore the error. } } } finally { m_ReentrancyCheck = false; } }