From 51907ebfbc3c0b6557400955c410ce36c764c571 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Thu, 4 Jun 2026 13:46:04 +0000 Subject: [PATCH] feat(ha-repl-hardening): add batch entries list to WalCatchupEntry schema (task 1.2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add self-referential entries @3 :List(WalCatchupEntry) field with $C.maplistcount("n_entries"). Single-entry path unaffected — n_entries defaults to 0, entries to NULL when not using batch mode. --- .kiro/specs/ha-repl-hardening/tasks.md | 2 +- src/include/typemap.h | 10 ++++++---- src/schema/controller.capnp | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.kiro/specs/ha-repl-hardening/tasks.md b/.kiro/specs/ha-repl-hardening/tasks.md index b5b022ff..f0fab31d 100644 --- a/.kiro/specs/ha-repl-hardening/tasks.md +++ b/.kiro/specs/ha-repl-hardening/tasks.md @@ -17,7 +17,7 @@ - _Requirements: 1.1, 1.3_ - _Boundary: Wire Protocol (controller.capnp)_ -- [ ] 1.2 Extend `WalCatchupEntry` for batch support in controller.capnp +- [x] 1.2 Extend `WalCatchupEntry` for batch support in controller.capnp - Add `entries :List(WalCatchupEntry)` field for multiple entries per message - Regenerate capnp bindings; verify compilation - Compilation succeeds; single-entry decode path still works diff --git a/src/include/typemap.h b/src/include/typemap.h index df2aded8..f3a70f6c 100644 --- a/src/include/typemap.h +++ b/src/include/typemap.h @@ -286,10 +286,12 @@ typedef struct { xce_data_t *payload; } snapshot_transfer_t; -typedef struct { - uint64_t lsn; - uint8_t entry_type; - xce_data_t *payload; +typedef struct wal_catchup_entry { + uint64_t lsn; + uint8_t entry_type; + xce_data_t *payload; + int n_entries; /* batch: number of sub-entries */ + struct wal_catchup_entry **entries; /* batch: array of sub-entry pointers */ } wal_catchup_entry_t; /* ── Persistence Cap'n Proto mapped types (P0-9) ───────────────────── diff --git a/src/schema/controller.capnp b/src/schema/controller.capnp index 7ccf3f38..49ce1c9f 100644 --- a/src/schema/controller.capnp +++ b/src/schema/controller.capnp @@ -838,6 +838,7 @@ struct WalCatchupEntry $C.mapname("wal_catchup_entry_t") { lsn @0 :UInt64 $C.mapname("lsn"); entryType @1 :UInt8 $C.mapname("entry_type"); payload @2 :Data $C.mapname("payload"); + entries @3 :List(WalCatchupEntry) $C.mapname("entries") $C.maplistcount("n_entries"); } struct CtrlHelloRequest $C.mapname("ctrl_hello_req_t") {