The GitHub Actions job "Binary Compatibility" on pekko.git/fix/tcp-outgoing-connection-retry-swallowed-exception-3135 has succeeded. Run started by GitHub user He-Pin (triggered by He-Pin).
Head commit for run: fc5dc23043e59c09efb74e1b38c81e70ee6bb920 / 虎鸣 <[email protected]> fix: use Timers for finishConnect retry instead of raw scheduler callback Motivation: TcpOutgoingConnection retries a failed finishConnect by scheduling a callback via context.system.scheduler.scheduleOnce that calls channelRegistry.register outside the actor's message loop. If that callback throws, the exception is caught by the scheduler/dispatcher and never re-enters the actor's supervision, so Tcp.CommandFailed is never delivered and the commander can hang in the connecting state indefinitely. Modification: Mix in the Timers trait and replace scheduler.scheduleOnce with timers.startSingleTimer, which sends a private RetryFinishConnect self-message processed inside the actor's message loop. The retry handler is wrapped in reportConnectFailure so any exception surfaces as CommandFailed to the commander. Timers are automatically cancelled when the actor stops, removing the latent window where a stale callback could register against a channel being torn down. Result: Exceptions thrown during the finishConnect retry path now correctly surface as Tcp.CommandFailed to the commander, preventing indefinite hangs in the connecting state. Tests: - sbt 'actor-tests / Test / testOnly org.apache.pekko.io.TcpConnectionSpec' → 35/35 passed References: Fixes #3135 Report URL: https://github.com/apache/pekko/actions/runs/28033205954 With regards, GitHub Actions via GitBox --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
