From 95e45007aa7b910f5ee3db08fdfc7639697fbbb0 Mon Sep 17 00:00:00 2001 From: Dai Ha Date: Sat, 15 Aug 2026 04:20:29 +0200 Subject: [PATCH] CB-562: single source for the injector poll cadence; tighten count assertion --- bridged/src/main/java/dev/ltms/bridged/Bridged.java | 5 +---- .../main/java/dev/ltms/bridged/inject/Injector.java | 10 ++++++---- .../java/dev/ltms/bridged/inject/InjectorTest.java | 3 ++- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bridged/src/main/java/dev/ltms/bridged/Bridged.java b/bridged/src/main/java/dev/ltms/bridged/Bridged.java index 87be519..58bd37f 100644 --- a/bridged/src/main/java/dev/ltms/bridged/Bridged.java +++ b/bridged/src/main/java/dev/ltms/bridged/Bridged.java @@ -70,9 +70,6 @@ public final class Bridged { private static final Logger log = LoggerFactory.getLogger(Bridged.class); - /** How often the injector samples a busy worker's status while it has queued work. */ - private static final long INJECT_POLL_MILLIS = 250; - /** CB-504: how long to wait at startup for herdr's socket before serving degraded. */ private static final long HERDR_WAIT_SECONDS = 30; private static final long HERDR_WAIT_POLL_MILLIS = 500; @@ -290,7 +287,7 @@ public final class Bridged { }; Injector injector = new Injector(agents, turnListener, deliverableTo(presence, leads), presence::forget); - StatusPoller poller = new StatusPoller(agents, injector, INJECT_POLL_MILLIS); + StatusPoller poller = new StatusPoller(agents, injector, Injector.POLL_INTERVAL_MILLIS); poller.start(); // CB-307: reply inbox. A broker: block (with a uri) selects the AMQP-backed durable adapter; diff --git a/bridged/src/main/java/dev/ltms/bridged/inject/Injector.java b/bridged/src/main/java/dev/ltms/bridged/inject/Injector.java index 4b41660..82f8854 100644 --- a/bridged/src/main/java/dev/ltms/bridged/inject/Injector.java +++ b/bridged/src/main/java/dev/ltms/bridged/inject/Injector.java @@ -79,11 +79,13 @@ public final class Injector { private static final int READINESS_GRACE_POLLS = 240; /** - * The cadence the poller drives {@link #onStatus} at, matched to {@code Bridged.INJECT_POLL_MILLIS}. - * This class holds no timing itself (it is driven by the poller), so this exists only to state - * the readiness grace in seconds on the CB-562 expiry log instead of hardcoding "60s". + * The single source for the injector poll cadence — how often the {@link StatusPoller} drives + * {@link #onStatus} at. {@code Bridged} passes this to every {@link StatusPoller} it constructs, + * and this class reads it to state the readiness grace in seconds on the CB-562 expiry log + * instead of hardcoding "60s". One constant, so a cadence change cannot silently desync a log + * that claims a grace duration. */ - private static final long POLL_INTERVAL_MILLIS = 250; + public static final long POLL_INTERVAL_MILLIS = 250; private final AgentControl agents; private final TurnListener turnListener; diff --git a/bridged/src/test/java/dev/ltms/bridged/inject/InjectorTest.java b/bridged/src/test/java/dev/ltms/bridged/inject/InjectorTest.java index 4d9efb5..bf276e0 100644 --- a/bridged/src/test/java/dev/ltms/bridged/inject/InjectorTest.java +++ b/bridged/src/test/java/dev/ltms/bridged/inject/InjectorTest.java @@ -401,7 +401,8 @@ class InjectorTest { .orElse("no grace-expiry WARN logged"); assertTrue(warn.contains(T), "the log names the target terminal: " + warn); assertTrue(warn.contains("never reached"), "the log names the real cause: " + warn); - assertTrue(warn.contains("1"), "the log carries the failed message count: " + warn); + assertTrue(warn.contains("1 queued message"), + "the log carries the failed message count: " + warn); } finally { injectorLog.detachAppender(appender); }