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); } }
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); }
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) { }
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; }
public InvokeQuorumLossAction(PartitionSelector partitionSelector, QuorumLossMode QuorumLossMode, TimeSpan QuorumLossDuration) { this.PartitionSelector = partitionSelector; this.QuorumLossMode = QuorumLossMode; this.QuorumLossDuration = QuorumLossDuration; }
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; }
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; } }
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) { }