-
Notifications
You must be signed in to change notification settings - Fork 31
Open
Labels
bugSomething isn't workingSomething isn't workingstatus/reproducedBug has been reproducedBug has been reproduced
Description
π Bug Description
When non-transactional API writes use nonTxnMaxVersion = MaxUint64, reopening DB can initialize oracle with max version and trigger overflow in nextTxnTs.Store(committed + 1).
Subsequent txn commit path can panic on timestamp assertions.
Code path:
db.go:28(nonTxnMaxVersion)db.go:206(recoveredVersion := db.lsm.MaxVersion())txn.go:80/txn.go:91(committed + 1)txn.go:193(AssertTrue)
π Reproduction Steps
- Use non-transactional
Setto write at least one key. - Close DB and reopen.
- Create and commit a txn.
- Observe panic/assert due to timestamp state corruption.
π Expected Behavior
Non-txn sentinel version must not be used to advance transactional oracle timestamp.
Reopen should keep valid monotonic txn timestamp state.
πΈ Screenshots / Logs
Observed in repro: assert panic at txn.go:193 after reopen + txn commit.
π» Environment
- OS: macOS 26.2 (arm64)
- Go Version: go1.24.4
- NoKV Version: current main (local HEAD on 2026-02-11)
π§ Additional Context
High severity for mixed API usage and restart recovery.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingstatus/reproducedBug has been reproducedBug has been reproduced