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

chore: adding row lock with behavior #1081

Closed
wants to merge 1 commit into from

Conversation

helio-frota
Copy link
Collaborator

To avoid organization deadlock

To avoid organization deadlock
Copy link
Contributor

@ctron ctron left a comment

Choose a reason for hiding this comment

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

Not sure I understand what's the motivation.

@@ -62,6 +65,7 @@ impl Graph {
) -> Result<Option<OrganizationContext>, Error> {
Ok(organization::Entity::find()
.filter(organization::Column::Name.eq(name.into()))
.lock_with_behavior(LockType::Update, LockBehavior::SkipLocked)
Copy link
Contributor

Choose a reason for hiding this comment

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

We are getting an organization, we do we need to lock that row?

Also, why would we want to skip that row in a case it's locked?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

from the docs:
With SKIP LOCKED, any selected rows that cannot be immediately locked are skipped. Skipping locked rows provides an inconsistent view of the data, so this is not suitable for general purpose work, but can be used to avoid lock contention with multiple consumers accessing a queue-like table.

my main motivation for this is but can be used to avoid lock contention with multiple consumers
to solve this update problem

I sent the PR mostly to share the app behavior with the team, I'm not fan of adding db locks

Copy link
Contributor

Choose a reason for hiding this comment

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

So the result would be that anyone getting the organization would lock it (until the transaction expires) and that would make other, concurrent request skip that record?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

What I understand of this is that it blocks the select row and ignores the already blocked, by other concurrent calls.
I think is the same what you wrote.
Again I'm not happy with this also I'm using a small set of files for the upload test via ui.

Copy link
Contributor

Choose a reason for hiding this comment

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

If that's the case, then I don't think it would be a good change.

Copy link
Collaborator Author

@helio-frota helio-frota Dec 6, 2024

Choose a reason for hiding this comment

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

yeah not a problem 👍 the PR is more for me to have second thought thanks

@helio-frota helio-frota closed this Dec 6, 2024
@helio-frota helio-frota deleted the org-row-lock branch December 6, 2024 14:46
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.

2 participants