Re: Fwd: Daemonizing Unison and why this is easier said than done
Greg Troxel <[email protected]> Sun, 15 Oct 2023 15:50:59 -0400
| Newsgroups | gmane.network.unison.devel |
|---|---|
| Message-ID | <[email protected]> |
Josh Marshall <[email protected]> writes: > Good to know that about the fsmonitor feature. Adding everything to > the README isn't what I was getting at. A few bullet points as you > suggest would be sufficient. I might be able to commit for 803. Is > there a current up to date guidelines for me submitting a patch, or > should we figure that out if/when it materializes? I just added 2 lines to README. Guidelines are in CONTRIBUTING.md. > For atomic file actions, I was thinking of something like > https://urldefense.com/v3/__https://linux.die.net/man/1/flock__;!!IBzWLUs!RR-mXLJqksmMHGJdoQ9Kuj62_4YLHYqzYAniAc-KJBHqANYq-o2rvXUrTWMvHUTk0KGTEOfEfZOkmLgX9L9VtZZy$ to lock all files to the acting > process. The reason for this being that if there is an interruption > of some sort which prevents a clean change, then it could be safely > re-attempted and prevent use by the system where the target file is > from using the target file. To first order, Unison only depends on POSIX facilities. flock(2) is, amusingly, from 4.2BSD, and not in POSIX. But I think you are suggesting some sort of transactions. Unison intends to do things in an order such that after a crash of either end, if run again, nothing bad happens. But there is no sense of a transaction where the side being modified transitions from one state that was the result of sync operation to a new state. There are no guarantees that if you update foo and bar on A and then sync to B, and there is a problem (network, full fs, crash) that B will have none of foo and bar or both. Basically if you want postgres with full transactions, use that instead :-) >> The repeat mode can tolerate some failures, such as connection to the server dropping. > Is this something worth poking at to improve? Well, have you run it? What has your experience been? What problems are you having? There are enough problems that bother people that I really don't expect anyone to work on problems that aren't causing annoyances at least. You should be able to trivially use mosh instead of ssh, assuming it is args-compatible, and it seems obvious that it would be.