DATA-PRESENT working for exporttree=yes remotes
Since the annex-tracking-branch is pushed first, git-annex has already updated the export database when the DATA-PRESENT arrives. Which means that just using checkPresent is enough to verify that there is some file on the special remote in the export location for the key. So, the simplest possible implementation of this happened to work! (I also tested it with chunked specialremotes, which also works, as long as the chunk size used is the same as the configured chunk size. In that case, the lack of a chunk log is not a problem. Doubtful this will ever make sense to use with a chunked special remote though, that gets pretty deep into re-implementing git-annex.) Updated the client side upload tip with a missing step, and reorged for clarity.
This commit is contained in:
parent
54dc1d6f6e
commit
126daf949d
3 changed files with 40 additions and 54 deletions
|
@ -112,10 +112,7 @@ proxySpecialRemote protoversion r ihdl ohdl owaitv oclosedv mexportdb = go
|
|||
go :: Annex ()
|
||||
go = liftIO receivemessage >>= \case
|
||||
Just (CHECKPRESENT k) -> do
|
||||
tryNonAsync (Remote.checkPresent r k) >>= \case
|
||||
Right True -> liftIO $ sendmessage SUCCESS
|
||||
Right False -> liftIO $ sendmessage FAILURE
|
||||
Left err -> liftIO $ propagateerror err
|
||||
checkpresent k
|
||||
go
|
||||
Just (LOCKCONTENT _) -> do
|
||||
-- Special remotes do not support locking content.
|
||||
|
@ -211,22 +208,14 @@ proxySpecialRemote protoversion r ihdl ohdl owaitv oclosedv mexportdb = go
|
|||
nuketmp
|
||||
giveup "protocol error"
|
||||
else store >> nuketmp
|
||||
Just DATA_PRESENT -> tryNonAsync (verifydatapresent k) >>= \case
|
||||
Right True -> liftIO $ sendmessage SUCCESS
|
||||
Right False -> liftIO $ sendmessage FAILURE
|
||||
Left err -> liftIO $ propagateerror err
|
||||
Just DATA_PRESENT -> checkpresent k
|
||||
_ -> giveup "protocol error"
|
||||
|
||||
verifydatapresent k = case mexportdb of
|
||||
Just exportdb -> liftIO (Export.getExportTree exportdb k) >>= \case
|
||||
[] -> verifykey
|
||||
-- XXX TODO check that one of the export locs is populated,
|
||||
-- or for an annexobjects=yes special remote, the
|
||||
-- annexobject file could be populated.
|
||||
locs -> return True
|
||||
Nothing -> verifykey
|
||||
where
|
||||
verifykey = Remote.checkPresent r k
|
||||
checkpresent k =
|
||||
tryNonAsync (Remote.checkPresent r k) >>= \case
|
||||
Right True -> liftIO $ sendmessage SUCCESS
|
||||
Right False -> liftIO $ sendmessage FAILURE
|
||||
Left err -> liftIO $ propagateerror err
|
||||
|
||||
storeput k af tmpfile = case mexportdb of
|
||||
Just exportdb -> liftIO (Export.getExportTree exportdb k) >>= \case
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue