diff options
author | Bob Van Landuyt <bob@gitlab.com> | 2017-06-14 15:20:03 +0200 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-06-26 17:49:30 +0200 |
commit | 171f2d97dcc508ff6031248c6f78fc8ba75e939c (patch) | |
tree | 4e67043988d6f1cb39ccaf0299dffea83debd02c /lib | |
parent | d6a0c288c89765fa8f0e96aedefc608dd7025491 (diff) | |
download | gitlab-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.rb | 14 |
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 |