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]

Reply via email to