| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 2.3.0 source code.tar.gz | 2025-09-29 | 357.6 kB | |
| 2.3.0 source code.zip | 2025-09-29 | 641.6 kB | |
| README.md | 2025-09-29 | 3.0 kB | |
| Totals: 3 Items | 1.0 MB | 0 | |
- [Breaking] Changed
org.agrona.concurrent.ShutdownSignalBarrierto use shutdown hooks instead of signals.
Previously ShutdownSignalBarrier relied on intercepting SIGINT and SIGTERM OS signals by overriding JVM's signal handling which was preventing shutdown hooks from be executed. This in turn was breaking applications and frameworks that relied on shutdown hooks for clean termination.
New implementation uses shutdown hooks instead and requires ShutdownSignalBarrier to be explicitly closed.
NB: Failure to close ShutdownSignalBarrier might result in JVM not terminating!
As the result the code using ShutdownSignalBarrier needs to be updated:
- Old:
java
class UsageSample
{
public static void main(final String[] args)
{
try (MyService service = new MyService())
{
new ShutdownSignalBarrier().await();
}
}
}
-
New:
java class UsageSample { public static void main(final String[] args) { try (ShutdownSignalBarrier barrier = new ShutdownSignalBarrier(); MyService service = new MyService()) { barrier.await(); } } }In the above exampleShutdownSignalBarrieris closed last to ensure thatserviceterminates completely beforeShutdownSignalBarriercloses which in turn allows JVM to exit. -
[Breaking] Deprecated
org.agrona.concurrent.SigIntfor removal. Useorg.agrona.concurrent.ShutdownSignalBarrierinstead.
NB: org.agrona.concurrent.SigInt.register(java.lang.Runnable) is unsafe as it overrides SIGINT signal handling of the JVM thus preventing shutdown hooks from being executed.
An example using ShutdownSignalBarrier instead of SigInt:
- Old:
java class FlagSample { public static void main(final String[] args) { final AtomicBoolean running = new AtomicBoolean(false); SigInt.register(() -> running.set(false)); while(running.get()) { ... } } } -
New:
java class FlagSample { public static void main(final String[] args) { final AtomicBoolean running = new AtomicBoolean(true); try (ShutdownSignalBarrier barrier = new ShutdownSignalBarrier(() -> running.set(false)) { while (running.get()) { ... } } } } -
AtomicCounter minor javadoc improvements. (#338)
- Upgrade to
Gradle9.1.0. - Upgrade to
ByteBuddy1.17.7. - Upgrade to
Checkstyle11.1.0. - Upgrade to
JUnit5.13.4. - Upgrade to
Mockito5.20.0. - Upgrade to
Shadow9.2.2. - Upgrade to
Versions0.53.0.