Efficient reliable UDP unicast, UDP multicast, and IPC message transport
| Files | Last commit | Last update |
|---|---|---|
[CI] Use `./gradlew publish uploadArtifactsToCentralPortal` for publishing snapshots. | 2 months ago | |
README.md | 5 years ago | |
Rewrite of Aeron Logging (#2115) * [Java/Cluster/Client] Add support for enabling event logging without requiring a javaagent. Instead, use a static variable to control enable/disable of event logging. * [Cluster] Move all events from ClusterEventCode into ClusterLog and call as direct method calls instead of relying on ByteBuddy instrumentation from the javaagent. * [Cluster] Fix checkstyle and disable agent tests that broke as a result of the design change. * [Cluster] fixed cluster agent tests by adding restart method for event agent * [Cluster] Added temporary enable all flag to make tests work and re-added disabling feature from old logger * [Archive] similar migrations to using direct logging for Archive based on Cluster changes * [Cluster] Small code cleanup of ClusterModuleLogger. * [Cluster] Remove stack traces errors from ClusterLoggingAgentTest. * [Archive] Tidy up archive logging code. * [Logging] Move CollectingEventLogReaderAgent and MBean to aeron client. * [Cluster] Remove disabled event tyoe from aeron-cluster configuration. Add null check in ClusterEventLogger.logReplicationEnded. * [Driver] applied similar changes as archive and cluster in terms of removing the eventlog java agent * [Archive] Moved archive event tests to aeron-archive module * [All] Moved driver and cluster event logging tests to respective projects/modules and moved common ones to aeron-client * [All] Created @LoggingTest annotation and create isolated Gradle task for it that runs the same reader agent changes * [Client] Moved reader-related object instantiation to EventReaderManager from EventConfiguration * [Logger] refactored EVENT_RING_BUFFER to be indirectly accessed from manager instead * [Build] Remove aeron-agent module. Update build configuration to prevent excessive data to stdout. * [Driver] Add logging enablement test. Add CountingEventReaderAgent to support logging tests. Add logTextData to complete DriverEventCode set. Fix launching of forked logging test JVMs to not launch large numbers of JVMS. * [Archive] apply similar changes to the driver - more specifically, create the logging enablement test and make modifications to the reader agent test such that it only focuses on whether the specific logging events were triggered * [Cluster] apply similar changes to the driver and archive - more specifically, create the logging enablement test and make modifications to the reader agent test such that it only focuses on whether the specific logging events were triggered * [Gradle] created a generic LoggingTest class that will generate all relevant Gradle task for a project via configureLoggingTests static method * [Java] Don't start the logging thread if no logging is configured. * [Java/Driver] Optimise the logging of naks sent by moving the condition ahead of the loop through the image connections. * [Java] Removed unused options from @LoggingTest annotation. * Revert "[Build] Remove aeron-agent module. Update build configuration to prevent excessive data to stdout." This reverts commit 248790010d437ebc2535d46854a1360045adb021. * [Java] Implement java logging agent as a stub that only prints a warning to indicate it is no longer required. * [Java] Formatting. * [Docs/Scripts] Remove references to -javaagent in docs and scripts. * [Java] fixed javadoc issues. * [Java] CodeQL fix. * [Build] Remove unneeded depencencies. * [Java] Spike of using CBor to write encoded version of the log message. * [Java] Implemented general number encoding for CBOR (excludes longs and bigints for now) * [Java] Corrected MAX_VALUE to use unsigned max values instead to minimize byte length of encoding * [Java] Simplified one's complement to inversion * [Java] Implemented length calculation for int case in CborUtil.java * [Java] Added basic CharSequence implementation for the short string case * [Java] Added branching point for indefinite length string case * [Java] extra cleanup * [Java] initial implementation for indefinite length string case * [Java] Small tidy ups. * [Java] Complete implementation of the string encoding and length handling for CBOR + checkstyle fixes. * [Java] Implemented the CBOR enum encoding * [Java] Added test for checking behavior of dropping items when messages cannot fit in buffer and fixed issues with checking the remaining length * [Java] Added more extensive partial encoding test * [Java] Introduce contants and tidy up constants in CborUtil. * [Java] Don't support enums in CborUtil. * [Java] Javadoc. * [Java] Add basic decode structure. * [Java] initial implementation of decoding (with number value) * [Java] Implemented the string decoder + extra refactors * [Java] Added full multikey decode test * [Java] Added more extensive multi-key test and fixed long bug detected from case * [Java] Implemented the truncation logic for long CharSequence values * [Java] Truncation logic refactor due to repetitive blocks * [Java] Tidy up and fix checkstyle. * [Java] Bug fix and tidy. * [Java] Small simplification. * [Java] Passing test for encode and decode of election state event using CBOR. * [Java] Formatting. * [Java] Implemented null encoding (for CharSequence) and boolean encoding * [Java] Added null handling for string length * [Java] Implemented straightforward allowTruncate check * [Java] Fixed CborDecodeTest issues after msgType-related fix * [Java] checkstyle fixes. * [Java] Added boolean and null value decoding + (onValue overload for the boolean case) * [Java] Added edge case tests for encode and decode. Fixed issues with encode and left decode tests disabled * [Java] corrected name of position getter to offset * [Java] Added initial version of test for invalid message for premature termination * [Java] Formatting. * [Java] Move logging code into appropriate packages, specifically, io.aeron.logging for the generic code and io.aeron.<component>.logging for each component. * [Java] Fix javadoc. * [Java] Formatting. * [Java] Formatting. * [Java] Add CborLoggerReaderAgent to write logs to stdout from CBOR messages. Add array structure to message. Add timestamp and type information as header fields in the message. * [Java] minor refactor. * [Java] corrected cutoff points for shouldReceiveInvalidMessageIfEndOfBufferIsReachedBeforeTermination test * [Java] hardened InvalidMessage handling for potential out of bounds exception cases through the decoding code * [Java] Javadoc and checkstyle cleanups. * [Java] refactored common variables and method from CborEncode to CborUtils * [Java] Implemented truncation flag as 4th array element * [Java] Implementation of possible tagging design * [Java] Formatting and test for CborEncode that check tags. * [Java] Implemented CBOR tags for values. * [Java] Refactor to remove some unnecessary overloads. Add enum check in PrintLoggerEventCallback to remove quotes. * [Java] Added event code name handling for CBOR encode and decode. * [Java] Added more extensive testing for CborClusterEventCodecTest.java * [Java] Move logging for driver to logging package. Set up GeneratedLogging pattern for driver event loggers. Implement logFrameOut (with IPv4 and byte buffer). * [Java] General code tidy up and renames. Remove a println and apply a correct assertion. * [Java] General code tidy up and renames. Remove a println and apply a correct assertion. * [Java] More tidy up. * [Java] Add logic for processing byte array to the PrintLoggerEventCallback. * [Java] Create annotation processor to generation implementation using CBOR encoding. * [Java] Refactored out passing eventCode into some Logger methods for DriverEventLogger.java and ClusterEventLogger.java * [Java] Create CBOR logger interface for the archive module with tests. Fix pre-existing checkstyle issues. * [Java] Fix null enum issue. Disable remaining active SBE tests. * [Java] Remove unnecessary parameters from LoggerMethod.java after SBE implementation removal. * [Java] Configure Gradle to use the CBOR logger reader agent. Fix side effect in LoggingTest. * [Java] Add appropriate tag for logFrameOut logging. * [Java] General logging code tidy up. Remove encoder from the GeneratedLogger annotation. Reverse order of address with frameIn/frameOut logs. * [Java] Convert classes to records. * [Java] Tidy up CBor code generator. * [Java] Implementation of rolling file writing for PrintLoggerEventCallback.java * [Java] Added system property support for PrintLoggerEventCallback.java to configure log * [Java] Refactor PrintLoggerEventCallback.java to use strategy pattern for writing to minimize number of if statements. * [Java] Allow dynamic lookup up logger callbacks using the services API. * [Java] Make PrintLoggerEventCallback constructor public and add javadoc. * [Java] Move CollectingEventLogReaderAgent over to using the CBorDecode. * [Java] Prototype of the BinaryRenderer for commands and protocol messages. * [Java] Remove all of the ModuleLogger and implementations. Move DriverLog etc. to the logger package. Add comments to ClusterLog and methods public. * [Java] Fix assertion parameter ordering. * [Java] Implementation for DriverProtocolBinaryRenderer.java and integration with PrintLoggerEventCallback.java. Minor typo correction for class name in service declaration. * [Java] Implementation for driver admin command binary rendering. * [Java] Fixed issue with message ID in DriverProtocolBinaryRenderer.java * [Java] Re-add eventType mask in msgTypeId to fix lookup bug * [Java] Implementation of ArchiveAdminCommandBinaryRenderer. * [Java] Rename ArchiveAdminCommandBinaryRenderer to ArchiveControlBinaryRenderer * [Java] Fix checkstyle after rebase. * [Java] Protections around exceptions when logging. * [Java] Separate address and port. * [Java] Remove old encoders and dissectors. * [Java] Unused class and move to Cbor<EventProcessor> naming scheme. * [Java] Return stdout logging during build. * [Java] Change renderer decoder members and methods to non-static for multi-threaded cases. * [Java] Allow logging of extra/body bytes for certain frame types with an explicit toggle * [Java] Add rolling log header in every file * [Java] Remove extra bytes for logging of authentication requests. Add newlines for binary blobs. * [Java] Include timestamp at log start for logging stream implementation (StreamEventWriter). Fix previous checkstyle issues. * [Java] Standardize switch statement style between BinaryRenderer implementations. * [Java] Remove aeron-agent module. Updated changelog. Update property name for rendering binary data portion of messages. * [Java] Add logging events for the start of the driver, archive and cluster to carry the version information. Trigger these if any logging events are enabled. * [Java] Changelog. * [Java] Add generic test to cover the logging messages reflectively. * [Java] Add defensive guard to prevent unbounded read for buffers in BinaryRenderer implementations. * [Java] Fix failures on Windows by asserting new lines correctly. * [Java] Removed unused value. * [Java] Change static value to thread local to prevent races. * [Java] Fix another line printing test in windows. * [Java] Early exit if unable to allocate space in the ring buffer. * [Java] Javadoc. * [Java] Fix clamping issue in renderDataFrame to truncate bytes correctly in truncated cases. * [Java] Add other non-control request events to complemented set for CONTROL_REQUEST_EVENTS in ArchiveEventLogger.java * [Java] Add limit check to CBOR encode DirectBuffer overload. * [Java] Create system test for oversized logging for both driver and archive. Fix variable length values in ArchiveControlBinaryRenderer.java. Add driver logging test as own Gradle task. Minor truncation text cleanup * [Java] Better formatting of truncated messages. * [Java] Fix ArchiveLoggingSystemTest. --------- Co-authored-by: EmilJohn24 <emil.lopez@weareadaptive.com> | 30 days ago | |
The persistent_subscription (C) option to control context ownership. (#2132) The persistent_subscription normally takes ownership of the context. A new method has been added to be able to take ownership of that context and control the lifecycle externally. It is done in exactly the same way as for the archive_context. | 7 days ago | |
[Driver/Java] Add cgroup validation for Java Driver. (#2125) * [Java] Initial implement of initial cpuset v2 reader. * [Java] Add support for self cgroup read. * [Java] Implement L3 grouping logic. Generify CPU list parsing to any collection. * [Java] Javadoc + checkstyle. * [Java] Move setup code in topology tests to dedicated TopologyTestUtils. * [Java] Expand stream to use regular loop (IntelliJ automated) to capture IOException, allowing this to be skippable. * [Java] Add additional test for L3 cache that integrates with cgroups. * [Java] Minor optimization in L3GroupOptimization, pre-caching other CPUs ahead of time to minimize I/O. * [Java] Implementation for die locality validation. * [Java] Checkstyle and javadoc cleanup. * [Java] Fix L3 peer file generation method in TopologyTestUtils to use dashes (range). Add additional test to verify the ranged case legitimately passes. * [Java] Implement ThreadAlignmentChecker for identifying missing thread siblings. Refactor common reader code between L3 cache check and alignment check via PerCpuListReader. * [Java] Extra cleanup. * [Java] Implement CGroupValidator. Wire it to MediaDriver startup. Clean up pre-existing checkstyle issues. * [Java] Optimize AffinityParser by using an IntConsumer instead of an actual container allocator call and using index-based range parsing instead of split. Minimize group list allocation by using ArrayList constructor directly instead of going through stream. Use IdentityHashMap for L3GroupGenerator since same hash set objects are returned. * [Java] Ignore IOExceptions in validation file reading operations instead to match C behavior. * [Java] Add constant for CpusetV2Reader default paths. * [Java] Move validation point. * [Java] Add OS (linux) check for validation point. * [Java] Checkstyle. * [Java] Catch NumberFormatException in checks. * [Java] Match default sysfs to use actual directory (same as C) * [Java] Change parseInt in AffinityParser to use parseIntAscii from Agrona. * [Java] Change missed parseInt in AffinityParser to use parseIntAscii from Agrona. * [Java] Change parseInt in DieLocalityGroupGenerator to use parseIntAscii from Agrona. * [Java] Convert grouping code back to simple validation. Introduce a generic validator interface. * [Java] Restructure PerCpuListReader for reusability (check which cpus are not loaded yet). * [Java] Remove unnecessary put operation. * [Java] Move list caching back internally to reader. * [Java] Change validator interface to accept whole Cpuset object. In order to pass in the formatted CPU string, it has been included in the Cpuset record. * [Java] Add more information to list TODO * [Java] Separete id-related logic out of PerCpuListReader to PerCpuIdReader * [Java] checkstyle * [Java] Fix IOException mishandling in L3TopologyValidator * [Java] Fix feature parity issues with C. Add recursive lookup for effective CPU directory. Modify missing sibling check to return core CPU as well. * [Java] Change for-loop based adding to presentCpu hash set to a simple addAll. * [Java] Small code formatting and tidy ups. --------- Co-authored-by: Michael Barker <mikeb01@gmail.com> | 4 days ago | |
[Cluster] Provide detailed description for `clusterMembers` list entries and emphasise that `ingress:port` is public facing. | 4 days ago | |
[Driver/Java] Add cgroup validation for Java Driver. (#2125) * [Java] Initial implement of initial cpuset v2 reader. * [Java] Add support for self cgroup read. * [Java] Implement L3 grouping logic. Generify CPU list parsing to any collection. * [Java] Javadoc + checkstyle. * [Java] Move setup code in topology tests to dedicated TopologyTestUtils. * [Java] Expand stream to use regular loop (IntelliJ automated) to capture IOException, allowing this to be skippable. * [Java] Add additional test for L3 cache that integrates with cgroups. * [Java] Minor optimization in L3GroupOptimization, pre-caching other CPUs ahead of time to minimize I/O. * [Java] Implementation for die locality validation. * [Java] Checkstyle and javadoc cleanup. * [Java] Fix L3 peer file generation method in TopologyTestUtils to use dashes (range). Add additional test to verify the ranged case legitimately passes. * [Java] Implement ThreadAlignmentChecker for identifying missing thread siblings. Refactor common reader code between L3 cache check and alignment check via PerCpuListReader. * [Java] Extra cleanup. * [Java] Implement CGroupValidator. Wire it to MediaDriver startup. Clean up pre-existing checkstyle issues. * [Java] Optimize AffinityParser by using an IntConsumer instead of an actual container allocator call and using index-based range parsing instead of split. Minimize group list allocation by using ArrayList constructor directly instead of going through stream. Use IdentityHashMap for L3GroupGenerator since same hash set objects are returned. * [Java] Ignore IOExceptions in validation file reading operations instead to match C behavior. * [Java] Add constant for CpusetV2Reader default paths. * [Java] Move validation point. * [Java] Add OS (linux) check for validation point. * [Java] Checkstyle. * [Java] Catch NumberFormatException in checks. * [Java] Match default sysfs to use actual directory (same as C) * [Java] Change parseInt in AffinityParser to use parseIntAscii from Agrona. * [Java] Change missed parseInt in AffinityParser to use parseIntAscii from Agrona. * [Java] Change parseInt in DieLocalityGroupGenerator to use parseIntAscii from Agrona. * [Java] Convert grouping code back to simple validation. Introduce a generic validator interface. * [Java] Restructure PerCpuListReader for reusability (check which cpus are not loaded yet). * [Java] Remove unnecessary put operation. * [Java] Move list caching back internally to reader. * [Java] Change validator interface to accept whole Cpuset object. In order to pass in the formatted CPU string, it has been included in the Cpuset record. * [Java] Add more information to list TODO * [Java] Separete id-related logic out of PerCpuListReader to PerCpuIdReader * [Java] checkstyle * [Java] Fix IOException mishandling in L3TopologyValidator * [Java] Fix feature parity issues with C. Add recursive lookup for effective CPU directory. Modify missing sibling check to return core CPU as well. * [Java] Change for-loop based adding to presentCpu hash set to a simple addAll. * [Java] Small code formatting and tidy ups. --------- Co-authored-by: Michael Barker <mikeb01@gmail.com> | 4 days ago | |
[Scripts] Remove testing entry. | 23 days ago | |
[Java] Fix test assertions based on the execution mode. | 19 days ago | |
Renaming the concept of EventLogging to Tracing (#2131) * Rename DriverLog, ClusterLog and ArchiveLog to DriverTracing, ClusterTracing and ArchiveTracing. Rename method prefixes from log to trace. * [Java] Rename internal constants within Tracing classes from LOG_ to TRACE_. * [Java] Rename interfaces *EventLogger to *Tracer. * [Java] Rename static variables named LOGGER to TRACER. * [Java] Rename methods in *Tracer interfaces. * [Java] Rename tests to be consistent with the class name changes. | 7 days ago | |
Rewrite of Aeron Logging (#2115) * [Java/Cluster/Client] Add support for enabling event logging without requiring a javaagent. Instead, use a static variable to control enable/disable of event logging. * [Cluster] Move all events from ClusterEventCode into ClusterLog and call as direct method calls instead of relying on ByteBuddy instrumentation from the javaagent. * [Cluster] Fix checkstyle and disable agent tests that broke as a result of the design change. * [Cluster] fixed cluster agent tests by adding restart method for event agent * [Cluster] Added temporary enable all flag to make tests work and re-added disabling feature from old logger * [Archive] similar migrations to using direct logging for Archive based on Cluster changes * [Cluster] Small code cleanup of ClusterModuleLogger. * [Cluster] Remove stack traces errors from ClusterLoggingAgentTest. * [Archive] Tidy up archive logging code. * [Logging] Move CollectingEventLogReaderAgent and MBean to aeron client. * [Cluster] Remove disabled event tyoe from aeron-cluster configuration. Add null check in ClusterEventLogger.logReplicationEnded. * [Driver] applied similar changes as archive and cluster in terms of removing the eventlog java agent * [Archive] Moved archive event tests to aeron-archive module * [All] Moved driver and cluster event logging tests to respective projects/modules and moved common ones to aeron-client * [All] Created @LoggingTest annotation and create isolated Gradle task for it that runs the same reader agent changes * [Client] Moved reader-related object instantiation to EventReaderManager from EventConfiguration * [Logger] refactored EVENT_RING_BUFFER to be indirectly accessed from manager instead * [Build] Remove aeron-agent module. Update build configuration to prevent excessive data to stdout. * [Driver] Add logging enablement test. Add CountingEventReaderAgent to support logging tests. Add logTextData to complete DriverEventCode set. Fix launching of forked logging test JVMs to not launch large numbers of JVMS. * [Archive] apply similar changes to the driver - more specifically, create the logging enablement test and make modifications to the reader agent test such that it only focuses on whether the specific logging events were triggered * [Cluster] apply similar changes to the driver and archive - more specifically, create the logging enablement test and make modifications to the reader agent test such that it only focuses on whether the specific logging events were triggered * [Gradle] created a generic LoggingTest class that will generate all relevant Gradle task for a project via configureLoggingTests static method * [Java] Don't start the logging thread if no logging is configured. * [Java/Driver] Optimise the logging of naks sent by moving the condition ahead of the loop through the image connections. * [Java] Removed unused options from @LoggingTest annotation. * Revert "[Build] Remove aeron-agent module. Update build configuration to prevent excessive data to stdout." This reverts commit 248790010d437ebc2535d46854a1360045adb021. * [Java] Implement java logging agent as a stub that only prints a warning to indicate it is no longer required. * [Java] Formatting. * [Docs/Scripts] Remove references to -javaagent in docs and scripts. * [Java] fixed javadoc issues. * [Java] CodeQL fix. * [Build] Remove unneeded depencencies. * [Java] Spike of using CBor to write encoded version of the log message. * [Java] Implemented general number encoding for CBOR (excludes longs and bigints for now) * [Java] Corrected MAX_VALUE to use unsigned max values instead to minimize byte length of encoding * [Java] Simplified one's complement to inversion * [Java] Implemented length calculation for int case in CborUtil.java * [Java] Added basic CharSequence implementation for the short string case * [Java] Added branching point for indefinite length string case * [Java] extra cleanup * [Java] initial implementation for indefinite length string case * [Java] Small tidy ups. * [Java] Complete implementation of the string encoding and length handling for CBOR + checkstyle fixes. * [Java] Implemented the CBOR enum encoding * [Java] Added test for checking behavior of dropping items when messages cannot fit in buffer and fixed issues with checking the remaining length * [Java] Added more extensive partial encoding test * [Java] Introduce contants and tidy up constants in CborUtil. * [Java] Don't support enums in CborUtil. * [Java] Javadoc. * [Java] Add basic decode structure. * [Java] initial implementation of decoding (with number value) * [Java] Implemented the string decoder + extra refactors * [Java] Added full multikey decode test * [Java] Added more extensive multi-key test and fixed long bug detected from case * [Java] Implemented the truncation logic for long CharSequence values * [Java] Truncation logic refactor due to repetitive blocks * [Java] Tidy up and fix checkstyle. * [Java] Bug fix and tidy. * [Java] Small simplification. * [Java] Passing test for encode and decode of election state event using CBOR. * [Java] Formatting. * [Java] Implemented null encoding (for CharSequence) and boolean encoding * [Java] Added null handling for string length * [Java] Implemented straightforward allowTruncate check * [Java] Fixed CborDecodeTest issues after msgType-related fix * [Java] checkstyle fixes. * [Java] Added boolean and null value decoding + (onValue overload for the boolean case) * [Java] Added edge case tests for encode and decode. Fixed issues with encode and left decode tests disabled * [Java] corrected name of position getter to offset * [Java] Added initial version of test for invalid message for premature termination * [Java] Formatting. * [Java] Move logging code into appropriate packages, specifically, io.aeron.logging for the generic code and io.aeron.<component>.logging for each component. * [Java] Fix javadoc. * [Java] Formatting. * [Java] Formatting. * [Java] Add CborLoggerReaderAgent to write logs to stdout from CBOR messages. Add array structure to message. Add timestamp and type information as header fields in the message. * [Java] minor refactor. * [Java] corrected cutoff points for shouldReceiveInvalidMessageIfEndOfBufferIsReachedBeforeTermination test * [Java] hardened InvalidMessage handling for potential out of bounds exception cases through the decoding code * [Java] Javadoc and checkstyle cleanups. * [Java] refactored common variables and method from CborEncode to CborUtils * [Java] Implemented truncation flag as 4th array element * [Java] Implementation of possible tagging design * [Java] Formatting and test for CborEncode that check tags. * [Java] Implemented CBOR tags for values. * [Java] Refactor to remove some unnecessary overloads. Add enum check in PrintLoggerEventCallback to remove quotes. * [Java] Added event code name handling for CBOR encode and decode. * [Java] Added more extensive testing for CborClusterEventCodecTest.java * [Java] Move logging for driver to logging package. Set up GeneratedLogging pattern for driver event loggers. Implement logFrameOut (with IPv4 and byte buffer). * [Java] General code tidy up and renames. Remove a println and apply a correct assertion. * [Java] General code tidy up and renames. Remove a println and apply a correct assertion. * [Java] More tidy up. * [Java] Add logic for processing byte array to the PrintLoggerEventCallback. * [Java] Create annotation processor to generation implementation using CBOR encoding. * [Java] Refactored out passing eventCode into some Logger methods for DriverEventLogger.java and ClusterEventLogger.java * [Java] Create CBOR logger interface for the archive module with tests. Fix pre-existing checkstyle issues. * [Java] Fix null enum issue. Disable remaining active SBE tests. * [Java] Remove unnecessary parameters from LoggerMethod.java after SBE implementation removal. * [Java] Configure Gradle to use the CBOR logger reader agent. Fix side effect in LoggingTest. * [Java] Add appropriate tag for logFrameOut logging. * [Java] General logging code tidy up. Remove encoder from the GeneratedLogger annotation. Reverse order of address with frameIn/frameOut logs. * [Java] Convert classes to records. * [Java] Tidy up CBor code generator. * [Java] Implementation of rolling file writing for PrintLoggerEventCallback.java * [Java] Added system property support for PrintLoggerEventCallback.java to configure log * [Java] Refactor PrintLoggerEventCallback.java to use strategy pattern for writing to minimize number of if statements. * [Java] Allow dynamic lookup up logger callbacks using the services API. * [Java] Make PrintLoggerEventCallback constructor public and add javadoc. * [Java] Move CollectingEventLogReaderAgent over to using the CBorDecode. * [Java] Prototype of the BinaryRenderer for commands and protocol messages. * [Java] Remove all of the ModuleLogger and implementations. Move DriverLog etc. to the logger package. Add comments to ClusterLog and methods public. * [Java] Fix assertion parameter ordering. * [Java] Implementation for DriverProtocolBinaryRenderer.java and integration with PrintLoggerEventCallback.java. Minor typo correction for class name in service declaration. * [Java] Implementation for driver admin command binary rendering. * [Java] Fixed issue with message ID in DriverProtocolBinaryRenderer.java * [Java] Re-add eventType mask in msgTypeId to fix lookup bug * [Java] Implementation of ArchiveAdminCommandBinaryRenderer. * [Java] Rename ArchiveAdminCommandBinaryRenderer to ArchiveControlBinaryRenderer * [Java] Fix checkstyle after rebase. * [Java] Protections around exceptions when logging. * [Java] Separate address and port. * [Java] Remove old encoders and dissectors. * [Java] Unused class and move to Cbor<EventProcessor> naming scheme. * [Java] Return stdout logging during build. * [Java] Change renderer decoder members and methods to non-static for multi-threaded cases. * [Java] Allow logging of extra/body bytes for certain frame types with an explicit toggle * [Java] Add rolling log header in every file * [Java] Remove extra bytes for logging of authentication requests. Add newlines for binary blobs. * [Java] Include timestamp at log start for logging stream implementation (StreamEventWriter). Fix previous checkstyle issues. * [Java] Standardize switch statement style between BinaryRenderer implementations. * [Java] Remove aeron-agent module. Updated changelog. Update property name for rendering binary data portion of messages. * [Java] Add logging events for the start of the driver, archive and cluster to carry the version information. Trigger these if any logging events are enabled. * [Java] Changelog. * [Java] Add generic test to cover the logging messages reflectively. * [Java] Add defensive guard to prevent unbounded read for buffers in BinaryRenderer implementations. * [Java] Fix failures on Windows by asserting new lines correctly. * [Java] Removed unused value. * [Java] Change static value to thread local to prevent races. * [Java] Fix another line printing test in windows. * [Java] Early exit if unable to allocate space in the ring buffer. * [Java] Javadoc. * [Java] Fix clamping issue in renderDataFrame to truncate bytes correctly in truncated cases. * [Java] Add other non-control request events to complemented set for CONTROL_REQUEST_EVENTS in ArchiveEventLogger.java * [Java] Add limit check to CBOR encode DirectBuffer overload. * [Java] Create system test for oversized logging for both driver and archive. Fix variable length values in ArchiveControlBinaryRenderer.java. Add driver logging test as own Gradle task. Minor truncation text cleanup * [Java] Better formatting of truncated messages. * [Java] Fix ArchiveLoggingSystemTest. --------- Co-authored-by: EmilJohn24 <emil.lopez@weareadaptive.com> | 30 days ago | |
New agreed checkstyle.xml across Aeron repositories and fixes (MissingOverrides and NewLineAtEndOfFile) | 1 month ago | |
[C] Upgrade to `CMake` 4.4.3. | 11 days ago | |
[Java] Upgrade to `SBE` 1.40.1. | 21 days ago | |
[Java] Remove misleading comment | 6 years ago | |
[Java] Enable GC logs and use ParallelGC during tests + collect JVM crash files using custom file names. | 10 months ago | |
[Doc] Tidy up after #2132. | 7 days ago | |
Rewrite of Aeron Logging (#2115) * [Java/Cluster/Client] Add support for enabling event logging without requiring a javaagent. Instead, use a static variable to control enable/disable of event logging. * [Cluster] Move all events from ClusterEventCode into ClusterLog and call as direct method calls instead of relying on ByteBuddy instrumentation from the javaagent. * [Cluster] Fix checkstyle and disable agent tests that broke as a result of the design change. * [Cluster] fixed cluster agent tests by adding restart method for event agent * [Cluster] Added temporary enable all flag to make tests work and re-added disabling feature from old logger * [Archive] similar migrations to using direct logging for Archive based on Cluster changes * [Cluster] Small code cleanup of ClusterModuleLogger. * [Cluster] Remove stack traces errors from ClusterLoggingAgentTest. * [Archive] Tidy up archive logging code. * [Logging] Move CollectingEventLogReaderAgent and MBean to aeron client. * [Cluster] Remove disabled event tyoe from aeron-cluster configuration. Add null check in ClusterEventLogger.logReplicationEnded. * [Driver] applied similar changes as archive and cluster in terms of removing the eventlog java agent * [Archive] Moved archive event tests to aeron-archive module * [All] Moved driver and cluster event logging tests to respective projects/modules and moved common ones to aeron-client * [All] Created @LoggingTest annotation and create isolated Gradle task for it that runs the same reader agent changes * [Client] Moved reader-related object instantiation to EventReaderManager from EventConfiguration * [Logger] refactored EVENT_RING_BUFFER to be indirectly accessed from manager instead * [Build] Remove aeron-agent module. Update build configuration to prevent excessive data to stdout. * [Driver] Add logging enablement test. Add CountingEventReaderAgent to support logging tests. Add logTextData to complete DriverEventCode set. Fix launching of forked logging test JVMs to not launch large numbers of JVMS. * [Archive] apply similar changes to the driver - more specifically, create the logging enablement test and make modifications to the reader agent test such that it only focuses on whether the specific logging events were triggered * [Cluster] apply similar changes to the driver and archive - more specifically, create the logging enablement test and make modifications to the reader agent test such that it only focuses on whether the specific logging events were triggered * [Gradle] created a generic LoggingTest class that will generate all relevant Gradle task for a project via configureLoggingTests static method * [Java] Don't start the logging thread if no logging is configured. * [Java/Driver] Optimise the logging of naks sent by moving the condition ahead of the loop through the image connections. * [Java] Removed unused options from @LoggingTest annotation. * Revert "[Build] Remove aeron-agent module. Update build configuration to prevent excessive data to stdout." This reverts commit 248790010d437ebc2535d46854a1360045adb021. * [Java] Implement java logging agent as a stub that only prints a warning to indicate it is no longer required. * [Java] Formatting. * [Docs/Scripts] Remove references to -javaagent in docs and scripts. * [Java] fixed javadoc issues. * [Java] CodeQL fix. * [Build] Remove unneeded depencencies. * [Java] Spike of using CBor to write encoded version of the log message. * [Java] Implemented general number encoding for CBOR (excludes longs and bigints for now) * [Java] Corrected MAX_VALUE to use unsigned max values instead to minimize byte length of encoding * [Java] Simplified one's complement to inversion * [Java] Implemented length calculation for int case in CborUtil.java * [Java] Added basic CharSequence implementation for the short string case * [Java] Added branching point for indefinite length string case * [Java] extra cleanup * [Java] initial implementation for indefinite length string case * [Java] Small tidy ups. * [Java] Complete implementation of the string encoding and length handling for CBOR + checkstyle fixes. * [Java] Implemented the CBOR enum encoding * [Java] Added test for checking behavior of dropping items when messages cannot fit in buffer and fixed issues with checking the remaining length * [Java] Added more extensive partial encoding test * [Java] Introduce contants and tidy up constants in CborUtil. * [Java] Don't support enums in CborUtil. * [Java] Javadoc. * [Java] Add basic decode structure. * [Java] initial implementation of decoding (with number value) * [Java] Implemented the string decoder + extra refactors * [Java] Added full multikey decode test * [Java] Added more extensive multi-key test and fixed long bug detected from case * [Java] Implemented the truncation logic for long CharSequence values * [Java] Truncation logic refactor due to repetitive blocks * [Java] Tidy up and fix checkstyle. * [Java] Bug fix and tidy. * [Java] Small simplification. * [Java] Passing test for encode and decode of election state event using CBOR. * [Java] Formatting. * [Java] Implemented null encoding (for CharSequence) and boolean encoding * [Java] Added null handling for string length * [Java] Implemented straightforward allowTruncate check * [Java] Fixed CborDecodeTest issues after msgType-related fix * [Java] checkstyle fixes. * [Java] Added boolean and null value decoding + (onValue overload for the boolean case) * [Java] Added edge case tests for encode and decode. Fixed issues with encode and left decode tests disabled * [Java] corrected name of position getter to offset * [Java] Added initial version of test for invalid message for premature termination * [Java] Formatting. * [Java] Move logging code into appropriate packages, specifically, io.aeron.logging for the generic code and io.aeron.<component>.logging for each component. * [Java] Fix javadoc. * [Java] Formatting. * [Java] Formatting. * [Java] Add CborLoggerReaderAgent to write logs to stdout from CBOR messages. Add array structure to message. Add timestamp and type information as header fields in the message. * [Java] minor refactor. * [Java] corrected cutoff points for shouldReceiveInvalidMessageIfEndOfBufferIsReachedBeforeTermination test * [Java] hardened InvalidMessage handling for potential out of bounds exception cases through the decoding code * [Java] Javadoc and checkstyle cleanups. * [Java] refactored common variables and method from CborEncode to CborUtils * [Java] Implemented truncation flag as 4th array element * [Java] Implementation of possible tagging design * [Java] Formatting and test for CborEncode that check tags. * [Java] Implemented CBOR tags for values. * [Java] Refactor to remove some unnecessary overloads. Add enum check in PrintLoggerEventCallback to remove quotes. * [Java] Added event code name handling for CBOR encode and decode. * [Java] Added more extensive testing for CborClusterEventCodecTest.java * [Java] Move logging for driver to logging package. Set up GeneratedLogging pattern for driver event loggers. Implement logFrameOut (with IPv4 and byte buffer). * [Java] General code tidy up and renames. Remove a println and apply a correct assertion. * [Java] General code tidy up and renames. Remove a println and apply a correct assertion. * [Java] More tidy up. * [Java] Add logic for processing byte array to the PrintLoggerEventCallback. * [Java] Create annotation processor to generation implementation using CBOR encoding. * [Java] Refactored out passing eventCode into some Logger methods for DriverEventLogger.java and ClusterEventLogger.java * [Java] Create CBOR logger interface for the archive module with tests. Fix pre-existing checkstyle issues. * [Java] Fix null enum issue. Disable remaining active SBE tests. * [Java] Remove unnecessary parameters from LoggerMethod.java after SBE implementation removal. * [Java] Configure Gradle to use the CBOR logger reader agent. Fix side effect in LoggingTest. * [Java] Add appropriate tag for logFrameOut logging. * [Java] General logging code tidy up. Remove encoder from the GeneratedLogger annotation. Reverse order of address with frameIn/frameOut logs. * [Java] Convert classes to records. * [Java] Tidy up CBor code generator. * [Java] Implementation of rolling file writing for PrintLoggerEventCallback.java * [Java] Added system property support for PrintLoggerEventCallback.java to configure log * [Java] Refactor PrintLoggerEventCallback.java to use strategy pattern for writing to minimize number of if statements. * [Java] Allow dynamic lookup up logger callbacks using the services API. * [Java] Make PrintLoggerEventCallback constructor public and add javadoc. * [Java] Move CollectingEventLogReaderAgent over to using the CBorDecode. * [Java] Prototype of the BinaryRenderer for commands and protocol messages. * [Java] Remove all of the ModuleLogger and implementations. Move DriverLog etc. to the logger package. Add comments to ClusterLog and methods public. * [Java] Fix assertion parameter ordering. * [Java] Implementation for DriverProtocolBinaryRenderer.java and integration with PrintLoggerEventCallback.java. Minor typo correction for class name in service declaration. * [Java] Implementation for driver admin command binary rendering. * [Java] Fixed issue with message ID in DriverProtocolBinaryRenderer.java * [Java] Re-add eventType mask in msgTypeId to fix lookup bug * [Java] Implementation of ArchiveAdminCommandBinaryRenderer. * [Java] Rename ArchiveAdminCommandBinaryRenderer to ArchiveControlBinaryRenderer * [Java] Fix checkstyle after rebase. * [Java] Protections around exceptions when logging. * [Java] Separate address and port. * [Java] Remove old encoders and dissectors. * [Java] Unused class and move to Cbor<EventProcessor> naming scheme. * [Java] Return stdout logging during build. * [Java] Change renderer decoder members and methods to non-static for multi-threaded cases. * [Java] Allow logging of extra/body bytes for certain frame types with an explicit toggle * [Java] Add rolling log header in every file * [Java] Remove extra bytes for logging of authentication requests. Add newlines for binary blobs. * [Java] Include timestamp at log start for logging stream implementation (StreamEventWriter). Fix previous checkstyle issues. * [Java] Standardize switch statement style between BinaryRenderer implementations. * [Java] Remove aeron-agent module. Updated changelog. Update property name for rendering binary data portion of messages. * [Java] Add logging events for the start of the driver, archive and cluster to carry the version information. Trigger these if any logging events are enabled. * [Java] Changelog. * [Java] Add generic test to cover the logging messages reflectively. * [Java] Add defensive guard to prevent unbounded read for buffers in BinaryRenderer implementations. * [Java] Fix failures on Windows by asserting new lines correctly. * [Java] Removed unused value. * [Java] Change static value to thread local to prevent races. * [Java] Fix another line printing test in windows. * [Java] Early exit if unable to allocate space in the ring buffer. * [Java] Javadoc. * [Java] Fix clamping issue in renderDataFrame to truncate bytes correctly in truncated cases. * [Java] Add other non-control request events to complemented set for CONTROL_REQUEST_EVENTS in ArchiveEventLogger.java * [Java] Add limit check to CBOR encode DirectBuffer overload. * [Java] Create system test for oversized logging for both driver and archive. Fix variable length values in ArchiveControlBinaryRenderer.java. Add driver logging test as own Gradle task. Minor truncation text cleanup * [Java] Better formatting of truncated messages. * [Java] Fix ArchiveLoggingSystemTest. --------- Co-authored-by: EmilJohn24 <emil.lopez@weareadaptive.com> | 30 days ago | |
Update project URL to use `aeron-io` organization. | 1 year ago | |
Update licence references to https | 7 years ago | |
Use HTTPS for the Maven Central link | 10 days ago | |
[C] Add Cmake library aliases to better integrate FetchContent with find_package | 2 years ago | |
[Cluster] Send a termination request to the ClusteredServiceContainer when the ConsensusModuleAgent is closed (#2093) * [Cluster] Send a termination request the ClusteredServiceContainer when the ConsensusModuleAgent is closed. Use a clean termination when the ClusteredServiceContainer closed. * [Java] Remove commented out code. * [Java] Include check if the number of services is 0 and don't send termination. * [Java] Send a flag when sending the termination position to indicate whether an ack is required to prevent errors when if the consensus module has already closed and the channel back to the consensus module is closed. * [Java] Bump schema version and add sinceVersion. | 21 days ago | |
[Gradle] Disable auto detection of JVMs to force a specific JVM for test execution in CI. | 1 year ago | |
[Java] Upgrade to `Gradle` 9.6.0. | 2 months ago | |
[Java] Upgrade to `Gradle` 9.6.0. | 2 months ago | |
Update project URL to use `aeron-io` organization. | 1 year ago | |
Rewrite of Aeron Logging (#2115) * [Java/Cluster/Client] Add support for enabling event logging without requiring a javaagent. Instead, use a static variable to control enable/disable of event logging. * [Cluster] Move all events from ClusterEventCode into ClusterLog and call as direct method calls instead of relying on ByteBuddy instrumentation from the javaagent. * [Cluster] Fix checkstyle and disable agent tests that broke as a result of the design change. * [Cluster] fixed cluster agent tests by adding restart method for event agent * [Cluster] Added temporary enable all flag to make tests work and re-added disabling feature from old logger * [Archive] similar migrations to using direct logging for Archive based on Cluster changes * [Cluster] Small code cleanup of ClusterModuleLogger. * [Cluster] Remove stack traces errors from ClusterLoggingAgentTest. * [Archive] Tidy up archive logging code. * [Logging] Move CollectingEventLogReaderAgent and MBean to aeron client. * [Cluster] Remove disabled event tyoe from aeron-cluster configuration. Add null check in ClusterEventLogger.logReplicationEnded. * [Driver] applied similar changes as archive and cluster in terms of removing the eventlog java agent * [Archive] Moved archive event tests to aeron-archive module * [All] Moved driver and cluster event logging tests to respective projects/modules and moved common ones to aeron-client * [All] Created @LoggingTest annotation and create isolated Gradle task for it that runs the same reader agent changes * [Client] Moved reader-related object instantiation to EventReaderManager from EventConfiguration * [Logger] refactored EVENT_RING_BUFFER to be indirectly accessed from manager instead * [Build] Remove aeron-agent module. Update build configuration to prevent excessive data to stdout. * [Driver] Add logging enablement test. Add CountingEventReaderAgent to support logging tests. Add logTextData to complete DriverEventCode set. Fix launching of forked logging test JVMs to not launch large numbers of JVMS. * [Archive] apply similar changes to the driver - more specifically, create the logging enablement test and make modifications to the reader agent test such that it only focuses on whether the specific logging events were triggered * [Cluster] apply similar changes to the driver and archive - more specifically, create the logging enablement test and make modifications to the reader agent test such that it only focuses on whether the specific logging events were triggered * [Gradle] created a generic LoggingTest class that will generate all relevant Gradle task for a project via configureLoggingTests static method * [Java] Don't start the logging thread if no logging is configured. * [Java/Driver] Optimise the logging of naks sent by moving the condition ahead of the loop through the image connections. * [Java] Removed unused options from @LoggingTest annotation. * Revert "[Build] Remove aeron-agent module. Update build configuration to prevent excessive data to stdout." This reverts commit 248790010d437ebc2535d46854a1360045adb021. * [Java] Implement java logging agent as a stub that only prints a warning to indicate it is no longer required. * [Java] Formatting. * [Docs/Scripts] Remove references to -javaagent in docs and scripts. * [Java] fixed javadoc issues. * [Java] CodeQL fix. * [Build] Remove unneeded depencencies. * [Java] Spike of using CBor to write encoded version of the log message. * [Java] Implemented general number encoding for CBOR (excludes longs and bigints for now) * [Java] Corrected MAX_VALUE to use unsigned max values instead to minimize byte length of encoding * [Java] Simplified one's complement to inversion * [Java] Implemented length calculation for int case in CborUtil.java * [Java] Added basic CharSequence implementation for the short string case * [Java] Added branching point for indefinite length string case * [Java] extra cleanup * [Java] initial implementation for indefinite length string case * [Java] Small tidy ups. * [Java] Complete implementation of the string encoding and length handling for CBOR + checkstyle fixes. * [Java] Implemented the CBOR enum encoding * [Java] Added test for checking behavior of dropping items when messages cannot fit in buffer and fixed issues with checking the remaining length * [Java] Added more extensive partial encoding test * [Java] Introduce contants and tidy up constants in CborUtil. * [Java] Don't support enums in CborUtil. * [Java] Javadoc. * [Java] Add basic decode structure. * [Java] initial implementation of decoding (with number value) * [Java] Implemented the string decoder + extra refactors * [Java] Added full multikey decode test * [Java] Added more extensive multi-key test and fixed long bug detected from case * [Java] Implemented the truncation logic for long CharSequence values * [Java] Truncation logic refactor due to repetitive blocks * [Java] Tidy up and fix checkstyle. * [Java] Bug fix and tidy. * [Java] Small simplification. * [Java] Passing test for encode and decode of election state event using CBOR. * [Java] Formatting. * [Java] Implemented null encoding (for CharSequence) and boolean encoding * [Java] Added null handling for string length * [Java] Implemented straightforward allowTruncate check * [Java] Fixed CborDecodeTest issues after msgType-related fix * [Java] checkstyle fixes. * [Java] Added boolean and null value decoding + (onValue overload for the boolean case) * [Java] Added edge case tests for encode and decode. Fixed issues with encode and left decode tests disabled * [Java] corrected name of position getter to offset * [Java] Added initial version of test for invalid message for premature termination * [Java] Formatting. * [Java] Move logging code into appropriate packages, specifically, io.aeron.logging for the generic code and io.aeron.<component>.logging for each component. * [Java] Fix javadoc. * [Java] Formatting. * [Java] Formatting. * [Java] Add CborLoggerReaderAgent to write logs to stdout from CBOR messages. Add array structure to message. Add timestamp and type information as header fields in the message. * [Java] minor refactor. * [Java] corrected cutoff points for shouldReceiveInvalidMessageIfEndOfBufferIsReachedBeforeTermination test * [Java] hardened InvalidMessage handling for potential out of bounds exception cases through the decoding code * [Java] Javadoc and checkstyle cleanups. * [Java] refactored common variables and method from CborEncode to CborUtils * [Java] Implemented truncation flag as 4th array element * [Java] Implementation of possible tagging design * [Java] Formatting and test for CborEncode that check tags. * [Java] Implemented CBOR tags for values. * [Java] Refactor to remove some unnecessary overloads. Add enum check in PrintLoggerEventCallback to remove quotes. * [Java] Added event code name handling for CBOR encode and decode. * [Java] Added more extensive testing for CborClusterEventCodecTest.java * [Java] Move logging for driver to logging package. Set up GeneratedLogging pattern for driver event loggers. Implement logFrameOut (with IPv4 and byte buffer). * [Java] General code tidy up and renames. Remove a println and apply a correct assertion. * [Java] General code tidy up and renames. Remove a println and apply a correct assertion. * [Java] More tidy up. * [Java] Add logic for processing byte array to the PrintLoggerEventCallback. * [Java] Create annotation processor to generation implementation using CBOR encoding. * [Java] Refactored out passing eventCode into some Logger methods for DriverEventLogger.java and ClusterEventLogger.java * [Java] Create CBOR logger interface for the archive module with tests. Fix pre-existing checkstyle issues. * [Java] Fix null enum issue. Disable remaining active SBE tests. * [Java] Remove unnecessary parameters from LoggerMethod.java after SBE implementation removal. * [Java] Configure Gradle to use the CBOR logger reader agent. Fix side effect in LoggingTest. * [Java] Add appropriate tag for logFrameOut logging. * [Java] General logging code tidy up. Remove encoder from the GeneratedLogger annotation. Reverse order of address with frameIn/frameOut logs. * [Java] Convert classes to records. * [Java] Tidy up CBor code generator. * [Java] Implementation of rolling file writing for PrintLoggerEventCallback.java * [Java] Added system property support for PrintLoggerEventCallback.java to configure log * [Java] Refactor PrintLoggerEventCallback.java to use strategy pattern for writing to minimize number of if statements. * [Java] Allow dynamic lookup up logger callbacks using the services API. * [Java] Make PrintLoggerEventCallback constructor public and add javadoc. * [Java] Move CollectingEventLogReaderAgent over to using the CBorDecode. * [Java] Prototype of the BinaryRenderer for commands and protocol messages. * [Java] Remove all of the ModuleLogger and implementations. Move DriverLog etc. to the logger package. Add comments to ClusterLog and methods public. * [Java] Fix assertion parameter ordering. * [Java] Implementation for DriverProtocolBinaryRenderer.java and integration with PrintLoggerEventCallback.java. Minor typo correction for class name in service declaration. * [Java] Implementation for driver admin command binary rendering. * [Java] Fixed issue with message ID in DriverProtocolBinaryRenderer.java * [Java] Re-add eventType mask in msgTypeId to fix lookup bug * [Java] Implementation of ArchiveAdminCommandBinaryRenderer. * [Java] Rename ArchiveAdminCommandBinaryRenderer to ArchiveControlBinaryRenderer * [Java] Fix checkstyle after rebase. * [Java] Protections around exceptions when logging. * [Java] Separate address and port. * [Java] Remove old encoders and dissectors. * [Java] Unused class and move to Cbor<EventProcessor> naming scheme. * [Java] Return stdout logging during build. * [Java] Change renderer decoder members and methods to non-static for multi-threaded cases. * [Java] Allow logging of extra/body bytes for certain frame types with an explicit toggle * [Java] Add rolling log header in every file * [Java] Remove extra bytes for logging of authentication requests. Add newlines for binary blobs. * [Java] Include timestamp at log start for logging stream implementation (StreamEventWriter). Fix previous checkstyle issues. * [Java] Standardize switch statement style between BinaryRenderer implementations. * [Java] Remove aeron-agent module. Updated changelog. Update property name for rendering binary data portion of messages. * [Java] Add logging events for the start of the driver, archive and cluster to carry the version information. Trigger these if any logging events are enabled. * [Java] Changelog. * [Java] Add generic test to cover the logging messages reflectively. * [Java] Add defensive guard to prevent unbounded read for buffers in BinaryRenderer implementations. * [Java] Fix failures on Windows by asserting new lines correctly. * [Java] Removed unused value. * [Java] Change static value to thread local to prevent races. * [Java] Fix another line printing test in windows. * [Java] Early exit if unable to allocate space in the ring buffer. * [Java] Javadoc. * [Java] Fix clamping issue in renderDataFrame to truncate bytes correctly in truncated cases. * [Java] Add other non-control request events to complemented set for CONTROL_REQUEST_EVENTS in ArchiveEventLogger.java * [Java] Add limit check to CBOR encode DirectBuffer overload. * [Java] Create system test for oversized logging for both driver and archive. Fix variable length values in ArchiveControlBinaryRenderer.java. Add driver logging test as own Gradle task. Minor truncation text cleanup * [Java] Better formatting of truncated messages. * [Java] Fix ArchiveLoggingSystemTest. --------- Co-authored-by: EmilJohn24 <emil.lopez@weareadaptive.com> | 30 days ago | |
post release bump | 16 days ago |
Aeron
高效可靠的 UDP 单播、UDP 组播和 IPC 消息传输。本仓库提供 Java、C 和 C++ 客户端,并提供 .NET 客户端。所有客户端都能跨机器高效地交换消息,也可通过 IPC 在同一台机器内高效地交换消息。消息流可由 Archive 模块记录到持久化存储中,供后续或实时回放。Aeron Cluster 支持将容错服务实现为基于 Raft 共识算法的复制状态机。
性能是核心关注点。Aeron 的设计目标是在所有消息系统中实现最高吞吐量、最低且最具可预测性的延迟。Aeron 与 Simple Binary Encoding (SBE) 集成,以实现最佳的消息编解码性能。Aeron 开发中使用的许多数据结构已抽取至 Agrona 项目。
关于使用方法、协议规范、常见问题等详情,请查阅 Wiki。
最新版本信息及变更记录,请参见 变更日志,Java 版本可从 Maven Central 下载。
Aeron 由 Adaptive Financial Consulting 拥有并运营。Aeron 最初由 Martin Thompson 和 Todd Montgomery 创建,Aeron 团队于 2022 年加入 Adaptive。
商业用户如需开始使用 Aeron Premium,请访问 Aeron.io
我们提供一系列服务,包括:
- 面向 Aeron 和 Aeron Cluster 开发与运维的培训。
- 咨询服务,例如,如果您不确定如何设计系统,或需要帮助对系统进行调优。
- 我们还在 Aeron 和 Aeron Cluster 之上提供多项专有增强,例如基于 DPDK 的内核旁路以提升性能,以及基于 ATS 的极速加密。
- 如果您正在构建新的交易系统,我们拥有经验丰富的 Aeron 开发者可以提供帮助。
如果您希望进一步了解以上内容,请通过 sales@aeron.io 与我们联系。
如何使用 Aeron?
- Java 编程指南
- C++11 编程指南
- 最佳实践指南
- 监控与调试
- 配置选项
- 特定通道配置
- Aeron Archive(持久/持久化流式存储)
- Aeron Cluster(容错服务)
- Aeron 文档
Aeron 如何工作?
如何参与 Aeron 开发?
许可证(完整许可证见 LICENSE 文件)
版权所有 2014-2025 Real Logic Limited。
根据 Apache License, Version 2.0(“许可证”)授权; 除非符合许可证,否则不得使用本文件。 您可以在以下网址获取许可证副本:
https://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或双方书面同意,基于许可证分发的软件 均按照 “AS IS” 基础分发,不提供任何明示或暗示的 保证或条件。 有关本许可证项下授予的权限和限制的具体条款,请参阅本许可证。