Commit graph

5509 commits

Author SHA1 Message Date
Joey Hess
e9238e9588 avoid starting a download for a local transfer when the remote already has the key
Turns out that recvkey already does this same check. This avoids a transfer
file being created for the download that never happened, which in turn
will avoid the assistant seeing that the download has finished, when no
transfer actually took place.
2012-09-18 13:59:03 -04:00
Joey Hess
e6d4108fad Merge branch 'master' of ssh://git-annex.branchable.com 2012-09-17 22:37:23 -04:00
Joey Hess
9a2533cf02 blog for the day 2012-09-17 22:36:23 -04:00
Joey Hess
adf5195082 run current branch merge in annex monad
I was seeing some interesting crashes after the previous commit,
when making file changes slightly faster than the assistant could keep up.

error: Ref refs/heads/master is at 7074f8e0a11110c532d06746e334f2fec6af6ab4 but expected 95ea86008d72a40d97a81cfc8fb47a0da92166bd
fatal: cannot lock HEAD ref
Committer crashed: git commit [Param "--allow-empty-message",Param "-m",Param "",Param "--allow-empty",Param "--quiet"] failed
Pusher crashed: thread blocked indefinitely in an STM transaction

Clearly the the merger ended up running at the same time as the committer,
and with both modifying HEAD the committer crashed. I fixed that by
making the Merger run its merge inside the annex monad, which avoids
it running concurrently with other git operations. Also by making
the committer not crash if git fails.

What I don't understand is why the pusher then crashed with a STM deadlock.
That must be in either the DaemonStatusHandle or the FailedPushMap,
and the latter is only used by the pusher. Did the committer's crash somehow
break STM?

The BlockedIndefinitelyOnSTM exception is described as:

-- |The thread is waiting to retry an STM transaction, but there are no
-- other references to any @TVar@s involved, so it can't ever continue.

If the Committer had a reference to a TVar and crashed, I can sort of see
this leading to that exception..

The crash was quite easy to reproduce after the previous commit, but
after making the above change, I have yet to see it again. Here's hoping.
2012-09-17 22:04:43 -04:00
Joey Hess
3c22977e44 deferred downloads
Now when a download is queued and there's no known remote to get it from,
it's added to a deferred download list, which will be retried later.

The Merger thread tries to queue any deferred downloads when it receives
a push to the git-annex branch.

Note that the Merger thread now also forces an update of the git-annex
branch. The assistant was not updating this branch before, and it saw a
(mostly) correct view of state, but now that incoming pushes go to
synced/git-annex, it needs to be merged in.
2012-09-17 21:05:50 -04:00
https://www.google.com/accounts/o8/id?id=AItOawn4bbuawnh-nSo9pAh8irYAcV4MQCcfdHo
ba35a10a1e Added a comment 2012-09-18 00:11:50 +00:00
https://www.google.com/accounts/o8/id?id=AItOawn4bbuawnh-nSo9pAh8irYAcV4MQCcfdHo
1778fa3a79 Added a comment 2012-09-17 23:00:10 +00:00
93.218.139.22
714cf46171 poll vote (My phone (or MP3 player)) 2012-09-17 19:01:43 +00:00
Joey Hess
7a86dc9443 cleanup 2012-09-17 14:58:43 -04:00
Joey Hess
1e37c0c5fc note 2012-09-17 13:43:08 -04:00
Joey Hess
70cf66fded simplify 2012-09-17 13:41:13 -04:00
174.127.226.162
a4c062151d poll vote (Google Drive) 2012-09-17 17:36:16 +00:00
Joey Hess
f0b67b9eee Merge branch 'master' of ssh://git-annex.branchable.com 2012-09-17 13:23:58 -04:00
http://joeyh.name/
1939093e73 Added a comment 2012-09-17 15:32:07 +00:00
https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo
5d4b1bd868 Added a comment 2012-09-17 14:12:13 +00:00
https://www.google.com/accounts/o8/id?id=AItOawnq-RfkVpFN15SWvQ2lpSGAi0XpNQuLxKM
641c4cef0d 2012-09-17 12:49:44 +00:00
Joey Hess
e8188ea611 flip catchDefaultIO 2012-09-17 00:18:07 -04:00
Joey Hess
ba744c84a4 better name for fallback sync refs
Don't expose these as branches in refs/heads/. Instead hide them away in
refs/synced/ where only show-ref will find them.

Make unused only look at branches and tags, not these other things,
so it won't care if some stale sync ref used to use a file.

This means they don't need to be deleted, which could have
led to an incoming sync being missed.
2012-09-16 23:09:08 -04:00
Joey Hess
2081a31fda Merge branch 'master' of ssh://git-annex.branchable.com 2012-09-16 20:14:13 -04:00
Joey Hess
cead5d056e blog for the day 2012-09-16 20:13:32 -04:00
Joey Hess
ddacbbe798 ensure outgoing sync pushes always succeed when repo is accessible
The fallback branches pushed to contain the uuid of the pusher, which is
ugly. That's why syncing doesn't normally use this method.

