make removeKey throw exceptions

This commit is contained in:
Joey Hess 2020-05-14 14:08:09 -04:00
parent b5ee97f32a
commit 4be94c67c7
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
28 changed files with 134 additions and 111 deletions

View file

@ -131,7 +131,11 @@ performRemote key afile numcopies remote = do
, "proof:"
, show proof
]
ok <- Remote.removeKey remote key
ok <- tryNonAsync (Remote.removeKey remote key) >>= \case
Right () -> return True
Left e -> do
warning (show e)
return False
next $ cleanupRemote key remote ok
, stop
)

View file

@ -539,14 +539,14 @@ badContentRemote remote localcopy key = do
)
)
dropped <- Remote.removeKey remote key
when dropped $
dropped <- tryNonAsync (Remote.removeKey remote key)
when (isRight dropped) $
Remote.logStatus remote key InfoMissing
return $ case (movedbad, dropped) of
(True, True) -> "moved from " ++ Remote.name remote ++
(True, Right ()) -> "moved from " ++ Remote.name remote ++
" to " ++ destbad
(False, True) -> "dropped from " ++ Remote.name remote
(_, False) -> "failed to drop from" ++ Remote.name remote
(False, Right ()) -> "dropped from " ++ Remote.name remote
(_, Left e) -> "failed to drop from" ++ Remote.name remote ++ ": " ++ show e
runFsck :: Incremental -> ActionItem -> Key -> Annex Bool -> CommandStart
runFsck inc ai key a = stopUnless (needFsck inc key) $

View file

@ -232,7 +232,11 @@ fromPerform src removewhen key afile = do
, show src
, "(" ++ reason ++ ")"
]
ok <- Remote.removeKey src key
ok <- tryNonAsync (Remote.removeKey src key) >>= \case
Right () -> return True
Left e -> do
warning (show e)
return False
next $ Command.Drop.cleanupRemote key src ok
faileddropremote = do
showLongNote "(Use --force to override this check, or adjust numcopies.)"

View file

@ -214,7 +214,7 @@ mkTestTrees runannex mkrs mkunavailr mkexportr mkks = concat $
test :: RunAnnex -> Annex (Maybe Remote) -> Annex Key -> [TestTree]
test runannex mkr mkk =
[ check "removeKey when not present" $ \r k ->
whenwritable r $ remove r k
whenwritable r $ isRight <$> tryNonAsync (remove r k)
, check ("present " ++ show False) $ \r k ->
whenwritable r $ present r k False
, check "storeKey" $ \r k ->
@ -252,7 +252,7 @@ test runannex mkr mkk =
get r k
, check "fsck downloaded object" fsck
, check "removeKey when present" $ \r k ->
whenwritable r $ remove r k
whenwritable r $ isRight <$> tryNonAsync (remove r k)
, check ("present " ++ show False) $ \r k ->
whenwritable r $ present r k False
]
@ -341,7 +341,7 @@ testExportTree runannex mkr mkk1 mkk2 =
testUnavailable :: RunAnnex -> Annex (Maybe Remote) -> Annex Key -> [TestTree]
testUnavailable runannex mkr mkk =
[ check (== Right False) "removeKey" $ \r k ->
[ check isLeft "removeKey" $ \r k ->
Remote.removeKey r k
, check isLeft "storeKey" $ \r k ->
Remote.storeKey r k (AssociatedFile Nothing) nullMeterUpdate