export retrieval fallback to handle S3 remote with partially missing version IDs
When key-based retrieval from a S3 remote with exporttree=yes appendonly=yes fails, fall back to trying to retrieve from the exported tree. This allows downloads of files that were exported to such a remote before versioning was enabled on it. This is useful at least for a transition for users who got into that situation, so they can download content from their S3 remote. May want to remove this in the future though, since normally trying to download the second time is only extra work. This commit was sponsored by Brock Spratlen on Patreon.
This commit is contained in:
parent
9216718fa0
commit
720e5fda5c
2 changed files with 16 additions and 5 deletions
|
@ -141,11 +141,18 @@ adjustExportable r = case M.lookup "exporttree" (config r) of
|
|||
-- with content not of the requested key,
|
||||
-- the content has to be strongly verified.
|
||||
--
|
||||
-- But, appendonly remotes have a key/value store,
|
||||
-- so don't need to use retrieveExport.
|
||||
, retrieveKeyFile = if appendonly r
|
||||
then retrieveKeyFile r
|
||||
else retrieveKeyFileFromExport getexportlocs exportinconflict
|
||||
-- appendonly remotes have a key/value store,
|
||||
-- so don't need to use retrieveExport. However,
|
||||
-- fall back to it if retrieveKeyFile fails.
|
||||
, retrieveKeyFile = \k af dest p ->
|
||||
let retrieveexport = retrieveKeyFileFromExport getexportlocs exportinconflict k af dest p
|
||||
in if appendonly r
|
||||
then do
|
||||
ret@(ok, _v) <- retrieveKeyFile r k af dest p
|
||||
if ok
|
||||
then return ret
|
||||
else retrieveexport
|
||||
else retrieveexport
|
||||
, retrieveKeyFileCheap = if appendonly r
|
||||
then retrieveKeyFileCheap r
|
||||
else \_ _ _ -> return False
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue