Enforce valid seqnr for deletes, #25487 (#25488)

This commit is contained in:
Patrik Nordwall 2018-08-20 08:14:56 +02:00 committed by Konrad `ktoso` Malawski
parent 97c8e5b6f8
commit 9e66f7121f
4 changed files with 31 additions and 6 deletions

View file

@ -78,6 +78,9 @@ object PersistentActorSpec {
case d: DeleteMessagesSuccess
val replyTo = askedForDelete.getOrElse(throw new RuntimeException("Received DeleteMessagesSuccess without anyone asking for delete!"))
replyTo ! d
case d: DeleteMessagesFailure
val replyTo = askedForDelete.getOrElse(throw new RuntimeException("Received DeleteMessagesFailure without anyone asking for delete!"))
replyTo ! d
}
override protected def onPersistRejected(cause: Throwable, event: Any, seqNr: Long): Unit =
@ -1538,6 +1541,18 @@ abstract class PersistentActorSpec(config: Config) extends PersistenceSpec(confi
expectMsg(Nil)
}
"not be able to delete higher seqnr than current" in {
val persistentActor = behavior1PersistentActor
persistentActor ! Cmd("b")
persistentActor ! GetState
expectMsg(List("a-1", "a-2", "b-1", "b-2"))
persistentActor ! Delete(5L) // > current 4
persistentActor ! "boom" // restart, recover
expectMsgType[DeleteMessagesFailure].cause.getMessage should include("less than or equal to lastSequenceNr")
persistentActor ! GetState
expectMsg(List("a-1", "a-2", "b-1", "b-2"))
}
"recover the message which caused the restart" in {
val persistentActor = recoverMessageCausedRestart
persistentActor ! "Boom"