New & Noteworthy
-
[Driver] Support for IPC media was added to response channels. (#1761)
The feature works exactly the same as for UDP media but does not require
control
endpoint to be specified.For an example see
ResponseChannelsTest#shouldConnectResponsePublicationUsingImageAndIpc. -
[Driver] Add support for
response-correlation-id=prototype
to allow pre-creating response publications to
reserve and hold onto a local port. (#1863)For usage example see ResponseChannelsTest.
-
[Driver] Add API to create counters asynchronously.
Counters can now be created asynchronously using
Aeron.asyncAddCounter
andAeron.asyncAddStaticCounter
methods.
Created counter is returned by theAeron.getCounter
method. There is alsoAeron.asyncRemoveCounter
to asynchronously
remove counter byregistrationId
.For usage example see
CounterTest#shouldAddCounterAsynchronously,
CounterTest#shouldAddCounterAsynchronouslyUsingLabelAndTypeId
and
CounterTest#shouldAddStaticCounterAsynchronously. -
[Archive] Named Archive clients.
Client name can be specified using
AeronArchive.Context.clientName(java.lang.String)
API or
aeron.archive.client.name
system property. Once specified the name will be sent to the Archive with connect request
along with additional information such as client version. Archive will add a newcontrol-session
counter
(typeId=113
) for each connected client:control-session: name=test client 5 version=1.49.0-SNAPSHOT commit=e79ebfa4ff sourceIdentity=127.0.0.1:51360 sessionId=1083930759 - archiveId=519
-
[Cluster] Named Cluster clients.
Client name can be specified using
AeronCluster.Context.clientName(java.lang.String)
API or
aeron.cluster.client.name
system property. Once specified the name will be sent to the Cluster with connect request
along with additional information such as client version. Cluster will add a newcluster-session
counter
(typeId=241
) for each connected client:cluster-session: name=test client version=1.49.0-SNAPSHOT commit=4ac30af55a sourceIdentity=127.0.0.1:54444 sessionId=325223904 - clusterId=0
-
[Breaking]
org.agrona.concurrent.ShutdownSignalBarrier
changes in Agrona 2.3.0.
Please read the corresponding release notes on how to upgrade. -
[Breaking]
ClusteredServiceContainer.Context.shutdownSignalBarrier
,ConsensusModule.Context.shutdownSignalBarrier
andClusterBackup.Context.shutdownSignalBarrier
methods were removed and replaced with an explicitShutdownSignalBarrier
.For example this is how
ConsensusModule#main
changed:-
Before:
public static void main(final String[] args) { loadPropertiesFiles(args); try (ConsensusModule consensusModule = launch()) { consensusModule.context().shutdownSignalBarrier().await(); System.out.println("Shutdown ConsensusModule..."); } }
-
After:
public static void main(final String[] args) { loadPropertiesFiles(args); try (ShutdownSignalBarrier barrier = new ShutdownSignalBarrier(); ConsensusModule ignored = launch(new Context().terminationHook(barrier::signalAll))) { barrier.await(); System.out.println("Shutdown ConsensusModule..."); } }
-
-
[Breaking] Aeron jars no longer provide OSGI metadata as
bnd
plugin was removed, because it breaks
compatibility with Gradle 9.1 and causes self-dependency viabaseline
task.
Changelog
- [Agent] Make agent classes accessible outside of
io.aeron.agent
package. - [Agent] Fix
CMD_IN_MAX_RECORDED_POSITION
logging. - [Agent] Add
CLUSTER_SESSION_STATE_CHANGE
log event. - [Agent] Add
APPEND_SESSION_OPEN
log event. - [Agent] Remove
ADD_PASSIVE_MEMBER
log event. - [Agent/C] Remove extraneous
]
suffix from log messagesCMD_IN_REMOVE_PUBLICATION
,CMD_IN_REMOVE_SUBSCRIPTION
andCMD_IN_REMOVE_COUNTER
. - [Agent/C] Fix
UNTETHERED_SUBSCRIPTION_STATE_CHANGE
logging, i.e. log previous state and add missing logging toaeron_publication_image
. - [Archive] Allow for the archive to update the channel for a specific recording.
- [Archive] Return an error code when replaying and stopping an empty recording. (#1854)
- [Archive] Capture abort reason in
RecordingSession
. - [Archive] Add additional "length" that will replay the data available, but not follow a live recording. Add more
appropriately named constants and update javadoc. - [Archive] Ensure
AeronArchive.State.CLOSED
is used whenAeronArchive
instance is closed. - [Archive/C] Close uri string builders upon error when concluding
aeron_archive_context
. - [Archive] Adjust aliases on Archive streams for easier debugging.
- [Archive/Driver/Cluster] Lower
cycle threshold
for core components to1ms
by default. - [Archive] Add
ALLOW_ALL
andDENY_ALL
authorisation supplier options for the Archive. - [Archive/C] Add aeron_archive_wrapper's own sources to the
target_include_directories
. - [Archive] Do not log a warning when control response publication is disconnected or a control request image is going
away, i.e. treat those events as normal client termination. - [Archive] Copy
response-endpoint
,ttl
andstream-id
URI parameters from the original channel definition when creating recordings and replays. - [Client] Add Sequencer counter types.
- [Client] Read
mtu
from the log buffer metadata only once. - [Client] Provide additional context when log buffer cannot be mapped.
- [Client] Add
InternalApi
annotation. - [Client/C++ Wrapper] Add missing assignment operator to match the copy constructor.
- [Client/C] Send
CLIENT_CLOSE
command to media driver when aeron is closing. (#1837) - [Client/C] Fix client build to properly resolve
-DHAVE_BSDSTDLIB_H -DHAVE_ARC4RANDOM
. - [Cluster] Update the default AuthorisationService to allow requests necessary for Cluster Standby. (#1870)
- [Cluster] Handle exception during snapshot, i.e. continue running if exception is non-terminal.
- [Cluster] Remove more references to membership changes/passive members/dynamic join.
- [Cluster] Re-create ingress publication upon redirect from a follower while connecting to the Cluster.
- [Cluster] Ensures proper handling when ingress publication is closed but not null. (#1861)
- [Cluster] Add more context for transitioning from
FOLLOWER_LOG_REPLAY
state. - [Cluster] Add more context to
unexpected commit position
events. - [Cluster] Add context to
unexpected commit position from new leader
event. - [Cluster] Service snapshot time now includes time to serialize sessions and connect to the Archive.
- [Cluster] Only log
APPEND_SESSION_CLOSE
upon successful append to the log + reduce slow cycle frequency caused by
failed append attempts. - [Cluster] Within the
ClusterToolOperator
bind the adapter before the publication and await for the subscription to be
bound to reduce the chance of the returning publication not being connected and rejecting the return message. - [Cluster] Prevent standby replicated snapshots getting stuck if the address on the standby entry is invalid.
- [Cluster] Add
ALLOW_ALL
andDENY_ALL
authorisation supplier options for the Cluster. - [Driver] Fix incorrect update frequency in PublisherPos javadoc. (#1867)
- [Driver] Untethered subscriptions are closed after
LINGER
ifrejoin=false
is specified. - [Driver] Correctly handle connection status updates for untethered IPC subscribers.
- [Driver/C] Ensure
rcv-naks-sent
counter is cleaned up if publication image creation fails. - [Driver/C] Prevent sending empty NAK message upon initial connection to the publisher.
- [Driver] Set absolute minimum value for NAK unicast delay at
1us
and use it as a default value. - [Driver] Ignore NAKs with zero length and treat NAKs with negative length as invalid packets.
- [Driver/C] Fix
untethered_linger_timeout_ns
parsing and validation. Remove1us
min value that was applied when parsing untethered timeouts. - [Driver] Validate
untetheredLingerTimeoutNs
not belowtimerIntervalNs
. - [Driver/C] Update documented NAK defaults.
- [Driver/Java] Do not overwrite
imageConnections
on every received packet. - [Driver/Java] Stop processing errors when a receiver is found.
- [Driver/Java] Include
SIZE_OF_INT
inkeyLength
when allocatingChannelEndpointStatus
counters. (#1844) - [Driver] Add an ability to fetch next available session id from the media driver.
- [Driver/C] Fix system counter creation, i.e. assign
registrationId
and unsetownerId
fields. - [Driver] Add
Control protocol version
system counter. - [Driver/Java] Detect
Address in use
errors synchronously when creating endpoints, issue #1830. (#1842) - [Driver/C] Error handling fixes for destination and endpoint creation.
- [Driver/Java] Handle more cases of
NumberFormatException
while parsing publication parameters. - [CI] Add JDK 25.
- [CI] Add
Clang
21 to the build matrix. - [CI] Build on Rocky 9.
- [Java] Network Partition Testing. (#1858)
- [Java] Upgrade to Agrona 2.3.0.
- [Java] Upgrade to SBE 1.36.0.
- [Java] Upgrade to
Gradle
9.1.0. - [Java] Upgrade to
ByteBuddy
1.17.7. - [Java] Upgrade to
Checkstyle
11.1.0. - [Java] Upgrade to
JUnit
6.0.0. - [Java] Upgrade to
Mockito
5.20.0. - [Java] Upgrade to
Shadow
9.2.2. - [Java] Upgrade to
Versions
0.53.0. - [C] Upgrade to
CMake
4.1.2. - [C] Upgrade to
HDR Histogram
0.11.9.