Aeron 1.53.0: Simpler logging, clearer diagnostics, finer-grained C/C++ error handling

This release removes the long-standing Java-agent requirement for event logging, introduces more distinct thread naming for easier profiling and diagnostics, and gives C/C++ clients direct access to specific Archive error codes. This release contains breaking changes — see below before upgrading. For the full list of changes, see the release notes.
 

Aeron 1.53.0 breaking changes at a glance:

  • The aeron-agent jar is removed (no -javaagent flag).
  • Image.controlledPeek/position(long) and their C/C++ equivalents are removed.
  • C/C++ Archive error-code constants have moved and may need code changes. Detail on each below.

Simplified logging

Aeron’s event logging previously relied on a Java agent (-javaagent:) using bytecode-weaving to attach itself at startup, with log messages encoded by hand and no formal schema — workable, but brittle, and prone to classpath conflicts (duplicate classes) in more advanced deployment topologies. 1.53 replaces this entirely: the aeron-agent jar is gone, and log messages are now encoded in a self-describing CBOR binary format. The result is a more robust encoding with fewer moving parts, and no agent flag required at startup. A new aeron.event.log.render.data option additionally allows the data portion of frame-in and frame-out messages to be printed, useful for deeper debugging. Note that dynamic enablement of logging (toggling it at runtime) is no longer supported, and some log message formats have changed as a result — check any downstream tooling that parses Aeron’s log output.

Clearer thread names

Thread names have historically been generic (sender, receiver, conductor), making it harder to distinguish components at a glance in profilers or thread dumps on busier systems. 1.53 introduces a new aeron.thread.naming system property with two modes: classic (default — unchanged behavior) and new, which switches to standardized, component-prefixed names like aeron-md-snd, aeron-md-rcv, and aeron-md-cnd. This applies consistently across the Media Driver (both Java and C), Archive, and Cluster. Existing setups are unaffected unless you opt in.

Client API changes

  • C/C++ Archive error codes: C and C++ clients previously received a generic error rather than the Archive’s actual, specific error condition. 1.53 changes this: new AERON_ARCHIVE_*_ERROR_CODE constants are available in the public API, and C++ exceptions now expose an errorCode() accessor. The C Archive and async clients also translate Archive-specific error codes into user-facing error codes automatically. Existing C/C++ code referencing the old ARCHIVE*_ERROR_CODE constants directly will need to be updated.
  • Image controlledPeek removed:
    Image.controlledPeek/Image.position(long) (Java), aeron_image_controlled_peek/aeron_image_set_position (C), and Image::controlledPeek/Image::position (C++) have all been removed, as previously flagged for deprecation in 1.52.0.

For detailed release notes on Aeron 1.53.0, please visit Github >>

Further reading

Software Version 1.52.0 released

Aeron 1.52.0: container-aware CPU affinity, debug log rotation, a new LogInspector CLI, and lower latency in replay workloads. See what changed.

Software Persistent Subscriptions

Aeron 1.51.0 introduces Persistent Subscriptions, a new Aeron Archive feature, sponsored by Nonco, , that manages the transition between historical and live message streams for late-joining consumers.

Software Version 1.51.0 released

This release includes Persistent Subscriptions for seamless live/historical streams, new C/C++ client APIs for async control, and stricter protocol and cluster reliability.

Software Version 1.49.0 released

This release enhances trading technology's performance and observability. New IPC support for response channels, async counter creation, and improved client identification.