Unified ingestion workflow: streaming daemon — Slice 2 (events)#803
Unified ingestion workflow: streaming daemon — Slice 2 (events)#803chowbao wants to merge 2 commits into
Conversation
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
9611dfb to
c031951
Compare
cb5c1e3 to
a0935aa
Compare
c031951 to
62d69a7
Compare
a0935aa to
9c92206
Compare
62d69a7 to
f4ca90f
Compare
de84d1d to
e823bc7
Compare
f4ca90f to
cb57955
Compare
e823bc7 to
a5d2543
Compare
Stacked on slice 1 (the ledgers skeleton); this commit's diff is only the
events additions on top of it. Adds the EVENTS data type to the streaming
daemon:
- events column families in the per-chunk hot RocksDB (hotchunk), so one
atomic synced WriteBatch per ledger now carries ledgers + events;
- the events cold-segment writer in processChunk;
- the chunk:{c}:events catalog key + its sweeps;
- events coverage in the audit (INV-3 disk<->catalog) and in the
crash-injection/convergence suite and lifecycle E2E.
Events is a per-chunk artifact, like ledgers — no window/index subsystem
(that is tx-hash, deferred to slice 3).
Composes the events store (pkg/stores/eventstore, #740/#756) and the events
design (getevents-full-history-design.md, #635), already on
feature/full-history.
Built against RocksDB 10.9.1 (grocksdb 1.10.7); fullhistory tree green on the
non-short suite incl. the lifecycle E2E.
doc.go: events adds no new streaming/*.go files (woven into existing seams); update the coverage line, data-model artifact note, and 'Later slices' pointer (now only tx-hash). golangci-lint (this slice's own new findings, in the files events modifies): - eventstore/hot_store.go: //nolint:nilnil on the three documented idempotent-duplicate (nil hook/ledger, nil err) returns; wrap the IngestLedgerToBatch signature (lll); drop a dead //nolint:cyclop - hotchunk: preallocate the columnFamilies slice (prealloc)
a5d2543 to
f808a54
Compare
|
Superseded by a new 2-phase stacked series that re-slices this work by phase (backfill → live ingestion + lifecycle), with the MVP scope cuts (recovery / audit / convergence / retention-reconfiguration dropped) and the folded-in fixes (cold+hot ingest service +
Each layer builds + |
Slice 2 of the unified ingestion workflow (design #722 / roadmap #777), stacked on slice 1 (#802 — the ledgers skeleton). The base of this PR is
streaming-slice1-ledgers, so the diff shown here is only the events additions on top of the ledger skeleton. Review after slice 1.What this adds (the events data type)
pkg/stores/hotchunk), so one atomic syncedWriteBatchper ledger now carries ledgers + events.processChunk.chunk:{c}:eventscatalog key + its key-driven sweeps.auditcommand (INV-3 disk↔catalog) and in the crash-injection/convergence suite + the in-process lifecycle E2E.Events is a per-chunk artifact, like ledgers — there is no window/index subsystem here (that is tx-hash, slice 3). The events wiring is small and additive on top of the skeleton.
Composes (already on
feature/full-history)pkg/stores/eventstore(#740/#756) and the events design docgetevents-full-history-design.md(#635).Deferred to slice 3
The tx-hash CF,
.bin/.idx, and the per-window rolling-index subsystem (the design's hardest-to-review component).Testing
Built against RocksDB 10.9.1 (grocksdb 1.10.7). Full
fullhistorytree green on the non-short suite incl. the lifecycle E2E:go test ./cmd/stellar-rpc/internal/fullhistory/....