Releases: aeron-io/aeron
Releases · aeron-io/aeron
1.5.2
- 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
andExclusivePublication
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
- 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
- Separate
sendmmsg
andrecvmmsg
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
- 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 toContext.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
- 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 addeddelay
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 ashouldLinger
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 whentermId
can wrap due to using small term buffer lengths. - Add
shared_ptr
for LogBuffer saved inPublication
andExclusivePublication
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
andcorrelationId
with the ability to callPublication.isOriginal()
to determine if this is the first publication added for a given channel and streamId on a driver. - Move access to the
AgentInvoker
fromAeron.Context
toAeron
on the client andMediaDriver.Context
toMediaDriver
. - 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 toImage.joinPosition()
.ByteBuffer
s inSubscription
andImage
polling callbacks now have offsets the same as termBuffer offsets so theByteBuffer
can be used directly.- Stricter validation of channel URI parameters and new classes for client usage in
ChannelUri
andChannelUriStringBuilder
. - Reduce object allocations when cycling streams in Java media driver.
- Add
Image.isEndOfStream()
for fast detection of stream end. - Add direct
ByteBuffer
support toFragmentAssembler
s 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...
1.3.0
- Fixed issue with a Subscription being closed and rapidly reopened on the same streamId and channel.
- Add
ThreadingMode.INVOKER
to the driver so no threads are started and the media driver can be invoked by the client for its duty cycle. Example in the Archiver. - Added system property that allows TCP_MODE to be enabled on CUBIC congestion control.
- Throughput and latency improvements on the receiver side when interacting with NIO
DatagramChannel
s. - Add
Header.context()
member which contains theImage
for use in subscriber callbacks. - Allow for client thread and lock to be elided when used in a low resource environment where the client will invoke the client duty cycle. Example can be found in the Archiver.
- Notify that a new Image is available before it is added to the
Subscription
so setup actions can be taken. - Fix
Ping
samples for messages larger thanMTU
. - Numerous improvements to the performance and GC overhead of creating and releasing connections.
- Add
Image.joiningPosition()
. - Avoid use of
std::function
for performance in C++. - Add
ExclusivePublication
support to C++. - Close file descriptor after mapping an existing file in C++. Issue #339
- Upgrade to Checkstyle 7.7.
- Upgrade to Agrona 0.9.6.
Java binaries can be found here...
1.2.5
- Make
ExclusiveBufferClaim.flags()
consistent withHeader.flags()
. - Move responsibility for closing channel endpoints on shutdown from the driver-conductor to sender and receiver as appropriate.
- Don't wait for Receiver to close a channel endpoint within the driver conductor. Issue #338.
- Remove use of
RandomAccessFile
so that onlyFileChannel
s are used to reference files. - Improve efficiency of startup.
- Upgrade to Agrona 0.9.5.
- Upgrade to Mockito 2.7.22.
- Upgrade to Gradle 3.5.
Java binaries can be found here...
1.2.4
- Update CnC file to accommodate counters with labels up to 380 bytes. This bumps the CNC_VERSION so all clients and the driver on the same machine need to be upgraded at the same time.
- Truncate log buffers when a stream is closed so space can be reclaimed as soon as possible.
- Add
Image.controlledPeek
to peek ahead into a stream without advancing the subscriber position. - Improve the efficiency of Aeron startup and shutdown.
- Back pressure a Publication as soon as its timeout is triggered due to not receiving status messages so that low throughput connections signal NOT_CONNECTED sooner. Also applies to IPC when all Subscriptions are closed.
- Add per
Subscription
callbacks for notification ofImage
availability and unavailability. - Make media driver conductor more efficient so it can deal with a higher number of connected streams.
- Add the ability to create an
ExclusivePublication
with initial state set so it can replay existing archived data. - Add
ExclusivePublication
for higher throughput single threaded publisher. - Allow the Aeron client to start before the media driver when an existing CnC file is present.
- Clean up
Aeron.Context
if an error occurs when trying to establish a connection with the media driver. - Add
Aeron.nextCorrelationId()
. - Avoid a recursive close in the Aeron Java client when a timeout occurs.
- Upgrade to sevntu-checks 1.23.1.
- Upgrade to Checkstyle 7.6.1.
- Upgrade to Byte Buddy 1.6.12.
- Upgrade to Mockito 2.7.21.
- Upgrade to Agrona 0.9.4.
Java binaries can be found here...