internal static PartitionRestartProgress CreateFromNative(NativeClient.IFabricPartitionRestartProgressResult nativeResult) { if (nativeResult == null) { return(null); } var progress = PartitionRestartProgress.FromNative(nativeResult.get_Progress()); GC.KeepAlive(nativeResult); return(progress); }
/// <summary> /// Serializes the object to JSON. /// </summary> /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param> /// <param name="obj">The object to serialize to JSON.</param> internal static void Serialize(JsonWriter writer, PartitionRestartProgress obj) { // Required properties are always serialized, optional properties are serialized when not null. writer.WriteStartObject(); writer.WriteProperty(obj.State, "State", OperationStateConverter.Serialize); if (obj.RestartPartitionResult != null) { writer.WriteProperty(obj.RestartPartitionResult, "RestartPartitionResult", RestartPartitionResultConverter.Serialize); } writer.WriteEndObject(); }
public async Task <PartitionRestartProgress> GetRestartPartitionProgressAsync( Guid operationId, TimeSpan timeout, CancellationToken cancellationToken) { this.ThrowIfNotReady(); PartitionRestartProgress progress = null; try { TestabilityTrace.TraceSource.WriteInfo(TraceType, "GetRestartPartitionProgressAsync calling message processor"); ActionStateBase actionState = await this.MessageProcessor.ProcessGetProgressAsync(operationId, timeout, cancellationToken); StepStateNames stateName = actionState.StateProgress.Peek(); TestCommandProgressState state = FaultAnalysisServiceUtility.ConvertState(actionState, TraceType); RestartPartitionState restartPartitionState = actionState as RestartPartitionState; TestabilityTrace.TraceSource.WriteInfo( TraceType, "RestartPartition - serviceName={0}, partitionId={1}", restartPartitionState.Info.PartitionSelector.ServiceName.ToString(), restartPartitionState.Info.PartitionId); var selectedPartition = new SelectedPartition { ServiceName = restartPartitionState.Info.PartitionSelector.ServiceName, PartitionId = restartPartitionState.Info.PartitionId }; PartitionRestartResult result = new PartitionRestartResult(selectedPartition, actionState.ErrorCausingRollback); progress = new PartitionRestartProgress(state, result); TestabilityTrace.TraceSource.WriteInfo( TraceType, "{0} - {1} progress - {2}, Exception - {3}", operationId, ActionType.RestartPartition, progress.Result != null ? progress.Result.SelectedPartition.ToString() : FASConstants.UnavailableMessage, (progress.Result != null && progress.Result.Exception != null) ? progress.Result.Exception.ToString() : FASConstants.UnavailableMessage); } catch (Exception e) { TestabilityTrace.TraceSource.WriteWarning(TraceType, "{0} - Caught {1}", operationId, e.ToString()); FaultAnalysisServiceUtility.ThrowTransientExceptionIfRetryable(e); throw; } return(progress); }