- Memory align allocated buffers in
PublicationTest
so it works on Apple M1 processors. - Check that
NoOpLock
is only allowed to be used when using Aeron client in invoker mode. - Handle case of a delayed concurrent offer to a publication in which other threads have raced terms ahead without throwing an exception.
- Collapse term appenders into publications to reduce memory footprint and avoid data dependent loads.
- Short circuit Image polling operation when bound limit is less than current position to prevent term overrun.
- Add different aliases for consensus module/service container subscriptions. PR #1366.
- Stop an active cluster log replay when
ClusterBackup
is closed rather than waiting for timeout. - Send unavailable counter events to Aeron clients when a client closes or times out.
- Allow Consensus Module Agent to be run via an Invoker in addition to having its own thread.
- Apply liveness checks to Archive and Cluster mark files so that multiple instances cannot be run in the same directory and corrupt files.
- [Java] Use fixed format for timestamps in agent debug logs.
- Allow Archive replicate to overwrite all metadata for an empty recording.
- [C] Handle log buffer files with
term_length == AERON_LOGBUFFER_TERM_MAX_LENGTH
on Windows. PR #1360. - [C] Fix inclusion of symbols for debug builds on Windows.
- Remove
localhost
defaults for Archive and Cluster to help avoid mis-configuration in production. PR #1356. - Await 'REPLICATE_END' when catching up as a follower across multiple leadership terms to avoid clashing session-id.
- Allow setting of receive socket buffer and window on cluster log channel subscribers. PR #1345.
- Fix application of send socket buffer lengths as configured when using MDC.
- Fix
ArchiveTool.dump
when fragment length is set <= 0. - Capture closing sessions into snapshot so session close event is lost on cluster shutdown.
- Remove brackets from counters labels to make it easier for extract to Prometheus.
- Send cluster client session open acknowledgement before appending to the log to avoid race with service sending egress on open event. Issue #1351.
- [C] Fix off by one error local socket address into channel indicator counter.
- Add protocol version support to cluster consensus protocol.
- Add more context to error messages on Archive
ReplaySession
. PR #1349. - Apply strict validation of consensus module snapshot state when messages are offered from clustered services. A number of customers have not been strict with all cluster nodes being deterministic and doing exactly the same thing which can result in corrupted and diverged snapshots.
- Consensus module state snapshot can be inspected with the
describe-latest-cm-snapshot
option toClusterTool
. - If a consensus module snapshot is shown to be corrupt it may be fixed by running
ConsensusModuleSnapshotPendingServiceMessagesPatch
and if non-support customers wish to have help then they can contact sales@aeron.io. The patch can fix the leader and the fixed snapshot then needs to be replicated to the followers which can be done withAeronArchive.replicate
using the correct recording ids. - Add a tool to replicate a specific recording between archives. PR #1363.
- [C++] use
getAsString
calls for pollers for record descriptors for channel fields. Add test from PR #1348. - Add
ClusteredService.doBackgroundWork
which can be used for maintaining external connections beyond ingress and egress. - Increase default message timeout from 5 to 10 seconds for Archive clients.
- Add EOS flag to status messages (SMs) once a stream is totally received so the sender can take clean up action.
- When EOS status message is received by a sender then allow the publication linger on unicast to be cut short so resources are received sooner.
- When EOS status message is received by a sender then remove the receiver from flow control for multicast and MDC with tagged and min FC.
- Fix the closing of session specific subscriptions to prevent resource leak.
- Add scripts for testing raw network performance on Windows.
- Close egress from cluster on change of leader so clients can detect it before a new leader is elected.
- Don't timeout and close cluster client session if quorum cannot be temporarily reached.
- Add logging support for
ClusterBackup
state changes. - Close cluster clients when complete cluster is restarted.
- Support automatic reconnect from cluster client when the same leader is re-elected after a net split or temporarily loosing quorum.
- Add authentication for
ClusterBackup
to a cluster. - Validate Archive mark file length before reading when mapped read-only to avoid access violations.
- Preserve iteration order for cluster client session based on session id so snapshots can have binary compatibility.
- Capture leadership term id for cluster backup queries.
- Account for padding when sweeping pending services messages to avoid out of bounds exception.
- Prevent
-1
leadership term ids appearing in theRecordingLog
. - Allow Archive replication and replay request to specify session level file IO max buffer length for throttling a stream.
- Add support for custom app version validation to clustered services with
AppVersionValidator
. - Add false sharing protection to
DutyCycleTracker
. - Update doc on
ReplayMerge
to indicate theAeronArchive
client should not be shared. Issue #1340. - Upgrade to Versions 0.43.0.
- Upgrade to Mockito 4.8.1.
- Upgrade to Google Test 1.12.1.
- Upgrade to JUnit 5.9.1.
- Upgrade to ByteBuddy 1.12.18.
- Upgrade to Gradle 7.5.1.
- Upgrade to SBE 1.27.0.
- Upgrade to Agrona 1.17.1.
Java binaries can be found here.