He-Pin opened a new pull request, #3359: URL: https://github.com/apache/pekko/pull/3359
### Motivation A classic PersistentActor enters an unbounded restart loop when its RecoveryCompleted handler throws. Issues #3234 and #3249 report the same trigger, control flow, symptom, and expected behavior. ### Modification - Treat NonFatal exceptions from the classic RecoveryCompleted handler as recovery failures. - Invoke onRecoveryFailure(cause, None), stop the actor, and still return the recovery permit once. - Replace the restart-loop expectation with a directional stop-and-permit regression test. - Document the RecoveryCompleted failure behavior. ### Result The actor reports the recovery failure once and stops instead of restarting indefinitely, while recovery capacity is released for waiting actors. ### Tests - sbt "persistence / Test / testOnly org.apache.pekko.persistence.RecoveryPermitterSpec" — red before the fix; 6 passed after the fix - sbt "persistence / Test / test" — 62 passed - sbt headerCreateAll — passed - sbt +headerCheckAll — passed for Scala 2.13.18 and 3.3.8 - sbt checkCodeStyle — passed - sbt docs/paradox — passed with existing duplicate-anchor warnings - sbt validatePullRequest — completed in 25m39s; affected cluster-sharding multi-JVM tests and 368 docs ScalaTests passed; overall task failed on two unchanged baseline/environment tests: LeveldbJournalNativeSpec cannot load leveldbjni-all 1.8 on macOS ARM64, and IntegrationDocTest references the invalid existing mailbox class pekko.dispatch.UnboundedMailbox - scalafmt --list --mode diff-ref=origin/main — passed - git diff --check — passed - Qoder stdout review — no must-fix findings ### References Fixes #3234 Fixes #3249 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
