Skip to content

Releases: real-logic/aeron

1.22.1

11 Oct 21:42
Compare
Choose a tag to compare
  • Fix command message validation which failed to take account of message offset. Issue #690.
  • Address some false sharing issues in the Java and C++ clients which can add 50ns of latency to RTT.
  • Provide original channel URI in error message when parsing fails to port for an endpoint address. PR #714.
  • Rewrite messages from older clients to the archive to allow for gradual upgrade of clients to the new archive. This support will last for only one minor version.
  • Separate versioning schema for network protocol from file formats for the archive to allow them to evolve independently.
  • Only check concurrent recording limits upfront in the archive to avoid later asynchronous errors.
  • Reclaim mapped memory for IPC publications as soon as ref count is 0 and drained by subscriptions without going into 10 second linger.

Java binaries can be found here...

1.22.0

09 Oct 06:16
Compare
Choose a tag to compare
  • This release increases the major version on the archive wire protocol and file format. To upgrade it is necessary to update all archive clients and the archive at the same time. Also an archive migration is required by running the CatalogTool with the migrate option. Be sure to backup the archive first before doing a migrate.
  • Add recording signal reporting on the control stream for an archive. The RecordingSignalAdapter can be used to track signals of operations happening to recordings such as START, STOP, EXTEND, REPLICATE, MERGE, etc.
  • Improved Javadoc for archive configuration.
  • Improved checking for clashing session-ids for manually configured publications.
  • Reduce heartbeat updates to mark files to once per second to reduce IO traffic.
  • Reclaim mapped memory for images by not lingering when the last subscription is closed. This can reclaim the mapped memory 10 seconds sooner by default.
  • Fix ref counting to send channel endpoints which could cause a stream to get stopped early when multiple publications use the same channel.
  • Add Archive replication feature which replicate a recording from one archive to another with the option of merging with a live multicast stream and continuing to support multiple redundant recordings.
  • Reduce Java memory footprint of Archive client.
  • Reduce default max concurrent recordings and replay in the archive from 50 to 20.
  • Improve consistency of error codes and command validation to both Java and C Media Drivers.
  • Add Image.activeTransportCount() to track active transports when using MDS which can be used to make ReplayMerge more reliable.
  • Add correlation id to RegistrationException to help with debugging.
  • Allocate non-sparse files in Java media driver at safepoint to help avoid Time-To-SafePoint (TTSP) issues.
  • Add the ability to configure congestion control as a channel URI param with the cc=static or cc=cubic options.
  • Handle channel endpoint errors in the C++ client.
  • Add support to the Java client for adding an removing destinations to publications and subscriptions asynchronously.
  • Catch errors when opening receive destinations and report them to the client.
  • Clean up bound ports on Windows when destinations are removed from MDS Subscripitons.
  • Improve error messages on channel conflicts.
  • Add rejoin URI param to channels so that when an image gets timed out to configure if it should stream or not.
  • Don't try to send archive client close messages when publication is not connected to avoid exceptions.
  • Improve reliability of counter active and reuse checks.
  • Clean up pending setup messages when a channel when endpoints are closed.
  • Use heartbeat timestamp counters to indicate client liveness rather than command messages. This gives more stable behaviour on configurations with multiple clients sending many commands.
  • Reworking of C Media Driver internals to more easily accommodate other media APIs such as ef_vi and DPDK.
  • Add option to delete the aeron.dir on shutdown of the media drivers.
  • Make MediaDriver.close() idempotent.
  • Abort further reading of archive control stream once listed descriptors have been read so further messages are not missed.
  • Improve reliability and precision of ReplayMerge.
  • Update session-id in catalog entries when an archive recording is extended.
  • Add 'group' URI param to indicate if receiver group semantics, e.g. multicast NAK semantics, can be applied to Multi-Destination-Cast.
  • More efficient and less allocating IP address dissection in logging agent.
  • Change Java RecordingReader and CatalogTool so they can read active recordings.
  • Improve handling of thread interrupt in Java client and archive client.
  • Add INVOKER option and config check to C media driver.
  • Add Java client Aeron.Context.awaitingIdleStrategy() configuration option for what to use when making a synchronous call to the driver.
  • Add log started event with timestamp when logging is enabled.
  • Add cncVersion to configuration print on driver start.
  • Fix potential out of bounds access for bytes received update in C media driver.
  • Upgrade to Checkstyle 8.24.
  • Upgrade to Mockito 3.1.0.
  • Upgrade to javadoc-links 4.1.2.
  • Upgrade to Gradle 5.6.2.
  • Upgrade to build-scan 2.4.2.
  • Upgrade to SBE 1.13.3.
  • Upgrade to Agrona 1.0.8.

Java binaries can be found here...

1.21.2

19 Aug 17:13
Compare
Choose a tag to compare
  • Add client close handler to C++ client which can be used to detect close after client/driver timeouts for cleanup. It will be called on any client close including the shared pointer going out of scope and will be called only once.
  • Try to call all the unavailable handlers in Java and C++ clients regardless of how the client gets closed, especially in the case of timeouts.
  • Add addition relevant fields to Image.toString() method for debugging.
  • Correct log position in some cluster event messages which had the potential to be wrong.
  • Upgrade to SBE 1.13.2.

Java binaries can be found here...

1.21.1

14 Aug 20:00
Compare
Choose a tag to compare
  • Enable timestamping of sequenced events in cluster at greater precision than milliseconds.
  • Avoid seg faults by not incrementing error counters when starvation timeouts occur.
  • Check for thread interrupt in spin loops so agents can be interrupted and tests can abort more cleanly.
  • Coordinate agent shutdown in the Archive on timeout for a more clean shutdown.
  • Detect timeouts due to resource starvation in Archive and Cluster and terminate to avoid seg faults.
  • Allow the setting of an Aeron client in the Archive without an invoker.
  • Upgrade to javadoc-links 3.8.4.
  • Upgrade to SBE 1.13.1.
  • Upgrade to Agrona 1.0.7.

Java binaries can be found here...

1.21.0

02 Aug 17:16
Compare
Choose a tag to compare
  • Complete work on IPC messages from services and reliable timers for Cluster.
  • Simplify logic in Image.controlledPeek methods and correct return value on closed on Java client.
  • Support OSGi manifest headers. PR #690.
  • Add missing Javadoc to public classes.
  • Add AeronException.Category enum to Aeron exceptions for Java and C++ by separating warn, error, and fatal categories of exception.
  • Ability to add and remove close handlers on Java Aeron client to avoid use after close and segfaults due to unmapped files.
  • Check for Aeron client close in Archive due to starvation to avoid segfaults.
  • Remove layer of indirection from Subscription to Image in C++ client to help avoid cache misses.
  • Update licence references to https.
  • Upgrade to Mockito 3.0.0.
  • Upgrade to Checkstyle 8.23.
  • Upgrade to javadoc-links 3.8.1.
  • Upgrade to Gradle 5.5.1.
  • Upgrade to SBE 1.13.0.
  • Upgrade to Agrona 1.0.6.

Java binaries can be found here...

1.20.0

12 Jul 17:00
Compare
Choose a tag to compare
  • Add pre-touch option for memory mapped files in clients to fault in pages to reduce latency spikes on first cycle around log buffers.
  • Rework C++ client to share log buffer mappings between publications and subscriptions when possible to reduce mapping costs.
  • Rework C++ client to manage images via shared_ptr to help avoid memory reclamation issues. Issue #467.
  • Rework management of C++ client resources to be more O(1) when reacting to events from the driver.
  • Set error handler on Aeron client in Archive client when set. PR #687.
  • Check for reentrant calls to Aeron client from C++ callbacks and call error handler if detected.
  • Add watch option to Java AeronStat and separate out counter reader. PR #684.
  • Tighten up logic to avoid use of C++ Aeron client after close.
  • Replace division operations with shifts where possible to improve performance on startup in Java implementation.
  • Support adding and removing counters availability handlers after client connect and to support multiple handlers in Java and C++ clients.
  • Add the ability to do archive replays bounded by a counter to Java and C++ implementations.
  • Improve and expand Java and C++ samples.
  • Some fixes for the Windows native build which is still experimental.
  • Remove unused linger feature from flow control to reduce footprint and improve performance.
  • Fix concurrency issue with buffer cleaning which could result in a stream locking up and being in a permanent back-pressure state.
  • Add stopAllReplays operation to the Archive which can be on a specific recording or wildcarded to all recordings.
  • Don't treat explicit client closes as timeouts. PR #681.
  • Limit resend window to half a term length to avoid unnecessary under runs.
  • Add observed values in timeout exception messages. PR #680.
  • Reduce allocation when using logging agent and improve its performance.
  • Use more efficient clock implementations in C media driver.
  • Use correct message encoder when sending a stopReplay to the archive. PR #676.
  • Correctly initialise send and clean positions on publications when a non-zero start is required in the C driver.
  • Add semantic versioning to CnC files. Issue #624.
  • Fix Subscription::isConnected() in C++ client.
  • Many improvements to Cluster which is not yet GA.
  • Upgrade to Mockito 2.28.2.
  • Upgrade to javadoc-links 3.7.5.
  • Upgrade to Checkstyle 8.22.
  • Upgrade to Shadow 5.1.0.
  • Upgrade to SBE 1.12.8.
  • Upgrade to Agrona 1.0.3.

