-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Moving/renaming huge folder from web UI timeout causing huge oc_filecache inconsistency #25569
Comments
another reason to look into #24509 |
In most cases a rename is a quick operation but if the database has too many entries to update it might take longer. |
Hey, this issue has been closed because the label (This is an automated comment from GitMate.io. |
Hey, this issue has been closed because the label (This is an automated comment from GitMate.io.) |
We're also having issues with user-based encryption after moving huge folders. Could be same issue, but different symptoms. It can be solved by deleting and reuploading the content to regen the keys by a different user. |
Hey, this issue has been closed because the label (This is an automated comment from GitMate.io.) |
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Steps
die();
inView::move()
before the cache update: https://github.com/owncloud/core/blob/v9.0.4/lib/private/files/view.php#L321Expected result
Have a way to cancel or detect the timeout and have no inconsistency between data folder and oc_filecache.
Actual result
Data folder says "test2" but oc_filecache is still on "test".
Run
occ files:scan --all
to fix it.It becomes worse if "test" or "test/sub" was shared with another user.
Whenever that user accessed or writes to the folder, it creates a copy of "test" and leaves "test2" invisible.
Versions
Observed in v9.0.4, likely to happen in any other version.
Some ideas: maybe we need a "oc_transactions" table of some sort where every file transaction adds a row there then deletes it after its done. Or reuse "oc_file_locks" for that purpose with a PHP request id as well. Goal is to detect whenever a PHP process died and left a stray transaction and give OC a chance to either finish it or roll it back, like renaming the folder back.
Open to discussion...
@DeepDiver1975 @butonic @georgehrke @VicDeo @owncloud/filesystem
The text was updated successfully, but these errors were encountered: