He-Pin opened a new pull request, #3113:
URL: https://github.com/apache/pekko/pull/3113

   ### Motivation
   
   PR #3063 replaced the `BroadcastHub` consumer wheel's `ArrayList` with 
`scala.collection.mutable.LongMap` for O(1) keyed removal. The PR description 
credited 
[akkadotnet/akka.net#8264](https://github.com/akkadotnet/akka.net/pull/8264) as 
its inspiration.
   
   Although the Pekko implementation was written from scratch (using `LongMap` 
rather than `Dictionary`/`HashMap`), there is concern that the original idea 
and design framing — replacing the per-slot consumer collection with a keyed 
map for O(1) removal — came from reading the akka.net PR description rather 
than being derived independently from the Pekko codebase. Until the licensing 
and provenance question is fully resolved, revert the change so it can be 
re-done cleanly from scratch, with independent motivation and design.
   
   ### Modification
   
   Revert the squash-merged commit `28d61c53684dcd22302560220698d74a7c5da789` 
(PR #3063):
   
   - `BroadcastHub` consumer wheel: `Array[LongMap[Consumer]]` back to 
`Array[java.util.ArrayList[Consumer]]`; keyed lookup uses `ArrayList.removeIf` 
again.
   - `findAndRemoveConsumer`, `addConsumer`, `wakeupIdx`, `onUpstreamFailure`, 
and the `Advance`/`NeedWakeup` event handlers are restored to their pre-#3063 
shape.
   - `BroadcastHubBenchRunner` (standalone benchmark runner added by #3063) is 
removed.
   - `BroadcastHubBenchmark` is restored to its prior `@Param` configuration 
(`64`, `256`) and single `broadcast` method.
   - The two high-consumer `HubSpec` tests added by #3063 (`deliver all 
elements in order to many consumers`, `handle many consumers when some cancel 
mid-stream`) are removed.
   
   The post-#3072 `private` field style (no `private[this]`) is preserved — 
only the LongMap data-structure change from #3063 is undone.
   
   ### Result
   
   `BroadcastHub` behavior returns to its state before #3063. No public API or 
binary compatibility change vs. the current `main` branch — only the internal 
LongMap-based wheel introduced by #3063 is undone. The optimization can be 
re-done from scratch in a follow-up PR once the provenance question is settled.
   
   ### Tests
   
   - `sbt "stream/compile"` → success
   - `sbt "stream-tests/Test/testOnly *HubSpec"` → 48 passed, 0 failed
   - `sbt "stream/mimaReportBinaryIssues"` → no issues
   - `git diff --check origin/main..HEAD` → clean
   
   ### References
   
   Refs #3063, Refs 
[akkadotnet/akka.net#8264](https://github.com/akkadotnet/akka.net/pull/8264) — 
provenance review pending.


-- 
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