add missing returnRecoveryPermit (#24439)

* missing for some error cases
* in the states recoveryStarted and recovering it has got the permit and
  it must returned if the actor is stopped due to some error in those
  states
* it would have been a lot easier to do such in postStop but we can't
  introduce new things in the trait Eventsourced due to BC
This commit is contained in:
Patrik Nordwall 2018-01-30 13:46:38 +01:00 committed by Konrad `ktoso` Malawski
parent aa911bcf14
commit cdecd8b6fe

View file

@ -495,12 +495,14 @@ private[persistence] trait Eventsourced extends Snapshotter with PersistenceStas
case LoadSnapshotFailed(cause) case LoadSnapshotFailed(cause)
timeoutCancellable.cancel() timeoutCancellable.cancel()
try onRecoveryFailure(cause, event = None) finally context.stop(self) try onRecoveryFailure(cause, event = None) finally context.stop(self)
returnRecoveryPermit()
case RecoveryTick(true) case RecoveryTick(true)
try onRecoveryFailure( try onRecoveryFailure(
new RecoveryTimedOut(s"Recovery timed out, didn't get snapshot within $timeout"), new RecoveryTimedOut(s"Recovery timed out, didn't get snapshot within $timeout"),
event = None) event = None)
finally context.stop(self) finally context.stop(self)
returnRecoveryPermit()
case other case other
stashInternally(other) stashInternally(other)
@ -565,12 +567,14 @@ private[persistence] trait Eventsourced extends Snapshotter with PersistenceStas
case ReplayMessagesFailure(cause) case ReplayMessagesFailure(cause)
timeoutCancellable.cancel() timeoutCancellable.cancel()
try onRecoveryFailure(cause, event = None) finally context.stop(self) try onRecoveryFailure(cause, event = None) finally context.stop(self)
returnRecoveryPermit()
case RecoveryTick(false) if !eventSeenInInterval case RecoveryTick(false) if !eventSeenInInterval
timeoutCancellable.cancel() timeoutCancellable.cancel()
try onRecoveryFailure( try onRecoveryFailure(
new RecoveryTimedOut(s"Recovery timed out, didn't get event within $timeout, highest sequence number seen $lastSequenceNr"), new RecoveryTimedOut(s"Recovery timed out, didn't get event within $timeout, highest sequence number seen $lastSequenceNr"),
event = None) event = None)
finally context.stop(self) finally context.stop(self)
returnRecoveryPermit()
case RecoveryTick(false) case RecoveryTick(false)
eventSeenInInterval = false eventSeenInInterval = false
case RecoveryTick(true) case RecoveryTick(true)