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 rmdir() to release possible directory lock prior to removing directory #45967

Closed

Conversation

dennisverspuij
Copy link

@dennisverspuij dennisverspuij commented Jun 19, 2024

As described in this Nextcloud community issue some storage systems (such as VirtualBox shared folders) may lock a directory when traversing it using opendir() or a DirectoryIterator. This patch fixes Local::rmdir() to release such locks prior to removing a directory recursively, avoiding failure to do so with 'Text file busy" warnings.

…induced by underlying storage engine (e.g. VirtualBox shared folder)

Signed-off-by: Dennis Verspuij <6680484+dennisverspuij@users.noreply.github.com>
@solracsf solracsf added the 3. to review Waiting for reviews label Jun 19, 2024
@solracsf solracsf added this to the Nextcloud 30 milestone Jun 19, 2024
@solracsf solracsf requested review from a team, ArtificialOwl, yemkareems, sorbaugh and come-nc and removed request for a team June 19, 2024 10:30
Co-authored-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Signed-off-by: Dennis Verspuij <6680484+dennisverspuij@users.noreply.github.com>
@@ -117,6 +117,7 @@ public function rmdir($path) {
}
$it->next();
}
unset($it);
Copy link
Contributor

Choose a reason for hiding this comment

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

That needs a comment to explain what it does.

Copy link
Author

Choose a reason for hiding this comment

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

Please see first commit message, I do not understand what else I need to explain about unsetting the iterator to free the directory lock.

Copy link
Contributor

Choose a reason for hiding this comment

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

You need to explain it in the code with a comment.
Otherwise this will get removed later or confuse future code readers.

Copy link
Author

Choose a reason for hiding this comment

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

Sorry I seem to have closed and messed up this PR, don;t know how I did that.
However, I reset the branch with a single proper commit with the desired comment, can you reopen this PR or should I create a new one with it?

Copy link
Author

Choose a reason for hiding this comment

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

Never mind, I created a new PR.

Copy link

github-actions bot commented Jul 4, 2024

Hello there,
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.

We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.

Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6

Thank you for contributing to Nextcloud and we hope to hear from you soon!

(If you believe you should not receive this message, you can add yourself to the blocklist.)

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

Successfully merging this pull request may close these issues.

None yet

3 participants