コード例 #1
0
        public async Task InvokeQuorumLossAsync(
            InvokeQuorumLossDescription invokeQuorumLossDescription,
            TimeSpan timeout,
            CancellationToken cancellationToken)
        {
            this.ThrowIfNotReady();

            TestabilityTrace.TraceSource.WriteInfo(
                TraceType,
                "{0} - Processing {1} PartitionSelector: {2}, QuorumLossMode: {3}, QuorumLossDurationDuration: {4}",
                invokeQuorumLossDescription.OperationId,
                ActionType.InvokeQuorumLoss,
                invokeQuorumLossDescription.PartitionSelector,
                invokeQuorumLossDescription.QuorumLossMode,
                invokeQuorumLossDescription.QuorumLossDuration);
            try
            {
                await this.MessageProcessor.ProcessQuorumLossCommandAsync(
                    invokeQuorumLossDescription.OperationId,
                    invokeQuorumLossDescription.PartitionSelector,
                    invokeQuorumLossDescription.QuorumLossMode,
                    invokeQuorumLossDescription.QuorumLossDuration,
                    timeout,
                    null).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                TestabilityTrace.TraceSource.WriteWarning(TraceType, "{0} - Exception occurred: {1}", invokeQuorumLossDescription.OperationId, e.Message);
                FaultAnalysisServiceUtility.ThrowTransientExceptionIfRetryable(e);

                throw;
            }

            TestabilityTrace.TraceSource.WriteInfo(TraceType, "{0} - Intent saved for {1}", invokeQuorumLossDescription.OperationId, ActionType.InvokeQuorumLoss);
        }
コード例 #2
0
        /// InvokeQuorumLoss
        NativeCommon.IFabricAsyncOperationContext NativeFaultAnalysisService.IFabricFaultAnalysisService.BeginStartPartitionQuorumLoss(IntPtr invokeQuorumLossDescription, uint timeoutInMilliseconds, NativeCommon.IFabricAsyncOperationCallback callback)
        {
            var      managedQuorumLossDescription = InvokeQuorumLossDescription.CreateFromNative(invokeQuorumLossDescription);
            TimeSpan managedTimeout = TimeSpan.FromMilliseconds(timeoutInMilliseconds);

            return(Utility.WrapNativeAsyncMethodImplementation(
                       (cancellationToken) =>
                       this.InvokeQuorumLossAsync(
                           managedQuorumLossDescription,
                           managedTimeout,
                           cancellationToken),
                       callback,
                       "FaultAnalysisServiceBroker.InvokeQuorumLossAsync",
                       ThreadErrorMessageSetter));
        }
コード例 #3
0
 private Task InvokeQuorumLossAsync(InvokeQuorumLossDescription quorumLossDescription, TimeSpan timeout, CancellationToken cancellationToken)
 {
     return(this.service.InvokeQuorumLossAsync(quorumLossDescription, timeout, cancellationToken));
 }