pjfanning opened a new pull request, #3737: URL: https://github.com/apache/pekko/pull/3737
### Motivation #3727 opted the GraphStage TLS engine's input boundaries out of sender-side batching so plaintext is not overtaken by a later plaintext-output cancellation. The opt-out (`UnbatchedInput`) was checked against the TLS stage's attributes, which every input boundary of the TLS island inherits. So ciphertext input from the transport also crossed the async boundary as one actor message per element, although it has no such ordering constraint and it is the hot inbound path. ### Modification - `UnbatchedInput` now names the inlets it applies to. In `GraphStageIsland.takePublisher`, the materializer marks a `BatchingActorInputBoundary` unbatched only when the inlet it feeds is listed. `ActorOutputBoundary` checks that flag instead of the attribute. - `TlsGraphStage.StreamTlsAttributes` lists only the plaintext input inlet. - `ActorOutputBoundary.batchesToSubscriber` (`private[stream]`) exposes the chosen mode for the test. ### Result Plaintext input keeps the #3727 ordering guarantee. Ciphertext input is batched across the async boundary again. ### Tests - `stream-tests/testOnly org.apache.pekko.stream.io.TlsGraphStageIsolatedSpec -- -z "batch transport input"`: new test, passes. It runs a real `TlsGraphStage` and checks the mode chosen by the output boundary in front of each inlet. It fails when `cipherIn` is added back to `UnbatchedInput` (`false was not equal to true` on the ciphertext assertion). - `stream-tests/testOnly org.apache.pekko.stream.io.Tls*`: 11 suites, 286 tests passed - `stream/mimaReportBinaryIssues`: no issues (`UnbatchedInput` is internal and unreleased) - `scalafmt --mode diff-ref=upstream/main`: clean ### References Refs #3727 -- 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]
