Skip to content

Releases: aeron-io/aeron

1.8.2

09 Mar 18:54
Compare
Choose a tag to compare
  • Fix vectored offer of large messages with offsets that do not start at zero. PR #475.
  • Replace hot switch statements in the Java driver so the JIT can make better optimisation decisions.
  • Fix race issue with archive replaying an active recording and the existing recording stopping mid replay.
  • Add support for large pages to C driver.
  • Improve error reporting in C driver startup.
  • Upgrade to SBE 1.7.9.
  • Upgrade to Agrona 0.9.15.

Java binaries can be found here...

1.8.1

28 Feb 19:20
Compare
Choose a tag to compare
  • Guard against a counter being added with no key in C++ client.
  • Change move to copy semantics for C++ client to avoid concurrency issues while iterating images under a subscription. Issue #472.
  • Simplify archive recording so it works more consistently on all platforms. This has resulted in a better throughput and latency profile.
  • Rework archive to better handle concurrent usage of recording catalog and aeron client.
  • Handle case of removing a subscription that has not seen any traffic that could result in a NullPointerException.
  • Update archive samples to be a better illustration of usage.
  • Perform a contains operation for matching channel URIs rather than an exact match when listing recording descriptors.
  • Upgrade to SBE 1.7.8.
  • Upgrade to Agrona 0.9.14.

Java binaries can be found here...

1.8.0

24 Feb 14:51
Compare
Choose a tag to compare
  • Fix idle config for C driver from env vars.
  • Add low-latency config to Java sample scripts.
  • Allow all context types to be Cloneable in Java for easier config in testing.
  • Add YeildingIdleStrategy to C++ client and add a idle() method without args to the all strategies.
  • Bring C++ client inline with Java by providing simpler methods for checking channel endpoint status.
  • Add a MarkFile so a second archive cannot be started accidentally in the same directory plus provide metadata about the running instance.
  • Improve the RecordingPos counter support from tracking the progress of a local recording in the archive.
  • Add the ability to change the linger timeout for a publication to wait around after close in case the receiver needs to recover loss. Issue #452.
  • Support human friendly values such as term-length=64m and mtu=4k in channel URI params.
  • Improve system tests to be more suitable example code.
  • Improve C++ client performance when built for Windows.
  • Improve the archive client for more robust connection to the archive.
  • Improve the error reporting from the driver when network errors are experienced.
  • Add the ability to extend an existing archive recording as a continuous immutable log. This requires the new publication to have the existing session id which can be provided via the channel URI.
  • Performance improvements to manual multi-destination-cast from Java driver.
  • Improve error reporting from the archive to the control sessions on invalid requests.
  • Numerous small archive performance improvements.
  • Add the ability to the archive to record specific publication sessions and update client API to support this.
  • Reduce the cost of querying the archive for recordings. The listing of a recording descriptor by recording id is now allocation free.
  • Reduce allocation when setting up new connections so connections can be cycled more efficiently.
  • Add a second local subscription to the archive in listening for control sessions. This can be over IPC for greater efficiency.
  • Add the ability to subscribed to a specific session-id by adding it as a channel URI param. Useful to isolating a single session rather than wild-carding on channel and stream id.
  • Add the ability to choose a publication session-id by setting it as a channel URI param. A default range from low to high value can be configured for the driver to not use in automatic assignment.
  • Add cooldown option on counters so they are not reused for a timeout which defaults to 0.
  • Change congestion control to more accurately measure RTT before feeding into calculations.
  • Reduce default MTU to 1408 to avoid loss on Google Cloud and inter-region AWS. This will reduce throughput on local un-contended networks and a larger value can be configured.
  • Cache clock values during duty cycle to save on system calls in Java driver.
  • Adjust idle constants so backoff will sleep and thus reduce CPU usage. Newer kernels spin on LockSupport.parkNanos() with a low value.
  • Handle unaligned strings used in commands to the C driver.
  • Reduce Hamcrest dependency from all to library.
  • Upgrade to Mockito 2.15.0.
  • Upgrade to Gradle 4.5.1.
  • Upgrade to JShadow 2.0.2.
  • Upgrade to Checkstyle 8.8.
  • Upgrade to SBE 1.7.7.
  • Upgrade to Agrona 0.9.13.

Java binaries can be found here...

1.7.0

15 Dec 11:55
Compare
Choose a tag to compare
  • Bring the C++ client up to par with the Java client on feature set.
  • Use fallocate on Linux with the C driver if supported.
  • Allow spiesSimulateConnection to be configured for an ArchivingMediaDriver, it was previously hard coded to true.
  • Add RecordingPos utility to find the counter for recordings so it can be tracked and consumption of Images can be bounded to ensure they are recorded.
  • Move Images out of the active state as soon as they have reached end-of-stream and rebuilt so that they don't get spuriously captured by new Subscriptions.
  • Don't elicit SETUP messages once a Publication has reached end-of-stream to avoid spurious connections.
  • Reduce allocation in the Archive when setting up recordings or replays.
  • Rework client close so it is constant time regardless of the number of publications and subscriptions.
  • Additional simplified API for adding counters that only require a label.
  • Improve efficiency of MDC (Multi-Destination-Cast) connections.
  • Clean up C/C++ build warnings. PR #440.
  • Provide an API to start and stop an Archive recording without creating a Subscription.
  • Fixes for building C++ with Visual Studio. PR #384.
  • Add counter available and unavailable callbacks to the Aeron client.
  • Add the ability to set the Aeron directory to the Archive context.
  • Simplify API for getting channel endpoint status on a Publication or Subscription this is a breaking change to the feature introduced in the 1.6.0 release.
  • Add bounded control poll to Image so they can be conditionally consumed.
  • Fix samples for simple publication and subscription for timing issues. Issue #435.
  • Upgrade to Checkstyle 8.5.
  • Upgrade HdrHistogram for C/C++.
  • Upgrade to Mockito 2.13.0.
  • Upgrade to JShadow 2.0.1.
  • Upgrade to Gradle 4.4.
  • Upgrade to SBE 1.7.6.
  • Upgrade to Agrona 0.9.12.

Java binaries can be found here...

1.6.0

16 Nov 05:28
Compare
Choose a tag to compare
  • Change Aeron client ownership in AeronArchive so that the archive client will default to not owning the Aeron client unless it creates it.
  • Detection of network channel setup errors, e.g. port already in use, and propagation back to the client public the addition of channel status indications of publications and subscriptions.
  • Reduced use of capturing lambdas to allow for faster warmup and reduced allocation on connection setup.
  • Simplify client command API to allow for easier development of clients in other languages.
  • Provide an API for allocating Counters which are managed by the media driver and can be read with AeronStat
  • Small performance improvements and faster warm up of Multi-Destination-Cast publications.
  • Decouple Archive from media driver so that the Java Archive can be used with the C media driver.
  • Tidy up logic in archive client to better handle unexpected messages from the archive and not read messages in pollers after message may have been released.
  • Modify unblock logic so that it does not apply to exclusive publications except in when past the active state.
  • Correct Javadoc for Publications and concurrent semantics. Issue #429.
  • Update to SBE 1.7.5.
  • Update to Agrona 0.9.11.
  • Update to Byte Buddy 1.7.9.
  • Update to Mockito 2.12.0.
  • Update to Checkstyle 8.4.

Java binaries can be found here...

1.5.2

01 Nov 21:12
Compare
Choose a tag to compare
  • Improve failure detection in AeronArchive client for when connections drop. Issue #427.
  • Add a lock to AeronArchive client so it is threadsafe.
  • Fix issue introduced with unblock logic that would not unblock when term had rotated ahead of blocked position. Issue #424.
  • Remove use of PAGE_SIZE in C++ client to avoid compilation errors on Android. Issue #405.
  • Have Publication and ExclusivePublication have a common super class of Publication in Java so they can be interchanged.
  • Add isConnected() method to Subscription.
  • Check window length against socket buffer on start up fail fast. Issue #420.
  • Support units (k, m, and g) for size such as 16k for a 16 KB buffer length, and (s, ms, us, ns) for durations in system properties.
  • Add generated codecs to aeron-archive.jar. Issue #416.
  • Upgrade to Mockito 2.11.0.

Java binaries can be found here...

1.5.1

16 Oct 16:16
Compare
Choose a tag to compare
  • Fix bug with segment filename generation for the Archive. #414.
  • Further validation of publication parameters to the C media driver.
  • Duplicate ByteBuffers for terms in client so independent subscriptions can operate in a threadsafe manner if they require access to the underlying ByteBuffers for onwards IO.
  • Remove aeron.term.buffer.max.length property as it is not needed given current usage.
  • Fix socket options and bind address for multicast in C driver.
  • Upgrade to SBE 1.7.3.
  • Upgrade to Agrona 0.9.9.

Java binaries can be found here...

1.5.0

