public void ReplayFilter_in_Warn_mode_should_warn_about_messages_from_several_old_writers() { var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.Warn, 100, 10, false)); EventFilter.Warning(start: "Invalid replayed event").Expect(3, () => { filter.Tell(_m1); var m2B = new ReplayedMessage(WithWriter(_m2.Persistent, WriterB)); filter.Tell(m2B); var m3C = new ReplayedMessage(WithWriter(_m3.Persistent, WriterC)); filter.Tell(m3C); filter.Tell(_m2); filter.Tell(_m3); var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB)); filter.Tell(m3B); var m4C = new ReplayedMessage(WithWriter(_m3.Persistent, WriterC)); filter.Tell(m4C); filter.Tell(_successMsg); ExpectMsg(_m1); ExpectMsg(m2B); ExpectMsg(m3C); ExpectMsg(_m2); ExpectMsg(_m3); ExpectMsg(m3B); ExpectMsg(m4C); ExpectMsg(_successMsg); }); }
protected bool IsReplayedMessage(ReplayedMessage message, long seqNr, bool isDeleted = false) { var p = message.Persistent; return p.IsDeleted == isDeleted && p.Payload.ToString() == "a-" + seqNr && p.PersistenceId == Pid && p.SequenceNr == seqNr; }
protected bool IsReplayedMessage(ReplayedMessage message, long seqNr, bool isDeleted = false) { var p = message.Persistent; return(p.IsDeleted == isDeleted && p.Payload.ToString() == "a-" + seqNr && p.PersistenceId == Pid && p.SequenceNr == seqNr); }
public void ReplayFilter_in_RepairByDiscardOld_mode_should_pass_on_all_replayed_messages_when_switching_writer() { var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.RepairByDiscardOld, 100, 10, false)); filter.Tell(_m1); filter.Tell(_m2); var m32 = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB)); filter.Tell(m32); filter.Tell(_successMsg); ExpectMsg(_m1); ExpectMsg(_m2); ExpectMsg(m32); ExpectMsg(_successMsg); }
private void OnReplayedMessage(ReplayedMessage replayed) { // no need to buffer live messages if subscription is not live or toOffset is exceeded if ((_isLive || !_isCaughtUp) && _currentOffset < _toOffset) { _buffer.Add(new EventEnvelope( new Sequence(replayed.Persistent.SequenceNr), _persistenceId, replayed.Persistent.SequenceNr, replayed.Persistent.Payload )); _currentOffset = replayed.Persistent.SequenceNr; } MaybeReply(); }
public void ReplayFilter_in_Fail_mode_should_fail_when_message_with_same_SequenceNo_from_old_overlapping_writer() { var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.Fail, 100, 10, false)); EventFilter.Error(start: "Invalid replayed event").ExpectOne(() => { filter.Tell(_m1); filter.Tell(_m2); filter.Tell(_m3); var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB)); filter.Tell(m3B); // same as SequenceNo as m3, but from WriterB filter.Tell(_successMsg); ExpectMsg <ReplayMessagesFailure>(m => m.Cause is IllegalStateException); }); }
public void ReplayFilter_in_RepairByDiscardOld_mode_should_discard_message_with_same_SequenceNo_from_old_overlapping_writer() { var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.RepairByDiscardOld, 100, 10, false)); EventFilter.Warning(start: "Invalid replayed event").ExpectOne(() => { filter.Tell(_m1); filter.Tell(_m2); filter.Tell(_m3); var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB)); filter.Tell(m3B); // same SequenceNo as m3, but from WriterB filter.Tell(_successMsg); ExpectMsg(_m1); ExpectMsg(_m2); ExpectMsg(m3B); // discard m3, because same SequenceNo from new writer ExpectMsg(_successMsg); }); }
public void ReplayFilter_in_RepairByDiscardOld_mode_should_discard_messages_from_old_writer_after_switching_writer() { var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.RepairByDiscardOld, 100, 10, false)); EventFilter.Warning(start: "Invalid replayed event").Expect(2, () => { filter.Tell(_m1); filter.Tell(_m2); var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB)); filter.Tell(m3B); filter.Tell(_m3); filter.Tell(_m4); filter.Tell(_successMsg); ExpectMsg(_m1); ExpectMsg(_m2); ExpectMsg(m3B); // discard m3, m4 ExpectMsg(_successMsg); }); }
public void ReplayFilter_in_Fail_mode_should_fail_when_messages_from_old_writer_after_switching_writer() { var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.Fail, 100, 10, false)); EventFilter.Error(start: "Invalid replayed event").ExpectOne(() => { filter.Tell(_m1); filter.Tell(_m2); var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB)); filter.Tell(m3B); filter.Tell(_m3); filter.Tell(_m4); filter.Tell(_successMsg); ExpectMsg<ReplayMessagesFailure>(m => m.Cause is IllegalStateException); }); }