diff options
author | Joey Hess <joey@kitenet.net> | 2012-10-28 16:05:34 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-10-28 16:05:34 -0400 |
commit | c8cd4ec3082ac7dd24c0377d66c95cb05b51f0ba (patch) | |
tree | d970ff1097f6bf0b0aa5dd371495a2b0932e08e4 /Command/WebApp.hs | |
parent | fce32440a51e51f53022b4025fa005e52525a100 (diff) |
ensure that git-annex branch is pushed after a successful transfer
I now have this topology working:
assistant ---> {bare repo, special remote} <--- assistant
And, I think, also this one:
+----------- bare repo --------+
v v
assistant ---> special remote <--- assistant
While before with assistant <---> assistant connections, both sides got
location info updated after a transfer, in this topology, the bare repo
*might* get its location info updated, but the other assistant has no way to
know that it did. And a special remote doesn't record location info,
so transfers to it won't propigate out location log changes at all.
So, for these to work, after a transfer succeeds, the git-annex branch
needs to be pushed. This is done by recording a synthetic commit has
occurred, which lets the pusher handle pushing out the change (which will
include actually committing any still journalled changes to the git-annex
branch).
Of course, this means rather a lot more syncing action than happened
before. At least the pusher bundles together very close together pushes,
somewhat. Currently it just waits 2 seconds between each push.
Diffstat (limited to 'Command/WebApp.hs')
-rw-r--r-- | Command/WebApp.hs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Command/WebApp.hs b/Command/WebApp.hs index 99f94cd2f..5a372f94d 100644 --- a/Command/WebApp.hs +++ b/Command/WebApp.hs @@ -16,6 +16,7 @@ import Assistant.ScanRemotes import Assistant.TransferQueue import Assistant.TransferSlots import Assistant.Pushes +import Assistant.Commits import Assistant.Threads.WebApp import Assistant.WebApp import Assistant.Install @@ -106,11 +107,13 @@ firstRun = do transferslots <- newTransferSlots urlrenderer <- newUrlRenderer pushnotifier <- newPushNotifier + commitchan <- newCommitChan v <- newEmptyMVar let callback a = Just $ a v void $ runNamedThread dstatus $ webAppThread Nothing dstatus scanremotes - transferqueue transferslots pushnotifier urlrenderer + transferqueue transferslots pushnotifier commitchan + urlrenderer (callback signaler) (callback mainthread) where signaler v = do |