Skip to content

Releases: real-logic/aeron

1.46.1

30 Aug 20:16
Compare
Choose a tag to compare
  • [Java] Fail build on JavaDoc errors.
  • [Java] Remove Nashorn dependency.
  • [Java] Upgrade to Checkstyle 10.18.0.
  • [Java] Upgrade to Mockito 5.13.0.
  • [Java] Upgrade to ByteBuddy 1.15.1.

1.46.0

24 Aug 09:02
Compare
Choose a tag to compare

Breaking changes

  • JDK 17 is required for compiling and running!

Changelog

  • [Java] Use new Selector API and fix samples.
  • [Java] Fix config validation on JDK 17  by using an external Nashorn ScriptEngine.
  • [CI] Execute tests using ubuntu-24.04 and macos-latest.
  • [Java] Upgrade to Agrona 1.23.0.
  • [Java] Upgrade to SBE 1.33.0.
  • [Java] Upgrade to Gradle 8.10.
  • [Java] Upgrade to ByteBuddy 1.15.0.
  • [Java] Upgrade to Shadow 8.3.0.
  • [Java] Upgrade to bnd 7.0.0.
  • [Java] Upgrade to Mockito 5.12.0.
  • [Java] Upgrade to AsciiDoctor 2.5.13.
  • [Java] Upgrade to JGit 6.10.0.202406032230-r.
  • [Java] Force ASM 9.7.

1.45.0

21 Aug 16:46
Compare
Choose a tag to compare

Noteworthy Changes

  • Per-Stream Session Limits
    • Allows users to limit the number of different sessions (i.e. distinct publication images) that can be created connecting to the same subscription (channel & stream). This can be used to avoid resource exhaustion the driver hosting the subscription, when clients on other drivers are over zealously creating publications.
  • Infer Group Subscriptions for Recovery Behaviour
    • When using Multi-Destination Cast, if the user wants to make use of group semantics for nakking and retransmission, then previously group=true needed to be added to the channel configuration on the subscription. Failing to do so would potentially cause excessive nakking. This feature will set a flag on the SETUP message that the subscription can use to automate the setting of this configuration option. Setting group=true/false will override the derived value.
  • Static Counters
    • Add new API to create static counters whose lifetime is decoupled from an Aeron client instance that created them. Unlike the normal counters which are deleted when an Aeron client is closed or times out, the static counters remain valid until the MediaDriver is closed.
    • Static counters are similar to the system counters which are created by the MediaDriver upon startup. Such counters cannot be delete and only one instance of each counter can exist per MediaDriver instance. A static counter is identified by a tuple <typeId, registrationId> which are specified at the creation time. Calling addStaticCounter with the same <typeId, registrationId> multiple times will only create a counter once with subsequent calls returning the id of an existing counter. An exception will be thrown upon an attempt to specify <typeId, registrationId> of an existing non-static counter.
  • Archive Integration of Response Channels
    • Users of the AeronArchive client can make use of response channels for control, replay and replication communication paths.
  • Archive Logging Improvements
    • To increase visiblity of replay and recording session state changes.
    • Enable either REPLAY_SESSION_STATE_CHANGE or RECORDING_SESSION_STATE_CHANGE when configuring the aeron agent.
  • ReplayMerge Backoff
    • To slow down internal state transitions that involve calls to ‘get max recorded position’.
    • Reduces network traffic.
    • Greatly reduces log output when debugging is enabled.
  • RetransmitHandler Improvements
    • On unicast channels, a received NAK may immediately replace a previous received NAK so long as the offset has increased.
  • Retransmitted Bytes Counter
    • To understand network conditions, it can be useful to know how many bytes have been retransmitted due to reception of NAKs.
    • We have exposed a new counter “Retransmitted bytes”, which serves as an approximate indicator of this information.
    • The counter only approximates the true value, as MDC retransmits are only recorded once, rather than N times (once for each destination). It is also worth noting that the retransmitted bytes are not included in the total bytes sent counter value. We may improve these aspects in the future.
  • C++ API Deprecation
    • Aeron currently has two C++ APIs, a pure C++ version and a wrapper over the C API. This release we are no longer adding new features to the C++ API. This include being able to offer raw uint8_t * values and the new static counters feature.

Changelog

  • [Java Cluster] IngressAdapter to delegate to ConsensusModuleAgent when schema id is unknown
  • [C++ Wrapper] Correctly implement tracking of context on the header.
  • [C/C++] Do not compile with -Ofast compilation level.
  • [C/C++] Pass custom optimization level to the MSVC compiler.
  • [Build] Download and install CMake as part of the build process to ensure latest version of CMake.
  • [C] Tidy up aeron_reallocf to work correctly on allocation failure.
  • [C Driver] Expose try_connect_stream method for use from within ATS.
  • [C Driver] Remove unconnected stream message.
  • [C Driver] Fix string format for AERON_SET_ERROR arguments.
  • [C/C++/Java] Add per channel untethered window limit and resting timeouts (#1588)
  • [C++ Wrapper] Add findByTypeIdAndRegistrationId to C++ Wrapper.
  • [Java Driver] Pre-start async task executor threads to avoid inheriting affinity from the conductor thread.
  • [Java Cluster] Print serviceId when throwing "ack out of sequence" exception.
  • [C++] Fixed set thread name. (#1594)
  • [Java/C++ Archive] Use response channels in the Archive Client (#1560)
  • [PS] Add Powershell script for Windows build.
  • [C/Java Driver] Do not resolve self hostname when starting MediaDriver to avoid a DNS-induced stall. Make resolverName required when driver name resolution is used.
  • [Java/C/C++ Client] Propagate context though assembled header when using the buffer builder.
  • [Java] Fix FixedLossGenerator to not drop frames before the specified "drop region".
  • [C/Java Driver] Expose counter for number of bytes retransmitted.
  • [Java Cluster] Remove redundant param.
  • [C] Move validation earlier in the flow to prevents leaks in ATS on validation failure.
  • [Java Samples] Use context instead of image by session id to resolve Image on request message.
  • [C/Java Driver] Add session limits for a stream to prevent resource exhaustion of resources on drivers hosting subscriptions (#1598)
  • [Java Cluster] Add support for installing schema extensions into the ConsensusModule.
  • [Java Samples] Change response channels sample to use controlled poll to prevent response channel test failures.
  • [Java] Add some additional error test to ReplayMerge and test for concurrent ReplayMerges along with additional error reporting.
  • [C++ Archive] Rethrow original exception in ReplayMerge so information is not lost. #1587
  • [C] add and use aeron_mkdir_recursive (#1602)
  • [Java] Version interface to allow testing usage of it (#1605)
  • [Java] Include file name when mark file version validation fails.
  • [Java] Correct offsets for response setup flyweight in ReceiveChannelEndpointThreadLocals.
  • [Java] Default cluster log flow control to driver default which will commonly be max now that overruns can go up to half a term.
  • [Java Archive] Assign client name to Archive's Aeron client.
  • [Java Cluster] Assign client name to Cluster Aeron clients.
  • [C++/Java Client] Pre-touch mapped log buffers on the client if Aeron.Context.preTouchMappedMemory() returns true, i.e. client configuration takes precedence over channel parameters and media driver configuration.
  • [Java Cluster] Delegate decision on unknown schema to consensus agent
  • [Java Cluster] Ensure service count is zero when consensus module extension is installed.
  • [C/C++/Java] Annotations to support config/counters documentation/validation (#1593)
  • [C/Java Driver] Add unicast semantics to RetransmitHandler (#1603)
  • [Java Cluster] Add archive and egress response endpoints for cluster and make them optional.
  • [Java Cluster] Remove default for cluster services directory configuration and leave resolution of that value until conclude.
  • [Java Archive] Use publication.availableWindow instead of looking up the pubLmt counter.
  • [Java Cluster] First cut at consensus module extension integration.
  • [C Driver] Fixes for fixed loss interceptor used for testing.
  • [Java Cluster] Remove unused params.
  • [Java Archive] Separate lines for debugging.
  • [Java Cluster] Provide access to archive and aeron for consensus module extension.
  • [Java Cluster] Delegate cluster session creation to extension if available.
  • [Java Cluster] delegate callbacks to extension on state changes.
  • [C/Java Driver] Track EOS for each receiver connected to the NetworkPublication (#1606)
  • [C Client] Declare a volatile pointer to aeron_image_list_stct instead of a pointer to a volatile struct. (#1607)
  • [Java Cluster] A more decoupled approach to ConsensusModuleExtension.
  • [Java Cluster] Provide access to log publication after an election for consensus module extension.
  • [Java] Improve error messages when publication errors occur.
  • [Java Cluster] Consensus module extension API refinements.
  • [Java Cluster] Add replay of session open and close delegation to consensus module extension.
  • [Java Cluster] Add replay of extension message delegation to consensus module extension.
  • [Java Cluster] ConsensusControlState to be passed from Agent to Extension and allows control.
  • [C/C++ Client] Use aeron-client-conductor as a client conductor agent name across all implementations.
  • [Java Cluster] pass actingVersion to onMessage of ConsensusModuleExtension
  • [Java] Version generated class to have toString
  • [Bash] Add option to disable C++ Archive API.
  • [Java Cluster] Add ability to access response publication for a session and only update keepalive status when open.
  • [Java Cluster] Handle cluster extension messages on egress listener side.
  • [Java Cluster] Add extension message support to AeronCluster client.
  • [C++ Wrapper] Allow pass through of const uint8_t * buffers.
  • [C++] Replace array with pointer to address code-ql issue on Publication in C++ API and Wrapper.
  • [Build] Fix aeronmd rpath in the generated package.
  • [Java Cluster] Use separate archive control session for consensus module extension.
  • [Java Cluster] Add work cycle callback for ConsensusModuleExtension.
  • [C/Java Driver] Replace exception with increment of counter for overflowing the retransmit pool.
  • [C] add -w to C AeronStat app (#1614)
  • [Java Cluster] Provide access to encoded principle for authorising consensus module extension session.
  • [Java Archive] Add support for response channels startReplay and startBoundedReplay.
  • [Java Samples] Fix StreamStat mapping of sub-pos which had a join position included in the channel uri and prevented it to be merged with the rest of stream positions. Also ensure that longest channel uri is printed.
  • [Java Cluster] Extract ReplicationPa...
Read more

1.44.1

11 Apr 22:40
Compare
Choose a tag to compare
  • [Java] Fix ClusterBackup getting stuck in the LIVE_LOG_REPLAY state.
  • [Java] Validate that the egressChannel is set.
  • [CI] Add Clang 18 to the build matrix.
  • Upgrade to SBE 1.31.1.

1.44.0

08 Apr 07:14
Compare
Choose a tag to compare

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 wrong archiveId. Fixed in 1.44.1.

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 if aeron.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 for offer/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.

1.41.6

05 Jan 09:46
Compare
Choose a tag to compare
  • [Java/C] Allow publication image flow control under runs if they are heartbeats so a stream can be kept connected and to get a more accurate EOS when using MDS.
  • [Java/C] Restrict the allowing of heartbeat under runs to only one term behind.
  • [Java/C] Count under runs for heartbeats.
  • [Java/C] Track EOS position per image connection for MDS.

1.43.0

19 Dec 01:44
Compare
Choose a tag to compare
  • [Driver] Support specifying endpoints and tags in the same URI
  • [C Driver] Add reference id to counters.
  • [Driver] Set reference id of sub-pos to registration id of the image/publication.
  • [C Client] Fix aeron_print_counters.
  • [Java Driver] Touch ups for RetransmitHandler.
  • [C Driver] Put enum events in order.
  • [C Driver] Remove reliance of max event num in enum for driver agent.
  • [C Driver] Fix signed comparisons.
  • [C Driver] Declare void param.
  • [C Driver] Keep loop types consistent.
  • [Java Driver] Add a clamp on retransmit length.
  • [Java Client] Fix Aeron.getSubscription(long) JavaDoc.
  • [Java Driver] Encapsulate retransmit multiples constants.
  • [Samples] Add sample code to support stress testing of MDC and Unicast connections.
  • [Cluster] Mark services as active only after they have successfully started.
  • [Driver] Improve error messages reported by clients if the Media Driver has been shutdown.
  • [C Client] Populate the client image subscriber_position_id.
  • [Cluster] Improve error message when cluster fails to connect.
  • Add detailed version information to Aeron error counters for all components. Include release version and Git SHA.
  • [C Driver] Fix capture of spy subscription channels so that image availability callbacks include the correct subscription URI.
  • [C] Use -fno-omit-frame-pointer on Linux native builds so provide easy and accurate profiling with tools like perf.
  • Add +guilty to version information if using a build that has changes that have not been committed to git.
  • [C Client] Correctly handle the case where an image is used across multiple subscriptions. Including ensuring the unavailability callbacks delivered correctly.
  • [Archive] Exclude invalid recordings from ArchiveTool describe and add a describe-all command which shows valid and invalid recordings.
  • [C Driver] Introduce a parameters structure that can be used to carry transport configuration information when initialising a udp_channel_transport. Also pass MTU information through the bindings to allow for improved validation of within the DPDK bindings.
  • [Driver] Only include timestamps on packets that carry the DATA_BEGIN_FLAG to prevent accidental corruption of packets when the timestamp is being carried within the payload.
  • [Cluster] Remove the need for MDS subscription on cluster ingress by having a separate IPC ingress subscription when required. Plus await sockets closing on the log subscription in parallel with the other activities when preparing for an election.
  • [Cluster] A leader should assert its leadership when a follower requests a vote and the leader has a more up-to-date log rather than re-initialising an election which could result in log truncation.
  • [C Driver] Ensure loop iteration index is used when setting timestamps for publication.
  • [Cluster] Log event for unknown session close in service container rather than throw and exception.
  • [Cluster] Throw exception if a member id is not found in the cluster backup's configuration.
  • [Cluster] Avoid list creation when throwing an exception.
  • [Archive] Add ArchiveTool mark-valid, mark-invalid commands. These provide a way to patch the catalog in an emergency.
  • [Cluster] Ensure that the ClusterMarkFile link is created using the parent directory from the MarkFile object.
  • [Driver] Add stricter validation on control addresses, including: Require control address with control-mode=dynamic. Allow control addresses on non-MDC unicast publications. Add clearer validation on control-mode when using tags.
  • [Driver] Introduce an enum to track the control mode specified on Channel URIs.
  • [Driver] Update pub-pos when updating pub-lmt.
  • [Java Driver] Check if CnC file has error log buffer allocated.
  • [Driver] Print usable space when throwing StorageSpaceException or returning an error.
  • [C Samples] Make AeronStat respect update interval option. AeronStat was effectively ignoring -u and incorrectly using -t instead.
  • [Java] Fix NullPointerException in LogBuffers when construction fails with an exception.
  • [Driver] Add counter to represent the number of bytes mapped by the Driver.
  • [Driver] Pass in setup triggering SMs into flow control so that tags can be matched for controlling setup sender limiting.
  • [C] Fix client image reference counting by use the appropriate literals to ensure that 64-bit parameters are used.
  • [Cluster] Call unexpectedTermination on incompatible app versions in the ConsensusModuleAgent.
  • [C Driver] Implement low storage warnings for the C driver.
  • [Java Driver] Backoff from sending when a short send it detected by polling for status messages as a means to provide a little breathing room for underlying stack.
  • [Cluster] Detect when log subscription in an election has an error, such as bind exception, throw an exception giving context and restart election.
  • [Cluster] Close log subscription after prepareForNewLeadership.
  • [Cluster] Introduce SnapshotDurationTracker to track the time taken for snapshots in the Cluster.
  • [Java] Rename aeron-version module to aeron-annotations.
  • [C Driver] add max_retransmission_length.
  • [Java] Remove suffix from version.
  • [Cluster] Stop log recording even if an image has not been picked up and no need to try stop the recording by identity if stopped by log subscription id.
  • [Cluster] Increase visibility from private to package-protected for a number of ClusterTool utility methods.
  • [Cluster] Add STANDBY as a component type to cluster mark file codec.
  • [Cluster] Add cluster services directory to the cluster mark file and allow it to be set via the ConsensusModule.Context. This means that ClusterTool can resolve the location of the service container mark files even if they are not stored in the same directory.
  • [C++] Use static constexpr for declaring constants.
  • [C/C++] Use functions to return version information to enable runtime version checks against the media driver.
  • [C++ Wrapper Client] Allow to access the underlying client of the C++ wrapper.
  • [C Driver] Fix error reporting for aeron_port_manager.
  • [C Driver] Implement timestamp capturing for the recvmsg path.
  • [C Driver] Switch sender poller to poll for a single SM, i.e. do the recvmsg syscall.
  • [C Driver] Add additional validation for frame_length on status messages.
  • [C Driver] Fix error format strings when configuring sockets for the udp transport.
  • [C/C++] Remove date/time from the version files for a reproducible build.
  • [C] Fix line ordering bug and add missing return statements and error appending.
  • [Driver] Allow publication image flow control under runs if they are heartbeats so a stream can be kept connected and to get a more accurate EOS when using MDS.
  • [C Driver] Use correct type for array length calculation, fix #1539.
  • [Driver] Track EOS position per image connection for MDS.
  • [C++ Wrapper] Fix maxMessageLength.
  • [C++ Wrapper] Fix FragmentAssembler.
  • Upgrade to AsciiDoctorJ 2.5.10
  • Upgrade to JGit 5.13.2.202306221912-r
  • Upgrade to Versions Plugin 0.50.0
  • Upgrade to ByteBuddy 1.14.10
  • Upgrade to ASM 9.6.
  • Upgrade to Agrona 1.20.0
  • Upgrade to JUnit 5.10.1
  • Upgrade to SBE 1.30.0

1.41.5

09 Nov 09:03
Compare
Choose a tag to compare
  • [Java] A leader should assert its leadership when a follower requests a vote and the leader has a more up-to-date log rather than re-initialising an election which could result in log truncation.
  • [Java] Change role to leader after winning election so leadership can be asserted during replay or replication.
  • [Java] Log event for unknown session close in service container rather than throw and exception.

1.42.1

01 Sep 17:22
Compare
Choose a tag to compare
  • [Java] Ensure that the LoggingErrorHandler instance is closed when wrapping a user-defined ErrorHandler.
  • [Java] Invoke background work when idle and service is active so external connections from a cluster can be maintained.
  • [Doc] JavaDoc clarifications on MediaDriver dirDeleteOnStart behavior.
  • Upgrade to Agrona 1.19.2.
  • Upgrade to ByteBuddy 1.14.7.

1.42.0

21 Aug 01:31
Compare
Choose a tag to compare

Register here for Aeron Community Meetups - 12 October London / 18 October NY / 16 November Chicago.

  • Add port manager to C and Java drivers to allow for a limited range of ports that can be used when subscription endpoint addresses and publication control addresses specify a port of 0. This can make network access configuration simpler (Driver).
  • Wait for end of stream event on the log instead of the counter becoming unavailable before entering into a new Election (Cluster).
  • Close log publications before trying to stop recording to speed up graceful leader step down (Cluster).
  • Ignore resting subscription positions when calculating join position or draining driver entities when tethering is being used (C Driver).
  • Extensions points to support Standby Snapshots (Cluster).
  • Ensure that the clusterDirectoryName field is synced with the clusterDir configuration parameter during conclude in ConsensusModule and ClusterBacker (Cluster).
  • Cluster tutorial updates (Documentation).
  • Extract invocation of background work in the service container.
  • Do not fail if Aeron directory exists, but the CnC file does not (C Driver).
  • Use aeron_errcode to get the latest error code when reporting problems creating the Aeron directory (C Driver).
  • Don't let a bounded replay go beyond counter value to stop position so commit position can be used for replay (Archive).
  • Add addition example Authentication and Authorisation services (Archive/Cluster).
  • Add additional documentation to specify details when Authorisation is used (Archive/Cluster).
  • Clarify logic about extending a replay while being bounded (Archive).
  • Changes to host name resolution on start up (Driver).
    • Perform host name resolution once and track its execution time via the duty cycle tracker and the event log.
    • Use <unresolved> as a host name if it cannot be resolved instead of null.
    • Fix GCC 9 warning
    • Await initial counters being updated by the conductor thread before reading the values.
  • Trigger graceful leader close election based on recording stop signal (Archive).
  • Add end of stream position to Subscriptions (Client).
  • Allow for relocatable mark files for the ConsensusModule, ClusteredServiceContainer, and ClusterBackup (Cluster).
  • Move close operations on MDS transports on the conductor not the receiver thread (C Driver).
  • Allow preparing for new leadership to be less serial to reduce election time (Cluster).
  • Async removal of destinations as log adaptor closes when preparing for election (Cluster).
  • Fix CMD_OUT_ERROR log format (C Driver).
  • Fix aeron_err_clear() (C).
  • C driver handle untethered subscriptions correctly, ensure that tethering behaviour matches Java driver (C Driver).
  • Fix name in toString (Java Client).
  • Improve error message (C++ Archive Client).
  • Clean up Apple M1 compilation. Move loss reporter function into compilation unit. Add pragmas to account for unused but set variables (C).
  • Add logging to track information when a ReplicationSession ends (Archive).
  • Add deduplication step for aeron-agent jar.
  • Add deduplication step for aeron-all jar.
  • Add an annotation processor to generate a version class for a number of the Aeron packages.
  • Include the git sha in the version C binaries.
  • Extract untetheredWindowLimit method.
  • Upgrade to SBE 1.29.0.
  • Upgrade to JUnit 5.10.0.
  • Upgrade to Agrona 1.19.1.