v1.1.53
Full-Link Optimization & Bug Fixes
-
isLocalHotKey() HeavyKeeper fallback — When L1 cache entry is a
CacheEntrywithKeyState.NORMAL, added a fallback check tohotKeyDetector.contains()to prevent local detection from always returning false before Worker broadcast arrives. -
Reporter flush lost counters on empty route — Changed
sumThenReset()to first callsum()to read, then confirm route, thensumThenReset()to prevent burst counters from being silently discarded when Worker is not ready. -
BBR maxInFlight floor fix —
maxInFlight()now returnsMath.max(1, floor(...))to prevent BBR deadlock whenminRTis too small (resulting in 0). -
ThresholdLearner dynamic threshold only rises — Lower bound changed from
Math.max(10, ...)toMath.max(hotThreshold, ...)to prevent lowering a fixed threshold of 1000 to 20 under low QPS. -
Worker heartbeat robustness with DependsOn("rabbitAdmin") —
WorkerHeartbeatProducernow waits forRabbitAdminto complete exchange declaration before starting heartbeat sending, eliminating the firstNOT_FOUNDerror. -
initialDelay=pingIntervalMs — First heartbeat delay changed from 0 to
pingIntervalMs(default 1s), working with@DependsOnto allow Worker to start independently. -
StateMachine independent time slicing — StateMachine now has its own
sm-duration-ms(500) andsm-slices(10), independent of the sliding-window detector.confirmCount = ceil(100 / 50) = 2. -
heartbeat.timeout-ms default — Changed from 3000 to 30000 (30 seconds) for production stability.
-
sliding-window.duration-ms default — Changed from 500 to 1000 (1 second) to cover intermittent burst hotspots.
-
warmup-jitter-ms (sync) default — Changed from 100 to 50 (50 milliseconds).
-
warmup-jitter-ms (worker-listener) default — Changed from 100 to 50 (50 milliseconds).
-
confirm-duration-ms default — Changed from 150 to 100 (2-window confirmation).