Skip to content

v1.1.53

Choose a tag to compare

@Hyshmily Hyshmily released this 25 Jun 09:58

Full-Link Optimization & Bug Fixes

  • isLocalHotKey() HeavyKeeper fallback — When L1 cache entry is a CacheEntry with KeyState.NORMAL, added a fallback check to hotKeyDetector.contains() to prevent local detection from always returning false before Worker broadcast arrives.

  • Reporter flush lost counters on empty route — Changed sumThenReset() to first call sum() to read, then confirm route, then sumThenReset() to prevent burst counters from being silently discarded when Worker is not ready.

  • BBR maxInFlight floor fixmaxInFlight() now returns Math.max(1, floor(...)) to prevent BBR deadlock when minRT is too small (resulting in 0).

  • ThresholdLearner dynamic threshold only rises — Lower bound changed from Math.max(10, ...) to Math.max(hotThreshold, ...) to prevent lowering a fixed threshold of 1000 to 20 under low QPS.

  • Worker heartbeat robustness with DependsOn("rabbitAdmin")WorkerHeartbeatProducer now waits for RabbitAdmin to complete exchange declaration before starting heartbeat sending, eliminating the first NOT_FOUND error.

  • initialDelay=pingIntervalMs — First heartbeat delay changed from 0 to pingIntervalMs (default 1s), working with @DependsOn to allow Worker to start independently.

  • StateMachine independent time slicing — StateMachine now has its own sm-duration-ms (500) and sm-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).