From 3b8d5f03bb4b12748491fbf624dc3deb5a8b3198 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 27 Mar 2014 14:30:36 -0400 Subject: [PATCH] Fix glacier repo creation bug Version 5.20140227 broke creation of glacier repositories, not including the datacenter and vault in their configuration. This bug is fixed, but glacier repositories set up with the broken version of git-annex need to have the datacenter and vault set in order to be usable. This can be done using git annex enableremote to add the missing settings. For details, see http://git-annex.branchable.com/bugs/problems_with_glacier/ --- Remote/Glacier.hs | 8 +++++--- debian/changelog | 7 +++++++ doc/bugs/problems_with_glacier.mdwn | 24 ++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/Remote/Glacier.hs b/Remote/Glacier.hs index fe6f53a771..eb274714b4 100644 --- a/Remote/Glacier.hs +++ b/Remote/Glacier.hs @@ -82,7 +82,7 @@ glacierSetup' enabling u c = do unless enabling $ genVault fullconfig u gitConfigSpecialRemote u fullconfig "glacier" "true" - return (c', u) + return (fullconfig, u) where remotename = fromJust (M.lookup "name" c) defvault = remotename ++ "-" ++ fromUUID u @@ -225,7 +225,8 @@ glacierParams :: RemoteConfig -> [CommandParam] -> [CommandParam] glacierParams c params = datacenter:params where datacenter = Param $ "--region=" ++ - fromJust (M.lookup "datacenter" c) + fromMaybe (error "Missing datacenter configuration") + (M.lookup "datacenter" c) glacierEnv :: RemoteConfig -> UUID -> Annex (Maybe [(String, String)]) glacierEnv c u = go =<< getRemoteCredPairFor "glacier" c creds @@ -239,7 +240,8 @@ glacierEnv c u = go =<< getRemoteCredPairFor "glacier" c creds (uk, pk) = credPairEnvironment creds getVault :: RemoteConfig -> Vault -getVault = fromJust . M.lookup "vault" +getVault = fromMaybe (error "Missing vault configuration") + . M.lookup "vault" archive :: Remote -> Key -> Archive archive r k = fileprefix ++ key2file k diff --git a/debian/changelog b/debian/changelog index f237f019d4..53d653adcc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,13 @@ git-annex (5.20140321) UNRELEASED; urgency=medium been pushed to it, to simplify setup of remote git repositories, including via gitolite. * add --include-dotfiles: New option, perhaps useful for backups. + * Version 5.20140227 broke creation of glacier repositories, + not including the datacenter and vault in their configuration. + This bug is fixed, but glacier repositories set up with the broken + version of git-annex need to have the datacenter and vault set + in order to be usable. This can be done using git annex enableremote + to add the missing settings. For details, see + http://git-annex.branchable.com/bugs/problems_with_glacier/ -- Joey Hess Fri, 21 Mar 2014 14:08:41 -0400 diff --git a/doc/bugs/problems_with_glacier.mdwn b/doc/bugs/problems_with_glacier.mdwn index 967f5b7ff2..60e2f7e698 100644 --- a/doc/bugs/problems_with_glacier.mdwn +++ b/doc/bugs/problems_with_glacier.mdwn @@ -39,3 +39,27 @@ user: "Andrew Mark Kraut " # End of transcript or log. """]] + +> This was a bug introduced last month, it forgot to receord the +> datacenter and vault used when initializing the glacier repository. +> +> I've fixed the bug, but this does not fix repositories created with +> the broken version. I considered just making it use the default +> datacenter and vault for such a repository, but +> a) those may change in the future +> and I don't want to have to worry about breaking such a repository +> going forward and b) someone may have overridden it to use another +> datacenter or vault name and so it shouldn't blindly assume the defaults. +> +> Instead, there's a manual fix up step you need to do. Luckily quite easy. +> For example: +> +> git annex enableremote myglacier datacenter=us-east-1 vault=myglacier-fae9be57-8eb4-47af-932f-136b9b40e669 +> +> The default datacenter is us-east-1, and the default vault name is +> "$remotename-$uuid". So you just have to tell it these values +> once with an enableremote command, and it will then work. + +> You don't even need to get the fixed version of git-annex to work +> around the bug this way.. Although it does have better error messages +> too. [[fixed|done]] --[[Joey]]