private static void ThrowIfQuorumLossModeInvalid(QuorumLossMode quorumLossMode)
 {
     if (quorumLossMode == QuorumLossMode.Invalid)
     {
         throw FaultAnalysisServiceUtility.CreateException(TraceType, Interop.NativeTypes.FABRIC_ERROR_CODE.E_INVALIDARG, Strings.StringResources.Error_UnsupportedQuorumLossMode);
     }
 }
Ejemplo n.º 2
0
        public override void ClearInfo()
        {
            PartitionSelector ps       = this.Info.PartitionSelector;
            QuorumLossMode    mode     = this.Info.QuorumLossMode;
            TimeSpan          duration = this.Info.QuorumLossDuration;

            this.Info = new InvokeQuorumLossInfo(ps, mode, duration);
        }
Ejemplo n.º 3
0
        public InvokeQuorumLossInfo(PartitionSelector partitionSelector, QuorumLossMode quorumLossMode, TimeSpan quorumLossDuration)
        {
            this.PartitionSelector  = partitionSelector;
            this.QuorumLossMode     = quorumLossMode;
            this.QuorumLossDuration = quorumLossDuration;

            this.NodesApplied = new List <string>();
            this.ReplicaIds   = new List <long>();

            this.UnreliableTransportInfo = new List <Tuple <string, string> >();
        }
 public InvokeQuorumLossDescription(
     Guid operationId,
     PartitionSelector partitionSelector,
     QuorumLossMode quorumLossMode,
     TimeSpan quorumLossDuration)
 {
     Requires.Argument <Guid>("operationId", operationId).NotNull();
     this.OperationId        = operationId;
     this.PartitionSelector  = partitionSelector;
     this.QuorumLossMode     = quorumLossMode;
     this.QuorumLossDuration = quorumLossDuration;
 }
        public StartPartitionQuorumLossRequest(IFabricClient fabricClient, Guid operationId, PartitionSelector partitionSelector, QuorumLossMode quorumLossMode, TimeSpan quorumLossDuration, TimeSpan timeout, bool expectError)
            : base(fabricClient, timeout)
        {
            this.OperationId        = operationId;
            this.PartitionSelector  = partitionSelector;
            this.QuorumLossMode     = quorumLossMode;
            this.QuorumLossDuration = quorumLossDuration;

            this.RetryErrorCodes.Add((uint)NativeTypes.FABRIC_ERROR_CODE.FABRIC_E_NOT_READY);
            this.RetryErrorCodes.Add((uint)NativeTypes.FABRIC_ERROR_CODE.FABRIC_E_RECONFIGURATION_PENDING);

            this.SucceedErrorCodes.Add((uint)NativeTypes.FABRIC_ERROR_CODE.FABRIC_E_TEST_COMMAND_OPERATION_ID_ALREADY_EXISTS);

            if (expectError)
            {
                this.SucceedErrorCodes.Clear();
                this.SucceedErrorCodes.Add((uint)NativeTypes.FABRIC_ERROR_CODE.FABRIC_E_TEST_COMMAND_OPERATION_ID_ALREADY_EXISTS);
            }
        }
 public StartPartitionQuorumLossRequest(IFabricClient fabricClient, Guid operationId, PartitionSelector partitionSelector, QuorumLossMode quorumLossMode, TimeSpan quorumLossDuration, TimeSpan timeout)
     : this(fabricClient, operationId, partitionSelector, quorumLossMode, quorumLossDuration, timeout, false)
 {
 }
Ejemplo n.º 7
0
 public LookingUpState(FabricClient fabricClient, InvokeQuorumLossState state, TimeSpan requestTimeout, TimeSpan operationTimeout, PartitionSelector partitionSelector, QuorumLossMode quorumLossMode)
     : base(fabricClient, state, requestTimeout, operationTimeout)
 {
     this.partitionSelector = partitionSelector;
     this.quorumLossMode    = quorumLossMode;
 }
Ejemplo n.º 8
0
 public InvokeQuorumLossAction(PartitionSelector partitionSelector, QuorumLossMode QuorumLossMode, TimeSpan QuorumLossDuration)
 {
     this.PartitionSelector  = partitionSelector;
     this.QuorumLossMode     = QuorumLossMode;
     this.QuorumLossDuration = QuorumLossDuration;
 }
Ejemplo n.º 9
0
        public InvokeQuorumLossAction(IReliableStateManager stateManager, IStatefulServicePartition partition, InvokeQuorumLossState state, PartitionSelector partitionSelector, QuorumLossMode quorumLossMode, TimeSpan quorumLossDuration, TimeSpan requestTimeout, TimeSpan operationTimeout)
            : base(stateManager, partition, state, requestTimeout, operationTimeout)
        {
            ThrowIf.Null(partitionSelector, "partitionSelector");

            this.PartitionSelector  = partitionSelector;
            this.QuorumLossMode     = quorumLossMode;
            this.QuorumLossDuration = quorumLossDuration;
        }
Ejemplo n.º 10
0
 public InvokeQuorumLossState(Guid operationId, ServiceInternalFaultInfo serviceInternalFaultInfo, PartitionSelector partitionSelector, QuorumLossMode quorumLossMode, TimeSpan quorumLossDuration)
     : base(operationId, ActionType.InvokeQuorumLoss, serviceInternalFaultInfo)
 {
     this.Info = new InvokeQuorumLossInfo(partitionSelector, quorumLossMode, quorumLossDuration);
 }
        // Use this method signature for now until the actual client interface is decided
        public async Task ProcessQuorumLossCommandAsync(Guid operationId, PartitionSelector partitionSelector, QuorumLossMode quorumLossMode, TimeSpan quorumLossDuration, TimeSpan timeout, ServiceInternalFaultInfo serviceInternalFaultInfo)
        {
            ThrowIfQuorumLossModeInvalid(quorumLossMode);

            InvokeQuorumLossState actionState = new InvokeQuorumLossState(operationId, serviceInternalFaultInfo, partitionSelector, quorumLossMode, quorumLossDuration);

            try
            {
                // After this call finishes the intent has been persisted
                await this.actionStore.InitializeNewActionAsync(actionState, timeout);

                this.Enqueue(actionState);
            }
            catch (Exception e)
            {
                TestabilityTrace.TraceSource.WriteWarning(TraceType, "{0} - Exception {1}", operationId, e);
                throw;
            }
        }
Ejemplo n.º 12
0
 public StartPartitionQuorumLossRestRequest(IFabricClient fabricClient, Guid operationId, Uri serviceName, Guid partitionId, QuorumLossMode quorumLossMode, TimeSpan quorumLossDuration, TimeSpan timeout)
     : this(fabricClient, operationId, serviceName, partitionId, quorumLossMode, quorumLossDuration, timeout, false)
 {
 }