Releases: aeron-io/aeron
Releases · aeron-io/aeron
1.8.2
- 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
- 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
- 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 aidle()
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
andmtu=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
- 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 anArchivingMediaDriver
, it was previously hard coded totrue
. - 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
orSubscription
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
- 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
Counter
s which are managed by the media driver and can be read withAeronStat
- 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
Publication
s 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
- 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...