public async Task RestartPartitionAsync(
            RestartPartitionDescription restartPartitionDescription,
            TimeSpan timeout,
            CancellationToken cancellationToken)
        {
            this.ThrowIfNotReady();

            TestabilityTrace.TraceSource.WriteInfo(
                TraceType,
                "{0} - Processing {1} PartitionSelector: {2}, Mode: {3}",
                restartPartitionDescription.OperationId,
                ActionType.RestartPartition,
                restartPartitionDescription.PartitionSelector,
                restartPartitionDescription.RestartPartitionMode);

            try
            {
                await this.MessageProcessor.ProcessRestartPartitionCommandAsync(
                    restartPartitionDescription.OperationId,
                    restartPartitionDescription.PartitionSelector,
                    restartPartitionDescription.RestartPartitionMode,
                    timeout,
                    null);
            }
            catch (Exception e)
            {
                TestabilityTrace.TraceSource.WriteWarning(TraceType, "{0} - Exception occurred: {1}", restartPartitionDescription.OperationId, e.Message);
                FaultAnalysisServiceUtility.ThrowTransientExceptionIfRetryable(e);

                throw;
            }

            TestabilityTrace.TraceSource.WriteInfo(TraceType, "{0} - Intent saved for {1}", restartPartitionDescription.OperationId, ActionType.RestartPartition);
        }
        public NativeCommon.IFabricAsyncOperationContext BeginStartPartitionRestart(IntPtr restartPartitionDescription, uint timeoutMilliseconds, NativeCommon.IFabricAsyncOperationCallback callback)
        {
            var managedRestartPartitionDescription = RestartPartitionDescription.CreateFromNative(restartPartitionDescription);

            TimeSpan managedTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

            return(Utility.WrapNativeAsyncMethodImplementation(
                       (cancellationToken) =>
                       this.RestartPartitionAsync(
                           managedRestartPartitionDescription,
                           managedTimeout,
                           cancellationToken),
                       callback,
                       "FaultAnalysisServiceBroker.BeginStartPartitionRestart",
                       ThreadErrorMessageSetter));
        }
 private Task RestartPartitionAsync(RestartPartitionDescription restartPartitionDescription, TimeSpan timeout, CancellationToken cancellationToken)
 {
     return(this.service.RestartPartitionAsync(restartPartitionDescription, timeout, cancellationToken));
 }