summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@gitlab.com>2017-06-14 15:20:03 +0200
committerBob Van Landuyt <bob@vanlanduyt.co>2017-06-26 17:49:30 +0200
commit171f2d97dcc508ff6031248c6f78fc8ba75e939c (patch)
tree4e67043988d6f1cb39ccaf0299dffea83debd02c /lib
parentd6a0c288c89765fa8f0e96aedefc608dd7025491 (diff)
downloadgitlab-ce-171f2d97dcc508ff6031248c6f78fc8ba75e939c.tar.gz
Keep failed renames in redis
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base.rb14
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base.rb b/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base.rb
index ce82a57fe7e..060203fda12 100644
--- a/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base.rb
+++ b/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base.rb
@@ -134,12 +134,24 @@ module Gitlab
def reverts_for_type(type)
key = redis_key_for_type(type)
+
Gitlab::Redis.with do |redis|
+ failed_reverts = []
+
while rename_info = redis.lpop(key)
path_before_rename, path_after_rename = JSON.parse(rename_info)
say "renaming #{type} from #{path_after_rename} back to #{path_before_rename}"
- yield(path_before_rename, path_after_rename)
+ begin
+ yield(path_before_rename, path_after_rename)
+ rescue StandardError => e
+ failed_reverts << rename_info
+ say "Renaming #{type} from back to #{path_before_rename} failed. "\
+ "Review the error and try again by running the `down` action. \n"\
+ "#{e.message}: \n #{e.backtrace.join("\n")}"
+ end
end
+
+ failed_reverts.each { |rename_info| redis.lpush(key, rename_info) }
end
end