Skip to content

docs(web/guides): abort inside a Wheels transaction rolls back on BoxLang - #4336

Merged
bpamiri merged 1 commit into
developfrom
peter/lift-docs-batch6
Oct 5, 2026
Merged

bpamiri merged 1 commit into
developfrom
peter/lift-docs-batch6

Conversation

@bpamiri

@bpamiri bpamiri commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

Upgrade-guide line for #4335. Before it, on BoxLang a request that ended with abort inside a Wheels transaction kept the writes made before the abort; Lucee and Adobe ColdFusion rolled them back. In 4.2 BoxLang rolls back too. That changes data for a BoxLang app on a released version that, knowingly or not, relied on those writes surviving, so it gets a "Behaviour changes to check" entry.

The new 4.1 → 4.2 section, "abort inside a Wheels transaction rolls it back on BoxLang too":

  • covers invokeWithTransaction(), a nested call that joins it, and a savepoint unit;
  • advises letting the transaction finish before aborting if an app relies on the writes;
  • notes that raw transaction {} blocks are unchanged.

withAdvisoryLock(transaction = true) is left out because it's new in 4.2.

Verified against develop c9722ed: in transactions.cfm, $invokeTransactionMethod() runs the method in a try/finally with no catch clause. When the method neither returned nor threw, the finally runs transaction action="rollback".

#4335's fixed fragment type is right, and its punctuation follows the no-trailing-period convention.

🤖 Generated with Claude Code

…Lang

Add the 4.1 to 4.2 entry for #4335: on BoxLang a request that ends with
abort inside invokeWithTransaction() now rolls back, as on Lucee and
Adobe ColdFusion, where 4.1 kept the writes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bpamiri

bpamiri commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

Review @ 2a616bf: APPROVE (docs only)

  • "On BoxLang, 4.1 kept the writes made before the abort" is right. In v4.1.2's transactions.cfm the only Wheels rollback for a thrown error sits in a catch (any e) (:99–100), with no finally. An abort is never caught, so Wheels never rolled back; Lucee and Adobe roll back the open transaction themselves, BoxLang didn't.
  • The 4.2 side matches the code. fix(model): roll back a Wheels transaction when the request ends with abort inside it #4335's $invokeTransactionMethod() rolls back in a catch-free finally when the method neither returned nor threw. It covers the owner's call, a nested call that joins through the alreadyopen path, and a savepoint unit, since the abort leaves through the owner's frame. The matrix showed this 5/5 on every leg, including all BoxLang legs.
  • The advice is right: returning from the method before aborting commits as usual.
  • "Raw transaction {} blocks aren't managed by Wheels and are unchanged" is accurate, since fix(model): roll back a Wheels transaction when the request ends with abort inside it #4335 doesn't touch them.
  • Placement: the entry sits with the other transaction and job entries.

No findings.

@bpamiri
bpamiri merged commit 5e04f3f into develop Oct 5, 2026
23 checks passed
@bpamiri
bpamiri deleted the peter/lift-docs-batch6 branch October 5, 2026 12:26
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