Skip to content

Releases: real-logic/aeron

1.35.0

09 Aug 16:21
Compare
Choose a tag to compare
  • [Java] Fix truncation of linger timeout in ChannelUriStringBuilder which lead to a short linger of Archive replays.
  • [Java] Remove incorrect publication linger validation.
  • [C] Add sanitize build for MSVC and fix issues found.
  • [C] Add missing free of counters associated with Cubic congestion control.
  • [C++] Fix missing use of FragmentAssembler in Archive response and clean up type warnings.
  • [Java] Fix packaging declaration in POM file.
  • [Java] Separate thread factories for replay and recording agents in Archive for when setting thread affinity is required.
  • [Java] Javadoc improvements.
  • [C] Agent logging fixes. PR #1198.
  • [Java/C] Support a list of bootstrap neighbours for fault tolerance in gossip protocol for driver naming.
  • [C] Handle connection reset without error when polling a socket on Windows.
  • [C++] Don't progress with archive connect until response subscription is available. PR #1196.
  • [Java] Use async publication adding for response channels from the Archive and response channels for egress and backup queries from the Cluster to reduce latency pauses for existing operations.
  • [Java] Ability to add publications asynchronously to Aeron client.
  • [C/Java] Support timestamping of packets for channel send and receive plus media/hardware receive timestamping if supported. PR #1195.
  • [Java] Ensure termination hook is run on unexpected interrupt during cluster election.
  • [Java] Reset cluster election state if in election and an exception happens outside the election work cycle.
  • [Java] Finish deleting pending archive recording for deletion on shutdown.
  • [Java] Ensure cluster log recording has stopped before restarting the election process to avoid spurious election failure from past recording stopping.
  • Upgrade to Google Test 1.11.0.
  • Upgrade to Mockito 3.11.2.
  • Upgrade to ByteBuddy 1.11.9.
  • Upgrade to Gradle 7.1.1.
  • Upgrade to SBE 1.24.0.
  • Upgrade to Agrona 1.12.0.

Java binaries can be found here.

1.34.0

16 Jun 16:27
Compare
Choose a tag to compare
  • [Java]: added nanoClock to AeronArchive.Context to control time more directly. PR #1188 .
  • [Java]: added ClusterBackup.Context.toString.
  • Various changes for Cubic congestion control, Status Message generation, and overrun determination to handle high loss scenarios with congestion control better.
  • [Java]: use separate archive contexts for local and remote archive clients in cluster backup. Local archive must be configured to use IPC.
  • [Java]: relocated ByteBuddy in agent jar.
  • [Java]: support constructing a ChannelUriStringBuilder from an existing URI. PR #1186 .
  • Several improvements to handling initial name resolution failures for cluster and cluster clients when using name resolution from containers.
  • [Java]: improve tag usage for IndexedReplicatedRecording example.
  • [Java]: more information included in extendRecoding failures.
  • Added name resolution logging to agents.
  • Append cycle time threshold to counter label.
  • [Java]: support connecting to a cluster when a minority of the members are not active in a name service.
  • [C]: retain entropy in large collections for hashing and include full range of possible masks for UINT32.
  • [Java]: timeout Archive replication if recording subscription endpoint fails to resolve.
  • [Java]: added AeronEvent exception type that does not generate a stack trace.
  • MDC manual destinations can now be initially unresolved.
  • [Java]: Fix NPE on cluster client after multiple redirects. PR #1179.
  • [C]: improve common hash functions. PR #1178.
  • Various fixes for re-resolution of endpoints and adding more tests to re-resolution scenarios.
  • [C]: add interface URI param to MDC publication channels.
  • [Java]: MDS will now use the base subscription URI for congestion control, receive window, and socket buffer URI params.
  • Upgrade to SBE 1.23.0
  • Upgrade to Agrona 1.11.0
  • Upgrade to Versions 0.39.0
  • Upgrade to Unit 5.7.2
  • Upgrade to Gradle 7.0.2
  • Upgrade to Shadow 7.0.0
  • Upgrade to Mockito 3.10.0, then to 3.11.1
  • Upgrade to ByteBuddy 1.11.0, then to 1.11.2

Java binaries can be found here.

1.33.1

14 May 20:54
Compare
Choose a tag to compare
  • [C] Fix clean up in CSV name resolver on error.
  • Improve error messages for channel URI configuration and clash errors.
  • [Java/C++] Add missing arguments for full replicate and tagged replication API to Archive.
  • [Java] Avoid channel leak on error configuring send and receive channel.
  • [Java] Avoid double suffix of exception category to message for RegistationException.
  • [Java] Allow setting of socket and receiver buffer lengths in ChannelUriStringBuilder from ChannelUri with short form human friendly names.

Java binaries can be found here...

1.33.0

10 May 20:38
Compare
Choose a tag to compare
  • The focus for this release has been a significant rework of cluster to make consensus more robust especially in recovery scenarios. We consider this the penultimate release to cluster being GA. As of this release we plan to stabilise the API and only make breaking changes if a significant issue is raised by a customer on commercial support.
  • Expand the range of channel URI params supported by the archive on a per stream basis.
  • Add support for dynamically switching debug logging on and off. PR #1155.
  • Add debug logging support for flow control.
  • [C] Fix memory leak and reassembly of fragmented message greater than 8K in client.
  • Fix short send of recording start event when tracking recording progress. PR #1155.
  • Improve clean up of subscriptions and control sessions in the Archive when failures occur.
  • [Java] Fix bug with flow control gtag being carried over erroneously which can cause issues with ReplayMerge and other features dependent on group flow control semantics.
  • Reduce the number of memory fences used with min and tagged flow control.
  • Set initial window segments to 10 for Cubic congestion control and fix issue measuring RTT in the presence of loss.
  • Add the ability to configure archive replication channel on a per operation basis. This enables the setting of congestion control and socket buffer lengths which are important for cluster backup.
  • Use Archive replication for cluster replication, dynamic join, and cluster backup. This requires the cluster and archive config to be correct as configuration errors will not be evident until used - be careful of using localhost for endpoints.
  • Check tag for match when reusing send channel endpoint. PR #1147.
  • Add the ability to configure socket buffer and receive window on a per channel basis. PR #1143.
  • Rework Cluster backup and dynamic join to use archive replication.
  • Add support for using a 0 port for cluster catchup endpoints.
  • [Java] Better clean up of allocated resources in the driver when failures occur so it can continue without leaks.
  • [Java] Reduce linger on explicitly closed resources in the client.
  • [C/C++] Improve the performance of pre-faulting memory mapped file on Linux and Windows. PR #1127.
  • [C/C++] Clean up warnings in Windows build.
  • Improve Javadoc.
  • Provide sender and receiver with their own cached clocks to be more responsive and isolated from conductor stalls.
  • Add new counters to detect work cycle stalls which track max work cycle latency and count of threshold exceeded observations.
  • Continue to send status messages and heartbeats when running in DEDICATED or SHARED_NETWORK thread modes to keep connections alive if the driver stalls due to DNS lookups or file IO.
  • Reduce the number of commands from client from 10 to 2 per work cycle to help prevent timeouts and reduce latency pauses.
  • Improve validation of adding destinations to publications.
  • Better handling of race conditions when clients and driver are started/restarted at the same time.
  • Extend debug logging events.
  • Improve diagnostics collection on failed cluster tests.
  • Add disable event codes for debug logging so all can be enabled and merged with a disabled set.
  • Add error stacks to C driver to aid debugging of issues.
  • Add storage space warnings and specific exception codes on errors returned to archive client. Archive has new config for low storage thresholds.
  • Detect archive failures in cluster so appropriate action can be taken.
  • Propagate recording errors from the archive back to the archive client that initiated the failed operation.
  • Add specialised ClusterTerminationException for expected cluster termination.
  • Reduce network syscalls with Java 11+ for higher numbers of active streams.
  • Respond to cluster client with session open event only after the open session is successfully appended to the cluster log.
  • Upgrade to Version 0.38.0.
  • Upgrade to BND 5.3.0.
  • Upgrade to Mockito 3.9.0.
  • Upgrade to ByteBuddy 1.10.22.
  • Upgrade to JUnit 5.7.1.
  • Upgrade to Gradle 6.8.3.
  • Upgrade to SBE 1.22.0.
  • Upgrade to Agrona 1.10.0.

