syncthing / syncthing/syncthing

Making then removing a folder and adding it to .stignore with the right timing can make it appear as stuck item forever

Open
#9,946 1 comment 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug needs-triage
Dominant language
Go
Stars
88.8k
Forks
5.5k
Avg merge
2d 10h
Merged PRs (30d)
5

Description

What happened?

Steps to reproduce:

  1. Make a new sync share at some folder ~/test on two devices, make them share the folder.
  2. Add an inner empty folder ~/test/inner into the share, wait until it syncs.
  3. Now add an .stignore into the ~/test folder that specifies "inner" as ignored item, and remove the inner folder again, on both sides. The timing of how fast you do this is likely relevant, I'm not sure on the exact timing or order needed for this step.
  4. (Perhaps unneeded) Make a new sync shared folder ~/test/inner on both sides, while leaving the outer sync share in place. Synchronize it between both devices.

If you get unlucky, you'll now have the empty folder to be removed as a stuck unsynced item for eternity:

Image

Syncthing version

v1.29.2 (and likely many versions before, years back)

Platform & operating system

Linux x64 and Linux arm64

Browser version

No response

Relevant log output

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the four-step reproduction using two devices, noting the exact timing and order around .stignore, folder removal, and the nested share. No source files or tests are named in the issue; investigate the synchronization and ignore-handling entry points after reproducing the stuck item. Done means the empty folder is no longer permanently shown as unsynced, with a regression test if the project’s existing tests cover this behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.