Skip to content

fix: prevent false commit success after DM8 restart - #31

Merged
skhe merged 1 commit into
mainfrom
codex/pin-manual-transaction-connection
Sep 26, 2026
Merged

skhe merged 1 commit into
mainfrom
codex/pin-manual-transaction-connection

Conversation

@skhe

@skhe skhe commented Sep 26, 2026

Copy link
Copy Markdown
Owner

Problem

A real DM8 restart while a DECIMAL(30,8) insert was uncommitted made commit() return success even though a new connection found zero rows. The bridge executed statements and COMMIT through sql.DB, allowing them to use different physical connections after a failure.

Change

  • Pin manual transactions, including direct/prepared statements and COMMIT/ROLLBACK, to one physical connection.
  • Keep autocommit connections eligible for visible-error recovery. Runtime autocommit changes update the DM wire-protocol flag and invalidate statements prepared under the previous mode.
  • Add an isolated ARM DM8 restart regression to the GitHub CI gate. A lost manual transaction must report an error; an already-open autocommit connection must recover.
  • Update the timeout contract: a manual transaction connection whose socket was closed must be discarded and reopened.

Verification

  • Before fix: commit_after_restart=success; persisted_rows=0 on local ARM DM8.
  • After fix: restart verifier passed; lost commit rejected and autocommit connection recovered.
  • Dedicated local DMPYTEST account: 193 real-database cases passed.
  • Targeted autocommit toggle and timeout regressions passed; both Go modules tested; workflow YAML and patch consistency checks passed.

@skhe
skhe merged commit 5ff72ed into main Sep 26, 2026
20 checks passed
@skhe
skhe deleted the codex/pin-manual-transaction-connection branch September 26, 2026 20:28
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