@@ -4,6 +4,33 @@ All notable changes to AgentFlow are documented in this file.
44
55## [ Unreleased]
66
7+ ### Added — Flink state backend is configurable (unblocks stand throughput runs)
8+
9+ - The Flink ` state.backend.type ` in ` docker-compose.yml ` is now
10+ ` ${FLINK_STATE_BACKEND:-rocksdb} ` for both JobManager and TaskManager.
11+ Production and CI keep the RocksDB default (incremental checkpoints, off-heap
12+ state); a stand can export ` FLINK_STATE_BACKEND=hashmap ` to run the small
13+ dedup/TTL state in heap. Offered as a candidate workaround for a
14+ RocksDB-async-checkpoint native TaskManager crash observed on a constrained
15+ macOS/Lima Intel VM during a sustained-throughput window (root cause
16+ unconfirmed — may be the VM kernel, so this is a lever to try on the stand,
17+ not a proven fix). The default is unchanged, so CI ` flink-smoke ` keeps
18+ exercising RocksDB.
19+
20+ ### Fixed — webhook dedup and cache-scan window (audit #184 -186)
21+
22+ - ** Webhook dispatcher** dropped a dead bare-` event_id ` membership test — the
23+ seen-set only ever holds ` tenant:event_id ` , so dedup is strictly per-tenant
24+ (regression test added).
25+ - ** Startup scan cursor** now seeds from the newest journal row whose
26+ ` processed_at ` parses, not blindly the newest row: a malformed newest
27+ timestamp left the cursor ` None ` , which made the first scan fetch from the
28+ oldest row and re-deliver the seeded batch.
29+ - ** Metric-cache scan window** raised 200 → 2000 rows
30+ (` DEFAULT_SCAN_WINDOW_ROWS ` ). At the ≥100 eps target the pre-merge journal
31+ emits ~ 2 rows/event, so 200 left no margin for a non-pushing writer; push
32+ feeds still cover writers that publish.
33+
734### Fixed — SSE per-connection dedup cache is bounded (issue #183 follow-up)
835
936- ** ` /v1/stream/events ` kept a bare per-connection seen-set** that grew one
0 commit comments