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

Add UNIQUE index on VirtualRepo to prevent duplicates #463

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ss23
Copy link

@ss23 ss23 commented May 13, 2021

While the code currently verifies whether an entry exists in the VirtualRepo table before creating a new one, it is possible that bugs in the code (such as race conditions) could result in extraneous entries in the table.
This change enforces the entries within the table be unique, preventing the existing of a duplicate entry even if other areas of the code have bugs.

This change does not implement an appropriate migration for the case where a server already has duplicate entries in the VirtualRepo table that would cause the constraint to fail to be added.

This is a partial fix for haiwen/seafile#2449.

While the code currently verifies whether an entry exists in the VirtualRepo table before creating a new one, it is possible that bugs in the code (such as race conditions) could result in extraneous entries in the table.
This change enforces the entries within the table be unique, preventing the existing of a duplicate entry even if other areas of the code have bugs.

This change does not implement an appropriate migration for the case where a server already has duplicate entries in the VirtualRepo table that would cause the constraint to fail to be added.

This is a partial fix for haiwen/seafile#2449.
@killing
Copy link
Member

killing commented Aug 6, 2021

As you mentioned, this may cause problems for installations where duplication already exists. We'll consider using transaction in later versions to prevent duplications.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants