* Refactoring to separate the Aeron specific things, ArteryAeronUdpTransport
* move Aeron specific classes to akka.remote.artery.aeron package
* move Version to ArterySettings, and describe strategy for envelope header changes
The existing implementation had lots of duplication. The Initializing state
could be removed in favor of using `Pending(Nil)` instead which simplified
the state handling logic further. Also, instead of using `OptionVal[Promise[Done]]`
a special marker value, `NoPromise`, was introduced to mark the case when
no promise was supplied.
Fixes#23953.
Previously there was quite some contention on adding and removing promises. Now
we only cleanup after a (currently hard-coded) number of 256 executed promises.
A smaller number still showed contention in the SendQueueBenchmark.queue
benchmark.
* Handle race where broadcasthub consumer already cancelled #23205
* Don't use the same thread ec, import cleanup
* Complete feedback promise when async event has been executed #23953
* No need for double-deregister-guard after invokeWithFeedback was fixed.
* Test coverage for async callbacks #23953
* Updated docs on AsyncCallback #23953
* MiMa
* Completing a promise of scaladoc
* Improved test coverage and handling of async invokation failing or throwing
* MiMa
* Review updates
* #22506 Mark materializer extension as @InternalApi
* #22506 Added missing annotations on internal apis in the fusing package
* #22506 Missing annotations in io package
* #22506 Add internal api annotations in impl package
* #22563 more hiding of the classes in the impl package
* #22563 Formatting fixes
* #22506 Fix private access in stream tcl tests
main work by @drewhk with contributions from @2m and @rkuhn
This work uncovered many well-hidden bugs in existing Stages, in
particular StatefulStage. These were hidden by the behavior of
OneBoundedInterpreter that normally behaves more orderly than it
guarantees in general, especially with respect to the timeliness of
delivery of upstream termination signals; the bugs were then that
internal state was not flushed when onComplete arrived “too early”.
- replace all occurrences with equivalent GraphStage implementations
This commit introduces a mini-DSL for GraphStage that allows emitting or
reading multiple elements to/from a port with one statement, installing
stateful handlers on the port to make it work. The emitting side allows
stacked continuations, meaning that while an emit() is ongoing (waiting
for demand) another one can be added to the queue; this allows
convenient formualation of merge-type stages.