Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(core): Make execution and its data creation atomic #10276

Merged
merged 5 commits into from
Aug 2, 2024

Conversation

tomi
Copy link
Contributor

@tomi tomi commented Aug 1, 2024

Summary

Executions and their data are inserted in two separate insert statements. Before this PR, this wasn't done in a transaction, which could cause executions to be created without execution data. This caused issues like the one fixed in #9903.

Review / Merge checklist

  • PR title and summary are descriptive. (conventions)
  • Docs updated or follow-up ticket created.
  • Tests included.
  • PR Labeled with release/backport (if the PR is an urgent fix that needs to be backported)

Executions and their data are inserted in two separate insert statements. Before this
PR, this wasn't done in a transaction, which could cause executions to be created
without execution data. This caused issues like the one fixed in #9903.
@n8n-assistant n8n-assistant bot added core Enhancement outside /nodes-base and /editor-ui n8n team Authored by the n8n team labels Aug 1, 2024
@tomi tomi requested a review from netroy August 2, 2024 09:42
Copy link
Member

@netroy netroy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for making the changes. Left a couple of more comments.

Comment on lines -77 to -79
if (executionId === undefined) {
throw new ApplicationError('There was an issue assigning an execution id to the execution');
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this check has never made sense. the only reason the types here suggest that executionId could be missing is because we are reusing the variable. This code will never run, since if creating an execution fails, we'll have an unhandled error.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exactly. That's why I changed it to an assert so it satisfies the type system

@tomi tomi requested a review from netroy August 2, 2024 10:19
Copy link
Member

@netroy netroy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks 💟

Copy link

cypress bot commented Aug 2, 2024



Test summary

390 0 0 0Flakiness 0


Run details

Project n8n
Status Passed
Commit 3427753
Started Aug 2, 2024 10:29 AM
Ended Aug 2, 2024 10:33 AM
Duration 04:42 💡
OS Linux Debian -
Browser Electron 118

View run in Cypress Cloud ➡️


This comment has been generated by cypress-bot as a result of this project's GitHub integration settings. You can manage this integration in this project's settings in the Cypress Cloud

Copy link
Contributor

github-actions bot commented Aug 2, 2024

✅ All Cypress E2E specs passed

@tomi tomi merged commit ae50bb9 into master Aug 2, 2024
32 checks passed
@tomi tomi deleted the create-execution-and-its-data-in-atomic-transaction branch August 2, 2024 10:46
MiloradFilipovic added a commit that referenced this pull request Aug 2, 2024
* master:
  refactor(core): Clean up event relays (no-changelog) (#10284)
  fix(editor): Fix execution retry button (#10275)
  feat(core): Show sub-node error on the logs pane. Open logs pane on sub-node error (#10248)
  refactor(core): Move instanceRole to InstanceSettings (no-changelog) (#10242)
  feat(core): Allow filtering executions and users by project in Public API  (#10250)
  fix(core): Make execution and its data creation atomic (#10276)
  refactor(core): Mark schema env vars used by cloud hooks (no-changelog) (#10283)
  ci: Fix DB tests (no-changelog) (#10282)
  feat(core): Support create, delete, edit role for users in Public API (#10279)
  refactor(core): Decouple post workflow execute event from internal hooks (no-changelog) (#10280)
  feat(core): Allow transferring credentials in Public API (#10259)
  feat(core): Support create, read, update, delete projects in Public API (#10269)
  ci: Introduce lint rule `no-type-unsafe-event-emitter` (no-changelog) (#10254)
  fix(core): Surface enterprise trial error message (#10267)
  fix(editor): Enable moving resources only if team projects are available by the license (#10271)
  fix(core): Upgrade tournament to address some XSS vulnerabilities (#10277)

# Conflicts:
#	packages/cli/src/Server.ts
netroy added a commit that referenced this pull request Aug 5, 2024
netroy added a commit that referenced this pull request Aug 5, 2024
@github-actions github-actions bot mentioned this pull request Aug 7, 2024
@janober
Copy link
Member

janober commented Aug 7, 2024

Got released with [email protected]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core Enhancement outside /nodes-base and /editor-ui n8n team Authored by the n8n team Released
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants