Please describe the problem.

I want to use Git Annex as a synchronization tool between external devices. I did set up v7 repositories in two separate file systems placed on physically separate devices. I created a systemd service that fires Git Annex Assistant in each of those file systems as soon as their corresponding devices are mounted. The idea was to get automatic synchronization upon drag and drop of files to back up into either of the file systems. What I noticed so far, is that things do not work well all the time. There are several problems I encountered, but here I want to concentrate only on one.

The first issue is that when doing some operations, at some point, Git Annex Assistant on either side stops synchronizing as if it would be stuck. It's a race condition and cannot be easily reproduced. Hence, I used fuzztest to prove that one can always get into that issue. What I've noticed so far is that when this happens, it means that on either side there one of the Git Annex Assistant processes has spawned a child git-annex transferkeys, which is not present from the beginning but now is stuck there forever. Most probably, this is the reason why synchronization stops. That is during fuzztest, the files will keep accumulating but there will be no more automatic commits and/or pushes.

What steps will reproduce the problem?

Just create two repos in v7 mode, make them remotes of each other, run assistants in each of them, and start fuzztest within each of them as well.

What version of git-annex are you using? On what operating system?

git-annex version: 7.20190322-gece57002c6
build flags: Assistant Webapp Pairing S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify TorrentParser MagicMime Feeds Testsuite
dependency versions: aws-0.21.1 bloomfilter-2.0.1.0 cryptonite-0.25 DAV-1.3.3 feed-1.0.1.0 ghc-8.6.5 http-client-0.6.4 persistent-sqlite-2.9.3 torrent-10000.1.1 uuid-1.3.13 yesod-1.6.0
key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL
remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar hook external
operating system: linux x86_64
supported repository versions: 5 7
upgrade supported from repository versions: 0 1 2 3 4 5 6
local repository version: 7