Track design repository attributes on Geo event

Handle design repositories when moving existing projects
to Legacy Storage.
parent 385488f8
# frozen_string_literal: true
class AddDesignDiskPathToGeoHashedStorageMigratedEvents < ActiveRecord::Migration[5.2]
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
def change
add_column :geo_hashed_storage_migrated_events, :old_design_disk_path, :text
add_column :geo_hashed_storage_migrated_events, :new_design_disk_path, :text
end
end
......@@ -1663,6 +1663,8 @@ ActiveRecord::Schema.define(version: 2019_12_06_122926) do
t.text "new_wiki_disk_path", null: false
t.integer "old_storage_version", limit: 2
t.integer "new_storage_version", limit: 2, null: false
t.text "old_design_disk_path"
t.text "new_design_disk_path"
t.index ["project_id"], name: "index_geo_hashed_storage_migrated_events_on_project_id"
end
......
......@@ -672,7 +672,9 @@ module EE
end
def design_repository
@design_repository ||= DesignManagement::Repository.new(self)
strong_memoize(:design_repository) do
DesignManagement::Repository.new(self)
end
end
def alerts_service_available?
......
......@@ -26,6 +26,7 @@ module EE
if move_design
result &&= move_repository(old_design_disk_path, new_design_disk_path)
project.clear_memoization(:design_repository)
end
result
......
......@@ -13,7 +13,8 @@ module EE
project,
old_storage_version: old_storage_version,
old_disk_path: old_disk_path,
old_wiki_disk_path: old_wiki_disk_path
old_wiki_disk_path: old_wiki_disk_path,
old_design_disk_path: old_design_disk_path
).create!
end
end
......
......@@ -15,7 +15,9 @@ module Geo
old_disk_path: old_disk_path,
new_disk_path: project.disk_path,
old_wiki_disk_path: old_wiki_disk_path,
new_wiki_disk_path: project.wiki.disk_path
new_wiki_disk_path: project.wiki.disk_path,
old_design_disk_path: old_design_disk_path,
new_design_disk_path: project.design_repository.disk_path
)
end
......@@ -30,5 +32,9 @@ module Geo
def old_wiki_disk_path
params.fetch(:old_wiki_disk_path)
end
def old_design_disk_path
params.fetch(:old_design_disk_path, nil)
end
end
end
......@@ -7,11 +7,20 @@ describe Geo::HashedStorageMigratedEventStore do
set(:secondary_node) { create(:geo_node) }
let(:project) { create(:project, path: 'bar') }
let(:project) { create(:project, :design_repo, path: 'bar') }
let(:old_disk_path) { "#{project.namespace.full_path}/foo" }
let(:old_wiki_disk_path) { "#{old_disk_path}.wiki" }
subject { described_class.new(project, old_storage_version: nil, old_disk_path: old_disk_path, old_wiki_disk_path: old_wiki_disk_path) }
let(:old_design_disk_path) { "#{old_disk_path}.design" }
subject do
described_class.new(
project,
old_storage_version: nil,
old_disk_path: old_disk_path,
old_wiki_disk_path: old_wiki_disk_path,
old_design_disk_path: old_design_disk_path
)
end
before do
TestEnv.clean_test_path
......@@ -35,7 +44,9 @@ describe Geo::HashedStorageMigratedEventStore do
old_disk_path: old_disk_path,
new_disk_path: project.disk_path,
old_wiki_disk_path: old_wiki_disk_path,
new_wiki_disk_path: project.wiki.disk_path
new_wiki_disk_path: project.wiki.disk_path,
old_design_disk_path: old_design_disk_path,
new_design_disk_path: project.design_repository.disk_path
)
end
end
......
......@@ -93,7 +93,9 @@ describe Projects::HashedStorage::MigrateRepositoryService do
old_disk_path: legacy_storage.disk_path,
new_disk_path: hashed_storage.disk_path,
old_wiki_disk_path: legacy_storage.disk_path + '.wiki',
new_wiki_disk_path: hashed_storage.disk_path + '.wiki'
new_wiki_disk_path: hashed_storage.disk_path + '.wiki',
old_design_disk_path: legacy_storage.disk_path + '.design',
new_design_disk_path: hashed_storage.disk_path + '.design'
)
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment