public void Handle(StorageMessage.PrepareAck message) { if (Interlocked.Read(ref _complete) == 1 || _allPreparesWritten) { return; } NextTimeoutTime = DateTime.UtcNow + Timeout; if (message.Flags.HasAnyOf(PrepareFlags.TransactionBegin)) { TransactionId = message.LogPosition; } if (message.LogPosition > LastEventPosition) { LastEventPosition = message.LogPosition; } lock (_prepareLogPositions) { _prepareLogPositions.Add(message.LogPosition); _allPreparesWritten = _prepareLogPositions.Count == _prepareCount; } if (_allPreparesWritten) { AllPreparesWritten(); } _allEventsWritten = _commitReceived && _allPreparesWritten; if (_allEventsWritten) { AllEventsWritten(); } }
public void Handle(StorageMessage.PrepareAck message) { if (_completed) { return; } if ((message.Flags & PrepareFlags.TransactionBegin) != 0) { _transactionPos = message.LogPosition; } if ((message.Flags & PrepareFlags.TransactionEnd) != 0) { _awaitingPrepare -= 1; if (_awaitingPrepare == 0) { if (_transactionPos < 0) { throw new Exception("PreparePos is not assigned."); } Publisher.Publish(new StorageMessage.WriteCommit(message.CorrelationId, _publishEnvelope, _transactionPos)); _nextTimeoutTime = DateTime.UtcNow + CommitTimeout; } } }
public void Handle(StorageMessage.PrepareAck message) { if (_state == VNodeState.Slave) { Debug.Assert(_connection != null, "_connection == null"); SendTcpMessage(_connection, message); } }
public void Handle(StorageMessage.PrepareAck message) { if (_completed) { return; } _transactionId = message.LogPosition; CompleteSuccessRequest(); }
public void Handle(StorageMessage.PrepareAck message) { if (_completed) { return; } if (message.Flags.HasNoneOf(PrepareFlags.TransactionBegin)) { throw new Exception(string.Format("Unexpected PrepareAck with flags [{0}] arrived (LogPosition: {1}, InternalCorrId: {2:B}, ClientCorrId: {3:B}).", message.Flags, message.LogPosition, message.CorrelationId, _clientCorrId)); } _transactionId = message.LogPosition; CompleteSuccessRequest(); }
public void Handle(StorageMessage.PrepareAck message) { if (_completed) { return; } if (_transactionId == -1) { throw new Exception("TransactionId was not set, transactionId = -1."); } if (message.Flags.HasAnyOf(PrepareFlags.TransactionEnd)) { _awaitingPrepare -= 1; if (_awaitingPrepare == 0) { Publisher.Publish(new StorageMessage.WriteCommit(message.CorrelationId, PublishEnvelope, _transactionId)); _nextTimeoutTime = DateTime.UtcNow + CommitTimeout; } } }
public void Handle(StorageMessage.PrepareAck message) { if (_completed) { return; } if ((message.Flags & PrepareFlags.TransactionBegin) != 0) { _preparePos = message.LogPosition; } if ((message.Flags & PrepareFlags.TransactionEnd) != 0) { _awaitingPrepare -= 1; if (_awaitingPrepare == 0) { Publisher.Publish(new StorageMessage.WriteCommit(message.CorrelationId, _publishEnvelope, _preparePos)); Publisher.Publish(TimerMessage.Schedule.Create(Timeouts.CommitTimeout, _publishEnvelope, new StorageMessage.CommitPhaseTimeout(_correlationId))); } } }
private TcpPackage WrapPrepareAck(StorageMessage.PrepareAck msg) { var dto = new ReplicationMessageDto.PrepareAck(msg.LogPosition, (byte)msg.Flags); return(new TcpPackage(TcpCommand.PrepareAck, msg.CorrelationId, dto.Serialize())); }
public void Handle(StorageMessage.PrepareAck message) { DispatchInternal(message.CorrelationId, message); }