Java binaries can be found here...

1.31.2

14 Feb 09:28
Compare
Choose a tag to compare
  • Respond to cluster client with session open event only after the open session is successfully appended to the cluster log.

Java binaries can be found here...

1.32.0

26 Jan 19:30
Compare
Choose a tag to compare
  • [C/Java] Fix unexpected image unavailable when a rush of connections comes in for MDC or multicast publication. Issue #1115.
  • Increase default flow control receiver timeout from 2 to 5 seconds.
  • [Java] Cluster performance improvements.
  • [Java] Improve liveness tracking for followers catching up with a cluster leader when service logic is running slow.
  • [Java] Configuration option for cluster log consumption fragment limit.
  • [Java] Improve coordination of Cluster services during an election for log catchup and state changes.
  • [Java] Rework Cluster elections to better handle edge conditions in resource limited environments.
  • [Java] Add multicast support for cluster log channel.
  • [C++] Add missing methods to ExclusivePublication so it is compatible with Publication.
  • [C] Support compatible command line options for the C driver when running on Windows.
  • [C] Fix the deletion of directories on driver shutdown when running on Windows.
  • [C] Fix the transposed observation times in the loss report.
  • [C/C++] Migrate the C++ client tools to wrap the C tools for AeronStat, DriverTool, LossStat, and ErrorStat.
  • [C] Reduce memory footprint and copying in client when sending driver commands.
  • [Java] Delete Archive segments asynchronously when purge, truncate, or delete operations are carried out so that deleting a large number of segments does not block the Archive conductor so that the Archive stays responsive. A new RecordingSignal has been added for tracking the completetion of the delete.
  • [C/Java] Run Cluster system tests against both the Java and C Media Drivers.
  • [C/Java] Complete logging and align of feature set with the same configuration that can applied to the Java or C media drivers. PR #1091.
  • [C] Support URIs larger than the label length on publications and subscriptions in the C media driver to be compatible with the Java media driver.
  • [Java] Add Java 16-ea to the test matrix.
  • [Java] Improve tracking of connection activity to more accurately detect the need for address re-resolution.
  • [C++] Improve samples for better usage illustration and error reporting.
  • [C] Complete the feature set for the C client so the C++ wrapper client is a pure wrapper, e.g. provide access to a late bound port for a Subscription.
  • [Java] Allow the setting of different error handler when polling a Subscription, e.g. use a RethrowingErrorHandler to propagate the error out the caller and stop progress.
  • [C] Fix throughput issue with C Media Driver debugging logging.
  • [Java] Support variable length entries in Archive Catalog and allow for complete purging of old entries. Requires migration. PR #1069.
  • [Java] Reduce memory footprint and copying in client for sending driver commands.
  • [Java] Improved Javadoc.
  • Upgrade to Checkstyle 8.38.
  • Upgrade to ByteBuddy 1.10.19.
  • Upgrade to Mockito 3.7.7.
  • Upgrade to Versions 0.36.0.
  • Upgrade to Gradle 6.7.1.
  • Upgrade to SBE 1.21.0.
  • Upgrade to Agrona 1.9.0.

Java binaries can be found here...

1.31.1

02 Nov 17:04
Compare
Choose a tag to compare
  • Fix bug in C++ client managing images under a subscriptions due to bug with GCC 7.3.1 failing to emit an acquire fence.
  • Fix bug with cleaning up log buffers which could result in segfault in native driver.
  • Fix bug in C++ client with putValueVolatile.
  • Add AeronException.Category name to the beginning of error message to indicate the severity in the DistinctErrorLog.
  • Improved Javadoc.
  • Schedule Status Messages with more relaxed memory ordering for a ~3% throughput improvement in the Java driver.
  • Memory order fix for scheduling NAKs and Status Messages in native C driver.
  • Enable higher-resolution timers on Windows for native driver so sleep periods less than 16ms.
  • Upgrade to Mockito 3.5.15.

Java binaries can be found here...

1.31.0

14 Oct 16:19
Compare
Choose a tag to compare
  • Handle failed log buffer delete in C media driver on Windows. This can happen when a client holds a mapped file open and the driver tries to delete it. PR #1073.
  • Increase default client liveness timeout from 5->10s and publication unblock timeout from 10-15s to be softer on clients that experience bad GC pauses or run in resource starved environments.
  • Add C++ ChannelUriStringBuilder#initialPosition method to set the initial position of a publication.
  • Add ownerId to publication limit counters for being able to track which client created a publication.
  • Improve javadoc and reduce the scope of some methods that should not have been public.
  • Fix C++ AtomicCounter::getAndSet.
  • Fix timer cancellation when scheduling in cluster. Issue #1071.
  • ReplayMerge now substitutes the endpoint from the replayDestination into the replayChannel to simplify configuration.
  • Support using a port of 0 on the replay destination for ReplayMerge so that it is assigned by the OS from the ephemeral range.
  • Support using a port of 0 on the replication channel between archives so that it is assigned by the OS from the ephemeral range.
  • Fix the ability to add and remove a destination with port 0 to an MDS Subscription.
  • New subscriptions now late join a stream at the min of existing subscriptions rather than max.
  • Fix implementation of ExclusivePublication::tryClaim in C++ wrapper client.
  • Add Cubic congestion control support to the C media driver. PR #1065.
  • Default to building the C++ archive client as part of the native build.
  • Improve the native Windows build for CLion.
  • Remove the need for having 7-Zip installed for native build on Windows.
  • Improve error handling for archive errors in the consensus module so warnings can be issued and retried.
  • Set media driver heartbeat to -1 on clean shutdown so it can be immediately restarted without waiting for driver timeout.
  • Add Clang 11 to build mix.
  • Add Java 15 to build mix.
  • Change stop replay failures in the cluster from errors to warnings.
  • Improve ExtendRecordingTest to be a better example.
  • Fix cluster tutorial scripts.
  • Improve samples code.
  • Upgrade to Checkstyle 8.36.2.
  • Upgrade to Shadow 6.1.0.
  • Upgrade to ByteBuddy 1.10.17.
  • Upgrade to HdrHistogram_c 0.11.2.
  • Upgrade to SBE 1.20.3.
  • Upgrade to Agrona 1.8.0.

Java binaries can be found here...

1.30.0

20 Sep 17:26
Compare
Choose a tag to compare
  • Add hooks so ATS (Aeron Transport Security) can be loaded as a premium feature on the C media driver. Issue #203.
  • Numerous improvements for the native driver on Windows.
  • Further refinement and additions to the C client which is currently at preview status.
  • Remove a number of data dependent loads caused by indirection to reduce latency outliers.
  • Improve logic for expansion of BufferBuilder for fragmented messages to be correct at extremes and to be more efficient.
  • Set ANY ADDR to correct protocol family for endpoint based on control when IPv6.
  • Scope Cluster Backup counters by cluster id.
  • Improve Archive client connect error messages.
  • Add deadline checking to C++ Archive client connect.
  • Improve the efficiency of counter searching.
  • Add extra validation for the relationships between timeouts.
  • Change tracking of untethered subscriptions so the bottom 1/4 rather then 1/8 of the window is used to make for easier eviction.
  • Add registration and owner id to counters to help avoid ABA issues and to aid monitoring.
  • Avoid updating the commit position counter when the consensus module is closed.
  • Improve active transport tracking to be more timely and accurate.
  • Make use of cached clocks when referencing counters to reduce system call overhead.
  • Improve ReplayMerge tests to show a better example of usage.
  • Add driver and hostname to re-resolution counter for Java and C media drivers.
  • Fix memory corruption with driver naming resolution events in C media driver.
  • Fix dynamic agent dissector logging for C media driver.
  • Improve liveness tracking for channels to reduce overhead and false sharing in the Java Driver.
  • Add a ChannelUriStringBuilder.toString() method.
  • Provide a registration id on the add and remove handler methods in clients so they can be removed by the registration id and not rely on the pointer or reference to the callback.
  • Allow the setting of port 0 on Archive and Cluster control response channels for clients so they are automatically allocated from the ephemeral range.
  • Improve native code use of atomics across all platforms and especially on Windows.
  • Improve error messages in the native driver to help indicate which is the offending command and URI.
  • Auto resize the Archive Catalog when full so the Archive does not need shutdown and manually extended.
  • Improve startup code for all clients finding a running media driver which is racing to start at the same time.
  • Support the C++ Archive client on Windows.
  • Set CMake 3.6.1 as the min required version.
  • Upgrade to JUnit 5.7.0.
  • Upgrade to HdrHistogram_c 0.11.1.
  • Upgrade to Version 0.33.0.
  • Upgrade to Checkstyle 8.36.
  • Upgrade to Gradle 6.6.1.
  • Upgrade to Mockito 3.5.10.
  • Upgrade to ByteBuddy 1.10.14.
  • Upgrade to BND 5.1.2.
  • Upgrade to SBE 1.20.2.
  • Upgrade to Agrona 1.7.2.

Java binaries can be found here...

1.29.0

21 Jul 16:10
Compare
Choose a tag to compare
  • Further refinement and additions to the C client which is currently at experimental status.
  • Improve error messages when parsing URI params.
  • Fix application of sparse terms in Java Media driver when not used on a per channel basis.
  • Add support for session based subscriptions on IPC and spies to the C media driver.
  • Use ssc (Spies Simulate Connection) only in cluster when membership size is 1. This avoids the leader racing ahead of followers which are catching up and a number of cases where the start of a recording can be missed.
  • Add the ability to have spies simulation connection (ssc) configured on a per stream basis for both Java and C media drivers.
  • Fix some false sharing issued introduced for channel re-resolution checking to give a tighter latency distribution.
  • Add state checks to Cluster operations so services do no use features at inappropriate times.
  • Rework build script to help IDEA recognise generated classes and not give false compilation errors.
  • Significantly improve throughput of C media driver when used with the Solarflare ef_vi premium extension to provide the best latency and throughput possible.
  • Fix short send counting in C media driver.
  • Change Archive session workers to behave more like normal Agents so that stack traces are more informative when debugging.
  • Improve error handling and cluster elections when dynamic membership is being used and increase test coverage.
  • Improve session checks when re-adding a publication with the same session id.
  • Refinements to Cluster Backup.
  • Change defaults for throughput tests to use 8k rather than 16k MTUs to better fit with jumbograms.
  • Close recording Archive recording subscriptions with autoStop = true that have an error on first image.
  • Detect Archive errors in Cluster so waiting operations can abort and be retried.
  • Fix aeron_ftruncate on Windows for native driver so it behaves more like Linux. This addresses races with client and driver starting at the same time which can result in a corrupt CnC file.
  • Avoid int overflow with Cluster snapshots greater than 2GB in length. PR #959.
  • Fix C++ client compile for CentOS 7 with GCC 4.8.5.
  • Add flow control (fc) and group tag (gtag) URI params to Archive stripped channels.
  • Configurable buffer length for Archive record and replay file operations to control batch size via aeron.archive.file.io.max.length. New default shows a marked increase in throughput and reduced latency in all our tests.
  • Capture logs from failed Cluster tests to aid debugging.
  • Agent logging for untethered subscription state changes in Java and C media driver.
  • Expanded agent logging for archive activities to aid debugging.
  • Fix segfault in C media driver if transport cannot bind.
  • Add Java 14 to CI.
  • Add native sanitize builds to CI.
  • Upgrade to Versions 0.29.0.
  • Upgrade to Checkstyle 8.34.
  • Upgrade to Mockito 3.4.4.
  • Upgrade to BND 5.1.1.
  • Upgrade to ByteBuddy 1.10.13.
  • Upgrade to HdrHistogram 0.11.0 for C.
  • Upgrade to Gradle 6.5.1.
  • Upgrade to SBE 1.19.0.
  • Upgrade to Agrona 1.6.0.

Java binaries can be found here...