Skip to content

Commit

Permalink
close #3935 - Akka.Persistence.TCK.Query.TestActor now waits for dele…
Browse files Browse the repository at this point in the history
…te confirmation before replying (#3936)
  • Loading branch information
Aaronontheweb committed Nov 14, 2019
1 parent 537f818 commit 1b29a93
Showing 1 changed file with 27 additions and 2 deletions.
29 changes: 27 additions & 2 deletions src/core/Akka.Persistence.TCK/Query/TestActor.cs
Expand Up @@ -12,7 +12,7 @@

namespace Akka.Persistence.TCK.Query
{
internal class TestActor : UntypedPersistentActor
internal class TestActor : UntypedPersistentActor, IWithUnboundedStash
{
public static Props Props(string persistenceId) => Actor.Props.Create(() => new TestActor(persistenceId));

Expand Down Expand Up @@ -43,14 +43,39 @@ protected override void OnCommand(object message)
{
case DeleteCommand delete:
DeleteMessages(delete.ToSequenceNr);
Sender.Tell($"{delete.ToSequenceNr}-deleted");
Become(WhileDeleting(Sender)); // need to wait for delete ACK to return
break;
case string cmd:
var sender = Sender;
Persist(cmd, e => sender.Tell($"{e}-done"));
break;
}
}

protected Receive WhileDeleting(IActorRef originalSender)
{
return message =>
{
switch (message)
{
case DeleteMessagesSuccess success:
originalSender.Tell($"{success.ToSequenceNr}-deleted");
Become(OnCommand);
Stash.UnstashAll();
break;
case DeleteMessagesFailure failure:
originalSender.Tell($"{failure.ToSequenceNr}-deleted-failed");
Become(OnCommand);
Stash.UnstashAll();
break;
default:
Stash.Stash();
break;
}
return true;
};
}
}

public class ColorFruitTagger : IWriteEventAdapter
Expand Down

0 comments on commit 1b29a93

Please sign in to comment.