Skip to content

Configure transactions manually on <3.12 - #5580

Open
adamnovak wants to merge 1 commit into
masterfrom
issues/5579-fix-rollback-on-old-python
Open

Configure transactions manually on <3.12#5580
adamnovak wants to merge 1 commit into
masterfrom
issues/5579-fix-rollback-on-old-python

Conversation

@adamnovak

@adamnovak adamnovak commented Sep 1, 2026

Copy link
Copy Markdown
Member

The "DEFERRED" isolation_level we use on Python 3.12 doesn't actually seem to put table schema changes from the migrations into a transaction we can roll back.

This adds an explicit "BEGIN DEFERRED" which makes the schema changes go away when we rollback(). This very much does not "start a transaction" (see https://sqlite.org/forum/forumpost/98f04f5585b83eb1), so I'm not sure why it works if the database is really in the "DEFERRED" isolation_level which is supposed to be basically the same thing.

Changelog Entry

To be copied to the draft changelog by merger:

  • Toil history database now uses transactions properly for schema changes on Python <3.12.

Reviewer Checklist

  • Make sure it is coming from issues/XXXX-fix-the-thing in the Toil repo, or from an external repo.
    • If it is coming from an external repo, make sure to pull it in for CI with:
      contrib/admin/test-pr otheruser theirbranchname issues/XXXX-fix-the-thing
      
    • If there is no associated issue, create one.
  • Read through the code changes. Make sure that it doesn't have:
    • Addition of trailing whitespace.
    • New variable or member names in camelCase that want to be in snake_case.
    • New functions without type hints.
    • New functions or classes without informative docstrings.
    • Changes to semantics not reflected in the relevant docstrings.
    • New or changed command line options for Toil workflows that are not reflected in docs/running/{cliOptions,cwl,wdl}.rst
    • New features without tests.
  • Comment on the lines of code where problems exist with a review comment. You can shift-click the line numbers in the diff to select multiple lines.
  • Finish the review with an overall description of your opinion.

Merger Checklist

  • Make sure the PR passed tests, including the Gitlab tests, for the most recent commit in its branch.
  • Make sure the PR has been reviewed. If not, review it. If it has been reviewed and any requested changes seem to have been addressed, proceed.
  • Merge with the Github "Squash and merge" feature.
    • If there are multiple authors' commits, add Co-authored-by to give credit to all contributing authors.
  • Copy its recommended changelog entry to the Draft Changelog.
  • Append the issue number in parentheses to the changelog entry.

The "DEFERRED" isolation_level we use on Python 3.12 doesn't *actually*
seem to put table schema changes from the migrations into a transaction
we can roll back.

This adds an explicit "BEGIN DEFERRED" which makes the schema changes go
away when we rollback(). This very much does not "start a transaction"
(see <https://sqlite.org/forum/forumpost/98f04f5585b83eb1>), so I'm not
sure why it works if the database is *really* in the "DEFERRED"
isolation_level which is supposed to be basically the same thing.
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