11 Oct 22:04
Compare
Choose a tag to compare
  • Separate sendmmsg and recvmmsg detection in C driver to support older kernels. Issue #412.
  • Better support the cycling of connections so they consume less resources when lingering.
  • Provide more immediate detection of an unconnected IPC stream.
  • Allow spy subscriptions to simulate a network connection so a network publication can progress when no receivers are present. Issue #393.
  • Add configuration for page size so the files can be on storage using huge pages to reduce TLB misses. Issue #387
  • Limit maximum message length to be 16MB to encourage better design and streaming in chunks.
  • Change concurrent publication algorithm to better handle the case of thread starvation with publishers and allow other publishers to help rotate a log if another publication is interrupted, or dies, while it is rotating the log. Issue #377.
  • Add Subscription.isConnected().
  • Add event logging for events which result in an exception.
  • Add the ability to set JVM_OPTS from an environment variable in command line scripts.
  • Pass through command line arguments and system properties in sample scripts.
  • Allow for mapped buffers to be ref counted and shared across publications and subscriptions within a client. Issue #365.
  • Add vectored IO for publishing a number of buffers which make up a message as a single operation. Issues #401, #394.
  • Reduce copying, interface scanning, and object allocation for channel setup in Java.
  • Upgrade to SBE 1.7.2.
  • Upgrade to Agrona 0.9.8.
  • Upgrade to Checkstyle 8.3.
  • Upgrade to Mockito 2.10.0.
  • Upgrade to Byte Buddy 1.7.4.

Java binaries can be found here...

1.4.1

25 Aug 15:55
Compare
Choose a tag to compare
  • Update the aeron-archive module to Maven Central as part of the build.
  • Improve C driver build when OS features are not available so it degrades more gracefully.
  • Tidy up of media driver configuration and added Javadoc. Note that if you used Context.dirsDeleteOnStart(boolean) for testing that it has been renamed to Context.dirDeleteOnStart(boolean).
  • Add configuration option so that high resolution timers can be enabled on Windows.
  • Fix issue with term buffer length of 1GB. Issue #388.

Java binaries can be found here...

1.4.0

21 Aug 20:42
Compare
Choose a tag to compare
  • Native media driver written in C for greater throughput on Linux. Get started here....
  • Archive service in Java to support the recording and replay of message streams. Get started here....
  • Improved AeronStat for running in a Windows console and added delay param for controlling the update cycle in seconds.
  • Handle race condition on driver start when checking if it is active yet. Issue #385.
  • Update FlowControl API to support a shouldLinger method and EOS parameters to allow for faster clean up of resources.
  • Encapsulate buffer and length into a struct for atomic update of images under a subscription in C++. Issue #383.
  • Add Subscription::controlPoll to C++ client.
  • C++ client was not going round robin on the images under a subscription. Issue #381.
  • Added AgentInvoker to C++ client for removing the need for the client conductor thread.
  • Fix issues with publications being unblocked when clients are closing and creating new subscriptions. Issue #377.
  • Add Publication.MAX_POSITION_EXCEEDED return code from offer for when termId can wrap due to using small term buffer lengths.
  • Add shared_ptr for LogBuffer saved in Publication and ExclusivePublication to keep mapping around while in scope. Issue #371.
  • Rework Java client to better support timeouts and closing from other threads to help avoid segfaults. Issue #371.
  • Publications store registrationId and correlationId with the ability to call Publication.isOriginal() to determine if this is the first publication added for a given channel and streamId on a driver.
  • Move access to the AgentInvoker from Aeron.Context to Aeron on the client and MediaDriver.Context to MediaDriver.
  • Fix alignment types in native buffers for supporting processors which require alignment. Issue #359.
  • Counters now have labels in US_ASCII rather than UTF-8 to be more efficient as they are restricted to US_ASCII anyway.
  • Image.joiningPosition() has been renamed to Image.joinPosition().
  • ByteBuffers in Subscription and Image polling callbacks now have offsets the same as termBuffer offsets so the ByteBuffer can be used directly.
  • Stricter validation of channel URI parameters and new classes for client usage in ChannelUri and ChannelUriStringBuilder.
  • Reduce object allocations when cycling streams in Java media driver.
  • Add Image.isEndOfStream() for fast detection of stream end.
  • Add direct ByteBuffer support to FragmentAssemblers to avoid the need for copying of received messages before sending on the an NIO channel.
  • Upgrade to Agrona 0.9.7.
  • Upgrade to SBE 1.7.1.
  • Upgrade to Mockito 2.8.47.
  • Upgrade to Byte Buddy 1.6.14.
  • Upgrade to Checkstyle 8.1.
  • Upgrade to sevntu-checks:1.24.1.
  • Upgrade to Gradle 4.1.

Java binaries can be found here...