* fix memory leak in SystemMessageDelivery
* initial set of tests for idle outbound associations, credit to mboogerd
* close inbound compression when quarantined, #23967
* make sure compressions for quarantined are removed in case they are lingering around
* also means that advertise will not be done for quarantined
* remove tombstone in InboundCompressions
* simplify async callbacks by using invokeWithFeedback
* compression for old incarnation, #24400
* it was fixed by the other previous changes
* also confirmed by running the SimpleClusterApp with TCP
as described in the ticket
* test with tcp and tls-tcp transport
* handle the stop signals differently for tcp transport because they
are converted to StreamTcpException
* cancel timers on shutdown
* share the top-level FR for all Association instances
* use linked queue for control and large streams, less memory usage
* remove quarantined idle Association completely after a configured delay
* note that shallow Association instances may still lingering in the
heap because of cached references from RemoteActorRef, which may
be cached by LruBoundedCache (used by resolve actor ref).
Those are small, since the queues have been removed, and the cache
is bounded.
* 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
* add+use UniformFanOutShape#outSeq for consistency
UniformFanInShape has inSeq, whereas UniformFanOutShape has outArray.
There's probably no good reason for this discrepancy.
* 2.5.3 is gold, deprecation would start in 2.5.4
* specialize in/outlets where possible
* review comments, binary compatibility
* optimize imports
* use Array copy internally
* give FanInShape1N the deprecation treatment
also, s/T\d/I\d/g
* delete ignored file
* process additional review comments
* make inArray fully private everywhere
* add benchmark heavy on the use of FanInShape.in()
* benchmark says: do not use Array for most n
* add JavaDoc to un-final'ed defs to not override
* change deprecated val to def; do not use it
* process patriknw's review comments
Notably:
* Reimplementation of ImmutableIntMap for much faster performance
* Benchmark for ImmutableIntMap added to akka-bench-jmh
* Many small performance improvements to the impl of AffinityPool
* Correctness fixes for pool lifecycle management
* WIP early preview of moving compressions ownership to Decoder
* Compression table created in transport, but owned by Decoder
Added test for restart of inbound stream
* =art snapshot not needed in HeavyHitters since owned by Decoder
* Make decoding release the envelope so it doesn't leak memory
* Create two different configurations, Standard and RemoteInstrument
* Create Serilaizer and RemoteInstrument that doesn't allocate memory
* =act clean up ByteString#drop(...)
Current implementation has a good algorithm but seems a little bit complicated.
Clening-up does not suffer the performance (actually seems to have the better
performance when dropping(N-1)) where N is the length, and is easy to understand
almost the same algorithm now.
* Change private[akka] to priavte
* Rename go(...) and some variables
They should be easy for us to understand what they are.
* Add benchmark of ByteString#drop(...)