- Allow
NameResolver
to be configured for theConsensusModule
in order to support custom name resolution when configuring the ingress channel. - Delay election state transitions if there is an active leader to avoid unnecessary reset and new election.
- Make
AeronCluster.asyncConnect
work completely asynchronously. Don't report exceptions to the error handler that are used for async resources. - Add a system property and API to allow changing a directory where an Archive mark file (
archive-mark.dat
) is stored. - Check the state of the interface when trying to resolve the multicast interface. Only use interfaces that are up. Issue #1387
- CnC file length validation. Issue #1410
- Fix issue of not capturing return code when recording signal arrives after an error to the archive client.
- Support migrating segments to the beginning or end of an existing archive recording.
- [C] Fix issue of using transport after it had been removed.
- [Java] Fix concurrent close of receive destination counters on multi-destination subscriptions.
- [C] Fix
remove_if
methods on pointer value maps which previously could miss an item. - Add debug logging for clustered service acking.
- Add a specific error for archive replication failing to create a remote connection.
- Fix leak with Archive replay session if the async publication has a session clash.
- Shorten duration of cluster election after a leader has closed gracefully.
- [C] Fix image rejoin by swapping correcting cooldown map insertion and removal. PR #1338
- Candidate ballot for 5+ node cluster cannot be cut short on quorum otherwise most up to date member may not be elected.
- [C] Allow for attempted recreation of an Image if initial attempt fails. PR #1435
- Perform most replay validations before sending OK to the client so errors are synchronous when starting a replay.
- Delete all recording segment files when a recording is truncated to its start position.
- Close
ArchiveMarkFile
last when shutting down Archive to capture all errors. - [C++] Apply
std::forward
to fragment handler to avoid unnecessary copy. PR #1405 - Fix handling of padding greater than max message length in Archive replay.
- Add debug logging for Archive recording signals.
- Close log subscription first when clustered service is cleanly closed to drop follower out of flow control as soon as possible.
- Drop cluster follower as soon as possible out of flow control to allow cluster to progress when follower is cleanly closed.
- [C] Report timeout accurately when driver keepalive beyond timeout. PR #1429
- Add ability to run Archive with only IPC control channels for clients.
- Add
ClusterTool.isLeader
method. - Add
Image
toSubscription
before calling available handler rather than after. - Set URI in receiver counters to match subscription channel.
- Add cluster member node state file and migrate out state that needs to be persistent, such as
candidateTermId
and member list, so the mark file can be in /dev/shm. - [C] Fix issue with removing naming resolver neighbor that deleted adjacent memory.
- [C] Improve socket error handling on Windows.
- [Java] Add
toString()
to many Aeron classes to help debugging. - [C] Improve parsing of unsigned 32-bit integers.
- [C] Set max of resource free queue length and resource free limit to
INT32_MAX
. This stops them being incorrectly set to 0 by aeron_config_parse_uint32 when comparing against int32 0. PR #1421 - Deprecate cluster dynamic join feature. This is to be replaced with a more robust and user friendly premium offering.
- [C] Fix counter leak when subscription fails.
- [C] Fix spy channel memory leak when destination is removed for multi-destination subscription.
- [C] Fix channel memory leak on error when creating publications or subscriptions.
- Fix NPE on timeout exception for cluster client in some connect states.
- [Java] Improve efficiency of URI parsing.
- [C] Fix error messages with incorrect varargs.
- Warnings clean up in codebase to have less noisy CodeQL analysis.
- Support having mark files for
Archive
,ConsensusModule
, andClusteredServiceContainer
to be in alternative directory such a /dev/shm so timeouts can be avoided when recording writes queue up on a network filesystem. - Add timestamp params to stripped channel for pass through to Archive operations.
- Queue resource freeing operations in driver to avoid timeouts when unmapping operations are slow.
- [C++] Work around compiler concurrency bug for
AtomicArrayUpdater
that can impact client Subscriptions causing image list to become corrupted. - Improve javadoc for recording signal usage.
- Be strict on handling cluster leader liveness to the current leadership term.
- Only try unblocking a client command after liveness timeout to avoid "lost" commands. PR #1369
- Make archive counters unique so multiple archives can run on the same media driver.
- Truncate files after
ArchiveTool.compact
is invoked to free disk space. - Fix basic auction cluster tutorial configuration.
- Improve
ClusterConfig
sample to allow for ingress configuration. - Add counters for the number of active recordings or replays in an Archive.
- Add counters for reporting on read and write operations in an Archive.
- Support allowing a
ClusteredService
being started before theConsensusModule
. - Improve false sharing protections for more consistent latency.
- Simplify
ReplayMerge
samples to not require entity tags. - Add batch script for launching low-latency media driver on Windows.
- Support message lengths greater than MTU in ping pong samples.
- Fix options handling in
cping
sample. - Improve handling of timeouts in cluster elections for more robust state transitions when network is unstable. Effects are more pronounced in 5+ member clusters.
- [Java] Add
Aeron.addAsyncSubscripiton
for non-block setup. - Compute source identity of images more precisely based on channel configuration.
- Improved handling of out of disk space errors.
- Support taking a cluster consensus module snapshot when member names are greater than MTU in length.
- Allow a follower to veto a member being elected cluster leader if they believe the leader is not valid. This is important in 5+ node clusters.
- Extend debugging for voting in cluster elections.
- Increment error counter when invalid version exceptions occur.
- Handle backpressure from commands between dedicated threads in driver with controlled polls to avoid live locks.
- [C] Add support for controlled poll operations on SPSC and MPSC ring buffers.
- Increase command queues to allow for more concurrent active changes in publications and images.
- Serve cluster backup queries from followers to take load from the leader.
- [C] Fix build when dot is used as thousands separator. PR #1372
- Upgrade to JUnit 5.9.2.
- Upgrade to BND 6.4.0.
- Upgrade to ByteBuddy 1.14.3.
- Upgrade to Mockito 4.11.0.
- Upgrade to Version 0.46.0.
- Upgrade to Gradle 7.6.
- Upgrade to SBE 1.28.1.
- Upgrade to Agrona 1.18.0.