Releases: real-logic/aeron
Releases · real-logic/aeron
1.25.1
- Log to ring buffer with zero copy semantics for improved logging performance. PR #831.
- Retain file handle after establishing mapping in Windows C++ client. Issue #826.
- Improve encoding performance of logging to file.
- Log all events in a consistent manner with standard header.
- Be consistent with the use of positional reads and writes in the archive for supported OS synchronisation and slightly improved performance.
- Configure Java
DistinctErrorLog
to be US-ASCII rather than UTF-8 for compatibility with native driver. - Run slow tests daily in CI.
- add
GNU_SOURCE
to clock for native builds on CentOS. - Upgrade to Agrona 1.3.0.
- Upgrade to SBE 1.16.1.
- Upgrade to JUnit 5.6.0.
Java binaries can be found here...
1.25.0
- Where possible only weave in logging hooks when enabled in the Java driver. This can help performance for those who are only logging a few events.
- Add ability to log the control channel responses from the Archive.
- Fix issue with truncating recordings when truncate position equals stop position and start of segment to ensure file is deleted.
- Fix issue with unaligned access to fields in
LossReport
. - Introduce interceptor bind framework to C driver for supporting loss testing, logging, and media layers other than BSD sockets.
- Apply system tests to C driver when running in CI. When apply this a number of bugs got fixed in the C media driver.
- Move CI from Travis to GitHub Actions and test on Windows, Linux, and OSX.
- Support for agent logging in the C driver to file to match Java with the
aeron.event.log.filename
. - Support for adding checksums to archive recordings as CRCs which can be verified to detect file corruption.
- Add support for applying and verifying checksums to recordings via
ArchiveTool
. - Add support for fixing recordings after after a system crash running an Archive.
- Improve crash recovery for the archive when restarting.
- Add cached clocks to C media driver to reduce the overhead of clock calls and improve performance, especially in cloud environments. Issue #606.
- Fix thread local storage for Windows C media driver. PR #795.
- Fixes for Windows C media driver. PR #794.
- Improve EOS reporting in
Image.toString()
method. PR #792. - Fix recovery of stop position in crashed archive when start position was non-zero.
- Provide API for for features that existed in
CatalogTool
in newArchiveTool
. - Don't linger replay publications in
ReplayMerge
so resources can be reclaimed sooner. - Default warning of Aeron direction existing on media driver start to false.
- Add poll support to C media driver on Windows. PR #784.
- Name log buffers based on correlation id.
- Provide timestamp with stacktraces in default client error logger. PR #774.
- Reject concurrent publications that specify
init-term-id
,term-id
, andterm-offset
. PR #773. - Add sample illustrating how to build an index and basic time series on a recording that is also replicated in
IndexedReplicatedRecording
. - Improve performance for getting
Header.position()
in Java fragment handler. - Add
BasicAuthenticator
to C++ archive client samples. - Fix issue with configuring threading mode in C media driver. Issue #785.
- Improve validation when extending recordings in the archive.
- Add
taggedReplicate
operation to the archive for replicating a stream with provided tags so an external subscription can follow along. - Don't update the recording position in the archive if an exception occurs during a write. Previous behaviour could have erroneously reported progress when disk was full or underlying storage failure.
- Fix issue in C media driver when a subscription could have go away yet the publication considered it was still connected.
- Fix issue with incremental build dependencies. PR #762.
- Fix recording events enabled property name.
- Add authentication support to C++ archive client.
- Upgrade to Agrona 1.2.0.
- Upgrade to SBE 1.16.0.
- Upgrade to JUnit 5.6.0-RC1.
- Upgrade to Checkstyle 8.28.
- Upgrade to HdrHistogram 2.1.12.
- Upgrade to ByteBuddy 1.10.5.
- Upgrade to Gradle 6.0.1.
- Upgrade to javadoc-links 4.1.6.
- Upgrade to Mockito 3.2.0.
- Upgrade to gtest 1.10.0.
- Upgrade to HdrHistogram_c 0.9.12.
Java binaries can be found here...
1.24.0
- Add bi-directional version identification to the archive network protocol
- Add support for authenticated sessions to the archive.
- Support setting of session-id on publications in the C media driver. Issue #623.
- Fix setting of initial position on an exclusive publication in the C driver when the initial position is beyond the first term. Issue #750.
- Allow for archive error log to be stored in archive mark file when running out of process from a media driver.
- Trim down unneeded dependencies in agent and all shadow JARs.
- Clean up allocated resources in C++ and Java clients when URI errors occur.
- Add
boundedPoll
toImage
for C++ and Java. Issue #744. - Only include what is used in C++ publication headers. Issue #743.
- Provide unique type ids to error counters. Issue #741.
- Add new archive control messages to agent logging and improve overall agent performance.
- Fix pointcut for Archive control message logging. Issue #740.
- Close files in Windows C++ client to prevent memory leak. Issue #737.
- Improve the performance for MDC dynamic mode in the Java driver.
- Set javadoc encoding to UTF-8.
- Improve validation of channel URIs for endpoint, control, tags, and distinguishing characteristics in both C and Java drivers.
- Fix calculation for archive truncate when offset is beyond first term in a segment.
- Check for reentrant calls when in Archive callbacks and throw an exception if detected.
- Change sample scripts to use the aeron-all JAR as a better example.
- Upgrade to javadoc-links 4.1.4.
- Upgrade to Build Scan 3.0.0.
- Upgrade to Shadow 5.2.0.
- Upgrade to ByteBuddy 1.10.2.
- Upgrade to SBE 1.15.0.
- Upgrade to Agrona 1.1.0.
Java binaries can be found here...
1.23.1
- Correct bug when setting
MediaDriver.Context.rejoinStream
which setreliableStream
property by mistake and update configuration output dump. - Add bind address and port to channel endpoint counter label to help with debugging connections.
- Fix narrowing type conversion in C++ client for subscription images. PR #726.
- Add progress checks to
ReplayMerge
and a new terminal state ofFAILED
which is entered on exception or lost connection to the archive. - Track close following connections with MDS without timing them out which can help with
ReplayMerge
. - Support manual control on MDC not requiring the control address:port to be specified so it can be automatically assigned.
- Add ability to disable the recording events publication in the archive to save resources when it is not required.
- Add protocol version of the server to the connect response for archive clients.
- Upgrade to SBE 1.14.1.
- Upgrade to Agrona 1.0.11.
Java binaries can be found here...
1.23.0
- Support the separate configuration of idle strategies for the replay and recording agent in the archive when running dedicated threading mode.
- Improve ownership tracking for subscriptions and images in C++ client.
- Improve matching of tagged channels
- Increase archive storage version to 2.0.0 which requires the use of migration tool for existing archives.
- Add operations to purge and restore the history of a recording in the archive.
- Add the ability to query start position for a recording.
- Add Image specific fragment assemblers for C++ client.
- Reduce cacheline padding to save on memory footprint.
- Fix double delete in Aeron destructor. Issue #717.
- C++ client refinements. PR #716.
- Upgrade to javadoc-links 4.1.3.
- Upgrade to Gradle 5.6.3.
- Upgrade to Checkstyle 8.25.
- Upgrade to SBE 1.14.0.
- Upgrade to Agrona 1.0.9.
Java binaries can be found here...
1.22.1
- 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
- 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 makeReplayMerge
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
orcc=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
andCatalogTool
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
- 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
- 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
- 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
toImage
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...