Noteworthy Changes
- Response Channels
- A new experimental feature that provides server/client behaviour to Aeron clients.
- Asynchronous DNS Name Resolution
- Improve Publication/Subscription creation performance and avoid stalls by performing DNS resolution asynchronously with Aeron.
- Tethering Behaviour
- Prevent premature disconnections by utilizing the maximum window size for tethering, even in congested networks.
- Adjust Overrun Behaviour
- Make better use of buffers and reduce dropped consumers.
- Enhance the performance of receivers in a max flow control use-case.
- Congestion Control Recovery
- Significantly reduce recovery time in congested networks, without the need for any configuration changes.
- Loss Recovery Improvements
- Reduce negative acknowledgements and message redelivery to improve the efficiency of message recovery.
Known issues
- ClusterBackup is stuck in the
LIVE_LOG_REPLAY
state as it trying to find recording using wrongarchiveId
.
Changelog
- [Java/C Driver] Support configuration flag for experimental features (#1577)
- [C Driver] Fix buffer overflow when updating counter labels.
- [Java ConsensusModule] Log cluster session failures.
- [Java/C/C++ Client/Driver] Add ability to set name on the Aeron client. (#1581)
- [Java Driver] Async DNS resolution. (#1564)
- [C Driver] async DNS resolution for the C media driver (#1566)
- [Java CluserBackup] Have cluster backup start from a specific position (#1579)
- [Java ConsensusModule] Introduce clustered service specific SnapshotDurationTracker (#1575)
- [Java Cluster] Allow setting ClusterClock via
aeron.cluster.clock
system property. - [Java Driver] Call force on CnC file when doing clean shutdown and signalling ready.
- [C Driver] Add
aeron_msync
and use to flush CnC file contents upon start and shutdown. - [Java Cluster/Archive] Add *MarkFile.force() method to flush any pending updates to disc and use it for signalling readiness and when closing the mark file.
- [C/Java Driver] Dissect frames and commands using key/value format.
- [C/Java Driver] Use nanosecond resolution for logging messages.
- [C Driver] Install pre-/post-interceptors logging interceptors if the incoming/outgoing chains are not NULL. Change logging order for outgoing events to log before executing command to match Java and log plain messages before encryption.
- [Java Driver] Fix
FRAME_IN/FRAME_OUT
event logging, i.e. allow redefinition of previously loaded classes. - [C Driver] Scope logging functions with a "log" struct. (#1556)
- [C Driver] Add C driver logging for send_nak_message and resend (#1553)
- [C Driver] Track pending setups for cases when notified of unconnected messages. Only allow pending setups for unknown interest or existing images when in ACTIVE state. Handle unconnected streams by sending setup eliciting SMs.
- [C Driver] Fix potential leak in when adding stream interest to subscription by session.
- [Java Samples] Improve response channels samples.
- [C Driver] Align min flow control implementation with Java + allocate memory only if a receiver is added.
- [Java ConsensusModule] Use fixed 64 byte alignment that does not depend on the CACHE_LINE_LENGTH and is backwards compatible.
- [Java ConsensusModule] Fix IndexOutOfBoundsException when recording entry straddles page size.
- [Java ConsensusModule] Add leadership term id counter to ease debugging.
- [Java ConsensusModule] Add election counter.
- [Java ClusterTool] Ensure publication is connected before making cluster members query to avoid exception on checking result from ClusterTool.
- [Java] Add missing properties to the
toString
+ print Archive/ConsensusModule/ClusteredServiceContainer configuration ifaeron.print.configuration=true
. - [C/C++/Java Client] Re-assemble header for the fragmented message before calling user code.
- [Java Archive] Add Archive threading mode to the conductor duty cycle counter labels.
- [Java ClusteredServiceContainer] Trap and log snapshot exceptions while allowing cluster to resume (#1568)
- [Java ClusteredServiceContainer] Track ClusteredService lifecycle via a single field.
- [Java ConsensusModule] Remove retry logic from the ConsensusModuleProxy.
- [Java ConsensusModule] Retry sending cluster member query.
- [Java Cluster] Clarify Javadoc around
clusterSessionId
foroffer/tryClaim
methods. - [C Samples] add locks around channel info map in response server sample app
- [Java Cluster Client] Close any partially created ingress publications and egress subscription if connect was not completed.
- [Java Client] Add
Aeron#asyncRemoveSubscription
. - [Java ArchiveTool] Update Help section of Archive Tool to describe the different 'describe' commands. (#1573)
- [C++ Archive Client] Add
archiveId
API to the AeronArchive. - [Java Archive Client] Use
archiveId
for looking up the RecordingPos counters. (#1571) - [C++/Java Archive Client] Add getMaxRecordedPosition to AeronArchive to get the length of a recording if it is active or stopped.
- [Java/C++ Archive Client] Update Aeron Archive control protocol minor version.
- [C Driver] Align implementation of retransmit handler with Java driver.
- [Java Cluster] Set isLeader appropriately on cluster member when listing. Issue #1569
- [Java Driver] Remove unused sourceAddress from PublicationImage.
- [Java Driver] Allow the RetransmitHandler to prevent retransmissions where the term offsets don't match but NAK'd region is wholly subsumed by an existing retransmission.
- [C Driver] Per stream nak delay (#1570)
- [Java Driver] Add support for per channel configuration of nak-delay.
- [Java Driver] Add fixed loss interceptor for testing (#1551)
- [Java Driver] Suppress retransmits of the offset of the NAK is in the range of any active retransmits.
- [Java Driver] Clamp all retransmissions at the point where we create the RetransmitAction to ensure clamped length is accurately applied.
- [C/Java Driver] Change multicast NAK backoff and unicast delay linger to 10ms from 60ms.
- [C++ Wrapper Client] Prevent sanitiser errors when shutting down subscription and client in quick succession (#1549)
- [Java Archive] Validate replay completely before creating a replay Publication.
- [C Samples] add response_client/server sample apps (#1559)
- [C Driver] check for response parameters when adding destinations (#1565)
- [Java Driver] add validation when control-mode=response (#1563)
- [C Utility] Add support for PUT requests using aeron_http_util. (#1561)
- [Build] Set aeronmd rpath in the generated package. (#1557)
- Upgrade to Agrona 1.21.1.
- Upgrade to SBE 1.31.0.
- Upgrade to ByteBuddy 1.14.13.
- Upgrade to ASM 9.7.