fix addurl behavior when location and url logs are inconsistent
The url log could have an url for a key, while the location log thinks it's not present in the web. In this case, addurl --file url would not do anything. Fixed it to re-add the web as a location. I don't know how this situation could arise, but I saw it in the wild in the conference_proceedings repo, affecting key URL-s17806003--http://mirror.linux.org.au/pub/linux.conf.au/2014/Wednesday/53-Building_Effective_Alliances_around_the_Trans-Pacific_Partnershi-c0505b631127ccc67e38e637344d988e Investigating the presence log, it looked like that key was originally listed as present in the web, then in commit 56abf9e9f3e691ed9d83513037d4019313321ca3 someone else's git-annex set it and some other things to not present in the web. It would be interesting to know what that user did, but I doubt I'll be able to find out. All I can tell from this investigation is that the inconsistency was not introduced when originally addurl-ing the url.
This commit is contained in:
parent
aba3e11776
commit
589a048a7d
2 changed files with 3 additions and 3 deletions
|
@ -210,7 +210,7 @@ addUrlChecked relaxed url u checkexistssize key
|
||||||
| relaxed = do
|
| relaxed = do
|
||||||
setUrlPresent u key url
|
setUrlPresent u key url
|
||||||
next $ return True
|
next $ return True
|
||||||
| otherwise = ifM (elem url <$> getUrls key)
|
| otherwise = ifM ((elem url <$> getUrls key) <&&> (elem u <$> loggedLocations key))
|
||||||
( next $ return True -- nothing to do
|
( next $ return True -- nothing to do
|
||||||
, do
|
, do
|
||||||
(exists, samesize) <- checkexistssize key
|
(exists, samesize) <- checkexistssize key
|
||||||
|
|
|
@ -54,9 +54,9 @@ getUrlsWithPrefix key prefix = filter (prefix `isPrefixOf`) <$> getUrls key
|
||||||
setUrlPresent :: UUID -> Key -> URLString -> Annex ()
|
setUrlPresent :: UUID -> Key -> URLString -> Annex ()
|
||||||
setUrlPresent uuid key url = do
|
setUrlPresent uuid key url = do
|
||||||
us <- getUrls key
|
us <- getUrls key
|
||||||
unless (url `elem` us) $ do
|
unless (url `elem` us) $
|
||||||
addLog (urlLogFile key) =<< logNow InfoPresent url
|
addLog (urlLogFile key) =<< logNow InfoPresent url
|
||||||
logChange key uuid InfoPresent
|
logChange key uuid InfoPresent
|
||||||
|
|
||||||
setUrlMissing :: UUID -> Key -> URLString -> Annex ()
|
setUrlMissing :: UUID -> Key -> URLString -> Annex ()
|
||||||
setUrlMissing uuid key url = do
|
setUrlMissing uuid key url = do
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue