tests and verified that the bug is fixed, in all the cases I identified
This commit is contained in:
parent
6a72045707
commit
b944da832b
2 changed files with 8 additions and 5 deletions
|
@ -20,8 +20,6 @@ import Annex.Content
|
|||
import Annex.Wanted
|
||||
import Annex.Notification
|
||||
|
||||
import Utility.ThreadScheduler
|
||||
|
||||
import System.Log.Logger (debugM)
|
||||
import qualified Data.Set as S
|
||||
|
||||
|
@ -99,7 +97,7 @@ performLocal key afile numcopies preverified = lockContentForRemoval key $ \cont
|
|||
( \proof -> do
|
||||
liftIO $ debugM "drop" $ unwords
|
||||
[ "Dropping from here"
|
||||
, "proof: "
|
||||
, "proof:"
|
||||
, show proof
|
||||
]
|
||||
removeAnnex contentlock
|
||||
|
@ -125,8 +123,6 @@ performRemote key afile numcopies remote = do
|
|||
, "proof: "
|
||||
, show proof
|
||||
]
|
||||
liftIO $ print "waiting to drop.."
|
||||
liftIO $ threadDelaySeconds (Seconds 10)
|
||||
ok <- Remote.removeKey remote key
|
||||
next $ cleanupRemote key remote ok
|
||||
, stop
|
||||
|
|
|
@ -73,6 +73,8 @@ as part of its check of numcopies, and keep it locked
|
|||
while it's asking B to drop it. Then when B tells A to drop it,
|
||||
it'll be locked and that'll fail (and vice-versa).
|
||||
|
||||
> Done, and verified the fix works in this situation.
|
||||
|
||||
# the bug part 2
|
||||
|
||||
<pre>
|
||||
|
@ -116,6 +118,8 @@ Note that this is analgous to the fix above; in both cases
|
|||
the change is from checking if content is in a location, to locking it in
|
||||
that location while performing a drop from another location.
|
||||
|
||||
> Done, and verified the fix works in this situation.
|
||||
|
||||
# the bug part 3 (where it gets really nasty)
|
||||
|
||||
<pre>
|
||||
|
@ -198,6 +202,9 @@ never entirely lost.
|
|||
Dipping below desired numcopies in an unusual race condition, and then
|
||||
doing extra work later to recover may be good enough.
|
||||
|
||||
> Implemented, and I've now verified this solves the case above.
|
||||
> Indeed, neither drop succeeds, because no copy can be locked.
|
||||
|
||||
### to drop from local repo
|
||||
|
||||
When dropping an object from the local repo, lock it for drop,
|
||||
|
|
Loading…
Add table
Reference in a new issue