Java binaries can be found here...

1.19.1

26 May 17:44
Compare
Choose a tag to compare
  • Fix logging of cluster election events due to class loading clash with aeron agent.
  • Fix issue with snapshot on leader not recording which service message it had appended up to.
  • Upgrade to SBE 1.12.7.

Java binaries can be found here...

1.19.0

25 May 17:31
Compare
Choose a tag to compare
  • Add support for clustered services to send reliable ingress back into the cluster over IPC to be sequenced into the log.
  • Added aeron.client.close.linger.duration which can be set greater than the default of 0 to help clients in resource constrained environments, or long GC pause applications, from experiencing seg faults from unmapped files.
  • Close Java Aeron client when timeouts occur and delay before unmapping files to help prevent seg faults.
  • Add dump option to CatalogTool to dump out full details including recorded stream data. PR #669.
  • Provide read only view of Archive Catalog. PR #668.
  • Protect against contexts being used in multiple drivers or clients. PR #666.
  • Add support for channel tags to C media driver. Issue #622.
  • Make socket buffer config settings public for driver context.
  • Upgrade to javadoc-links 3.6.4 to allow for offline build.
  • Upgrade to hamcrest 2.1.
  • Upgrade to SBE 1.12.6.
  • Upgrade to Agrona 1.0.1.

Java binaries can be found here...

1.18.0

03 May 17:22
Compare
Choose a tag to compare
  • Various improvements and fixes for Aeron Cluster. Elections are becoming robust and the API is firming up.
  • Fix counter resource leak when cycling UDP publications with back pressure counters. PR #663.
  • Add tether support for local flow control to Java and C media drivers. This allows a subscription to declare itself as a tether or not on local flow control. If not a tether then it can be left behind if it stops or cannot keep up.
  • C and Java media drivers can optionally print their configuration on startup.
  • Greatly improved configuration for C media driver allowing configuration via properties files fetched from local file system or over HTTP, or via API for context. The list of files can be passed on the command line to aeronmd.
  • Include session-id in archive recording key regardless of using tags or not.
  • Abort Archive sessions if the response publication fails after successfully connected or when any other exception occurs during processing. This avoid infinite failure loop in the archive on some conditions.
  • Improve Javadoc.
  • Add channel param for indicating if EOS should be sent on close of publication or not.
  • Improve build of native driver on Windows.
  • Output from ctest on failure for native build.
  • Upgrade to io.freefair.javadoc-links 3.2.1.
  • Upgrade to Checkstyle 8.20.
  • Upgrade to ByteBuddy 1.9.10.
  • Upgrade to Mockito 2.27.0.
  • Upgrade to Gradle 5.4.1.
  • Upgrade to SBE 1.12.5.
  • Upgrade to Agrona 1.0.0.

Java binaries can be found here...

1.17.0

28 Mar 16:41
Compare
Choose a tag to compare
  • Add a BacklogStat tool for inspecting the backlog in bytes for consumers of streams. PR #650.
  • Faster startup and build time on Windows.
  • Reduce module warnings on Java 11.
  • Change default archive recording progress event channel to dynamic MDC to avoid PortUnreachableExceptions that cause garbage.
  • Add the ability to terminate a Java or C media driver by sending it a command. Useful for testing in a mixed language environment.
  • Fix issue with multi-destination subscriptions that are set up in advance. PR #649.
  • Add sender back-pressure event counters per stream for monitoring.
  • Improve AsyncConnect for cluster and archive clients and use it wrapped in the sync implementation.
  • Add min flow control strategy to the C Media Driver.
  • Improve toString() methods in Aeron wire protocol flyweights for reduced allocation and better performance.
  • Complete work on C++ Archive client.
  • Change Stats tools to use read only file mapping for safety and better NUMA performance.
  • Add back-off idle strategy to the C Media Driver.
  • Add C++ LossStat application.
  • Fix issues with Archive Catalog failing to load due to old version.
  • Clean up native build for Windows.
  • Complete work on ReplayMerge for both Java and C++ Archive clients.
  • Add writev support to SPSC C ring buffer. PR #644.
  • Add basic validation to configuration for client and unblock timeouts.
  • Add event codes and support logging in archive and cluster for major events. PR #646.
  • Upgrade Checkstyle DTD and apply checkstyle to method Javadoc.
  • Use HTTPS in generated Javadoc links and fix warnings under Java 11 and OpenJDK.
  • Report version numbers in conflict when connecting to archive or cluster.
  • Upgrade to Mockito 2.25.1.
  • Upgrade to Gradle 5.3.1.
  • Upgrade to SBE 1.12.4.
  • Upgrade to Agrona 0.9.35.

Java binaries can be found here...