writeonce/database/src
shoney.arickathil e37a10b70d fix(db2-delta): borrow the pending re-point, not the stale durable offset
- wo_row_borrow's keys arm folded at hget()'s DURABLE offset even
  when an earlier update in the same drain had only a PENDING
  re-point
- idx_remove_row then hashed the pre-first-update value, found no
  matching bucket entry (already moved by the earlier update), and
  idx_add_row added a second one — N same-drain updates leaked N-1
  entries, unbounded, nothing reclaims them but a restart
- now prefers wo_wal_repoint_offset1() over the durable offset, same
  as back_off already does, closing it for every borrow
- new test: 5 updates to one row in one drain, assert exactly one
  index entry — fails (5) before the fix, passes (1) after

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit d4b12d1908e574419c7af2411e52d02623f7e5b7)
2026-08-30 20:38:03 +02:00
..
CODE-LOGIC.md feat(db2-delta): lift the resident:keys refusal, prove it end to end 2026-08-30 20:37:49 +02:00
db.c feat(db2-delta): wire the request path, defer re-point to the barrier 2026-08-30 20:37:27 +02:00
db.h feat: arc stage 3 T7 — transparent DB actor (WO_T_DB hole closed) 2026-08-21 13:10:26 +02:00
table.c fix(db2-delta): borrow the pending re-point, not the stale durable offset 2026-08-30 20:38:03 +02:00
table.h feat(db2-keys): rewire remaining readers, survive compaction 2026-08-30 20:36:31 +02:00
wal.c feat(db2-delta): replay and compaction fold delta chains 2026-08-30 20:37:27 +02:00
wal.h feat(db2-delta): wire the request path, defer re-point to the barrier 2026-08-30 20:37:27 +02:00