The merger deletes fallback branches after merging them, to contain the
ugliness, and so unused doesn't look at data from these branches.
(The fallback git-annex branch is left behind for now.)
2012-09-16 19:57:13 -04:00
Joey Hess
6cddda4143 make the merger merge any equivilant sync branch into the current branch
Not just synced/master, but synced/UUID/master, for example
2012-09-16 19:41:26 -04:00
https://www.google.com/accounts/o8/id?id=AItOawn4bbuawnh-nSo9pAh8irYAcV4MQCcfdHo
62da26d4c8 Added a comment 2012-09-16 22:51:00 +00:00
Joey Hess
601ee470af sync: Pushes the git-annex branch to remote/synced/git-annex, rather than directly to remote/git-annex.
This fixes a problem I was seeing in the assistant where two remotes would
attempt to sync with one another at the same time, and both failed pushing
the diverged git-annex branch. Then when both tried to resolve the failed
push, they each modified their git-annex branch, which again each blocked
the other from pushing into it. The result was that the git-annex
branches were perpetually diverged (despite having the same content!) and
once the assistant fell into this trap, it couldn't get out and always
had to do the slow push/fail/pull/merge/push/fail cycle.
2012-09-16 17:54:12 -04:00
http://meep.pl/
1ea5f13230 poll vote (Tahoe-LAFS) 2012-09-16 19:48:51 +00:00
Joey Hess
e61512f42d fix 2012-09-16 13:13:17 -04:00
Joey Hess
ebdc8422db Merge branch 'master' of ssh://git-annex.branchable.com 2012-09-16 13:11:47 -04:00
Joey Hess
a5230cce7c fix display of only blog posts tagged polls 2012-09-16 13:11:12 -04:00
http://joeyh.name/
2b7fbe7cf6 Added a comment 2012-09-16 17:08:50 +00:00
2001:470:1f04:a19:200b:39d4:308f:4f6c
b3e9a121e0 poll vote (My phone (or MP3 player)) 2012-09-16 16:48:19 +00:00
2001:470:1f04:a19:200b:39d4:308f:4f6c
ce3a5acf9f poll vote (My phone (or MP3 player)) 2012-09-16 16:48:14 +00:00
2001:470:1f04:a19:200b:39d4:308f:4f6c
f8ff6577aa poll vote (My phone (or MP3 player)) 2012-09-16 16:48:08 +00:00
https://www.google.com/accounts/o8/id?id=AItOawn4bbuawnh-nSo9pAh8irYAcV4MQCcfdHo
10d4b78bf3 Added a comment: thanx for fast help ;) 2012-09-16 16:09:29 +00:00
2001:638:a00:2a:298a:16f8:72b0:85b5
874321692e poll vote (My phone (or MP3 player)) 2012-09-16 15:14:11 +00:00
80.217.244.158
d5897c3cdc poll vote (My phone (or MP3 player)) 2012-09-16 14:53:35 +00:00
98.207.92.124
93f42da0bd poll vote (Amazon S3) 2012-09-16 06:52:00 +00:00
Joey Hess
6d1068f160 retitle 2012-09-16 02:05:55 -04:00
Joey Hess
0b12db64d8 Avoid crashing on encoding errors in filenames when writing transfer info files and reading from checksum commands. 2012-09-16 01:53:06 -04:00
Joey Hess
947b447626 close 2012-09-16 01:20:14 -04:00
Joey Hess
e028845487 close 2012-09-16 01:19:04 -04:00
Joey Hess
48fd1e629c reinject: When the provided file doesn't match, leave it where it is, rather than moving to .git/annex/bad/ 2012-09-16 01:17:48 -04:00
Joey Hess
719d229d9d Merge branch 'master' of ssh://git-annex.branchable.com 2012-09-15 22:41:06 -04:00
Joey Hess
dd9e1f9831 blog for the day 2012-09-15 22:40:21 -04:00
Joey Hess
da63b7e96c Support repositories created with --separate-git-dir. Closes: #684405 2012-09-15 22:40:04 -04:00
188.61.52.255
d0d9eb1031 poll vote (Amazon Glacier) 2012-09-16 01:17:43 +00:00
188.61.52.255
a404ed33c3 poll vote (Tahoe-LAFS) 2012-09-16 01:17:34 +00:00
188.61.52.255
7e76544945 poll vote (Amazon Glacier) 2012-09-16 01:17:17 +00:00
Joey Hess
ba0334116c more descriptive name for oneshot 2012-09-15 20:46:38 -04:00
Joey Hess
9a9b4b840e Merge branch 'master' of ssh://git-annex.branchable.com 2012-09-15 20:17:03 -04:00
Joey Hess
750c4ac6c2 bugfix: avoid staging but not committing changes to git-annex branch
Branch.get is not able to see changes that have been staged to the index
but not committed. This is a limitation of git cat-file --batch; when
reading from the index, as opposed to from a branch, it does not notice
changes made after the first time it reads the index.

So, had to revert the changes made in 1f73db3469
to make annex.alwayscommit=false stage changes.

Also, ensure that Branch.change and Branch.get always see changes
at all points during a commit, by not deleting journal files when
staging to the index. Delete them only after committing the branch.
Before, there was a race during commits where a different git-annex
could see out-of-date info from the branch while a commit was in progress.

That's also done when updating the branch to merge in remote branches.

In the case where the local git-annex branch has had changes pushed into it
that are not yet reflected in the index, and there are journalled changes
as well, a merge commit has to be done.
2012-09-15 20:15:16 -04:00