Skip to content

fix: classify unconfirmed JDBC transactions as outcome unknown - #236

Draft
philipgreat wants to merge 4 commits into
fix/p1-jdbc-postcommit-cleanup-20261020from
fix/p1-jdbc-commit-unknown-20261020
Draft

philipgreat wants to merge 4 commits into
fix/p1-jdbc-postcommit-cleanup-20261020from
fix/p1-jdbc-commit-unknown-20261020

Conversation

@philipgreat

@philipgreat philipgreat commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Closes #235. Review-only P1 follow-up stacked on #234, itself stacked on the integrated Committed Mutation candidate. Do not merge this directly into main or bypass the #216 formal chain and #225 audit API decision.

A commit acknowledgement may be lost after durable business-row and Outbox commit. Conversely, restoring autoCommit(true) after an unconfirmed rollback can implicitly commit pending writes. This change reports a sanitized TRANSACTION_OUTCOME_UNKNOWN result, fences the affected mutation ledger before replay, and skips autoCommit restoration when rollback is unconfirmed. A confirmed commit followed only by cleanup faults remains a committed success.

RED/GREEN real-SQLite probes now cover JDBC commit and rollback throwing Error, including an Error with suppressed diagnostics disabled, and a commit failure followed by rollback Error. They also cover a user logging handler throwing Error after confirmed commit. The same graph cannot be blindly retried; a separate graph remains saveable. The original business/JDBC Error is rethrown only after the ledger is fenced where the provider carries it. Operational warnings do not include JDBC diagnostic text.

At exact head edbae2b: GraphTraceSqliteTest passes 44/44 and JdbcCommittedCleanupSqliteTest passes 6/6 in the PR worktree. The affected Maven reactor exits zero. The exact-head examples CI passes. A clean 21-artifact internal Maven package passes immutable publication and a two-round Committed consumer; downloaded-JAR fault suites pass 44+6 twice. The fixed generated Customer application passes save/Q/E twice against this exact internal version with 21 generated library source files unchanged. Current evidence is tracked in teaql-conformance PR #174. Earlier dd32106 and dee5bbe receipts are historical.

This does not determine whether a failed commit actually committed. Applications must reconcile durable business rows and Outbox before a new attempt. Human review, formal-chain integration, non-SQLite fault injection and public release remain open.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant