He-Pin opened a new pull request, #3361: URL: https://github.com/apache/pekko/pull/3361
### Motivation Classic remoting suspends the original read-only reader while a passive connection takes over. Payloads arriving on the suspended reader were discarded, so they were permanently lost when the replacement connection failed and the original reader resumed. ### Modification - Add a bounded `pekko.remote.classic.passive-connection-buffer-size` setting, defaulting to 128 messages. - Buffer unreliable payloads while the original reader is suspended; reliable payloads continue to rely on retransmission. - Track whether a replacement reader dispatched a message. Replay the original buffer only when it is ordering-safe; otherwise reconnect the writer while preserving reliable-delivery sequence and resend state. - Add focused coverage for replay, overflow, reliable-message handling, cross-connection ordering, reconnect state, configuration, and binary compatibility. ### Result Failed passive handoffs recover buffered unreliable payloads when safe, without replaying older messages after a replacement has already delivered newer ones or losing buffered system messages during reconnect. ### Tests - `sbt "remote / Test / testOnly org.apache.pekko.remote.classic.RemotingSpec"` — passed (22 tests) - `sbt "remote / Test / testOnly org.apache.pekko.remote.ReliableDeliverySupervisorSpec"` — passed (5 tests) - `sbt "remote / Test / testOnly org.apache.pekko.remote.RemoteConfigSpec"` — passed (6 tests) - Scala 3.3.8 focused `RemotingSpec` and `ReliableDeliverySupervisorSpec` tests — passed - `sbt +mimaReportBinaryIssues` — passed for Scala 2.13 and Scala 3.3 - `sbt headerCreateAll` — passed - `sbt +headerCheckAll` — passed - `sbt checkCodeStyle` — passed - `sbt docs/paradox` — passed (existing duplicate-anchor warnings only) - `scalafmt --list --mode diff-ref=origin/main` — passed - `sbt sortImports` — not completed because the existing Scalafix/scala-meta setup raised `NoSuchMethodError`; unrelated generated changes were reverted - `sbt validatePullRequest` — not run per requester ### References Fixes #3208 -- 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]
