Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

commitFinished finalizes the txn-log entry even when RocksDB Commit() returns a hard error

Open
#696 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
cpp, node.js
Domain
backend, databases

Research direction

Trace the async-commit execute path around store->commitFinished(...) and TransactionHandle::close(), including the commitAborted path. Compare the status handling with the #668 IsBusy-retry hasLog semantics and review the #694 discussion; done means the visibility and abort behavior for hard Commit() errors is explicitly resolved without exposing uncommitted data.

Written by the indexing model from the issue text.

Description

Surfaced by the #694 review's domain pass; the behavior is pre-existing (preserved verbatim from the legacy libuv commit path) — #694 did not change it.

In the async-commit execute path, store->commitFinished(...) (which advances the committed-read watermark and makes the log entry visible, e.g. to replication) is gated on committedPosition.logSequenceNumber > 0 && !status.IsBusy() — not on status.ok(). If the txn-log writeBatch succeeded but txn->Commit() then fails with a hard non-Busy error (Aborted/IOError), the log entry is still finalized: the transaction log marks an entry committed/visible whose data never committed to RocksDB locally. A replication source could ship an entry it never applied.

Note the interaction with the abort path: TransactionHandle::close() calls store->commitAborted(committedPosition) for non-Committed transactions, which may compensate — the actual visibility window/semantics between commitFinished at execute time and commitAborted at close time needs tracing before changing the gate to status.ok() (the #668 IsBusy-retry hasLog semantics also touch this).

🤖 Generated with Claude Code

Dominant language
C++
Stars
24
Forks
3
Avg merge
1d 7h
Merged PRs (30d)
49

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from HarperFast/rocksdb-js

All issues in HarperFast/rocksdb-js

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.