Skip to content

fix(file-provider): detect lock changes during working set enumeration.#10002

Merged
camilasan merged 2 commits into
masterfrom
bugfix/locking
May 13, 2026
Merged

fix(file-provider): detect lock changes during working set enumeration.#10002
camilasan merged 2 commits into
masterfrom
bugfix/locking

Conversation

@camilasan

@camilasan camilasan commented May 7, 2026

Copy link
Copy Markdown
Member

Resolves

Lock state changes weren't synced between web and Finder because Nextcloud locking doesn't update etags, and the working set enumeration skipped directories with unchanged etags.

Solution: Only skip unchanged directories with no materialised descendants, so directories containing visible files are always re-enumerated. Also preserve lock​Token and visited​Directory in the target-depth read path.

#10011 makes sure visited directories stay in the materialised set, and #10002 makes sure those directories are actually enumerated when they have visible descendants (rather than being skipped due to unchanged etags). Without #10011, a directory could silently lose its visited​Directory flag on eviction and drop out of the working set entirely. Without #10002, even if it stays in the set, lock changes would still be invisible.

Summary

TODO

  • manually test it

Checklist

AI (if applicable)

  • The content of this PR was partly or fully generated using AI

@camilasan camilasan added this to the 33.0.5 milestone May 7, 2026
@camilasan camilasan added the bug label May 7, 2026
@camilasan

Copy link
Copy Markdown
Member Author

/backport to stable-33.0

@camilasan camilasan marked this pull request as ready for review May 11, 2026 14:05
@camilasan camilasan force-pushed the bugfix/locking branch 5 times, most recently from 61cb22e to 5a2da8c Compare May 12, 2026 10:40
@i2h3

i2h3 commented May 12, 2026

Copy link
Copy Markdown
Collaborator

I saw this only now after checking the milestone. I will review tomorrow.

@github-project-automation github-project-automation Bot moved this to 🧭 Planning evaluation (don't pick) in 💻 Desktop Clients team May 12, 2026
@i2h3 i2h3 moved this from 🧭 Planning evaluation (don't pick) to 🏗️ In progress in 💻 Desktop Clients team May 12, 2026
camilasan added 2 commits May 13, 2026 12:52
Nextcloud file locking does not update etags, so the previous
optimisation that skipped child directories with unchanged etags
silently hid lock state changes on nested files. Only skip directories
that are both unchanged and have no materialised descendants.

Also preserve lockToken and visitedDirectory in the target depth read
path, matching the other two code paths.

Signed-off-by: Camila Ayres <hello@camilasan.com>
Add simple unit test for isInSameDatabaseStoreableRemoteState. Use unique identifiers in
lockToken test. Set creationDate in toNKFile() to match toItemMetadata().

Signed-off-by: Camila Ayres <hello@camilasan.com>
@github-actions

Copy link
Copy Markdown
Contributor

Artifact containing the AppImage: nextcloud-appimage-pr-10002.zip

Digest: sha256:2ad2c9ae0748f4a70b2bf4afa27050d8d1d912cd6ed83f6a18af424308f8bee6

To test this change/fix you can download the above artifact file, unzip it, and run it.

Please make sure to quit your existing Nextcloud app and backup your data.

@i2h3 i2h3 added the os: 🍎 macOS Apple macOS, formerly also known as OS X label May 13, 2026
@sonarqubecloud

Copy link
Copy Markdown

@camilasan camilasan merged commit f5f7eb7 into master May 13, 2026
23 checks passed
@camilasan camilasan deleted the bugfix/locking branch May 13, 2026 14:09
@github-project-automation github-project-automation Bot moved this from 🏗️ In progress to ☑️ Done in 💻 Desktop Clients team May 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug feature: locking os: 🍎 macOS Apple macOS, formerly also known as OS X

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants