"simultaneuous" edits not caught #2814
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#2814
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
If two paired magic folders both edit (or create) the same file at "the same time" (i.e. before they learn of the other side's edit) then no conflict is detected (and the file is not synchronized between the two sides).
I think what's happening is this (for the creation case, but same for a simultaneous edit):
(p.s. there's two integration tests for this in the new branch I pushed recently for magic-folder integration tests)
Really, I think this is actually another example of needing a better strategy than simple versioning. Also, it's really that we're not even downloading the other person's file (and therefore also not detecting a conflict).
When Alice and Bob see the new file, they both believe that it's new; so they both upload a "version=0" file. (So in their own private collective-dirs, they each create a new file). When they try to sync next, they both see that they other side has a "version=0" file (which is the same as the biggest version in their local database, so nothing to do).
What the "other" side really needs to determine what to do is something like a vector-clock, so they can tell "bob thought his file was new when he uploaded it" and then alice can conclude that it was a conflict (because she also though it was new).
In this particular case, it might be sufficient to record whose version is in the local database (rather than just the plain version). Then, bob or alice can correctly conclude that they need to download. (I.e. bob will see "bob's version 0" is what he has, but alice also has a version 0 so he can conclude that she uploaded her own version 0 before seeing his, or her version would be 1).
Fixed in https://github.com/tahoe-lafs/tahoe-lafs/pull/325