Cleanup after adding MR diff's commit_count (try 2)
* processes any pending records which are not migrated yet * bumps import_export version because of new commits_count attribute * removes commits_count fallback method
This commit is contained in:
parent
e6f6f8e7a3
commit
5bb421ecbb
|
@ -197,10 +197,6 @@ class MergeRequestDiff < ActiveRecord::Base
|
||||||
CompareService.new(project, head_commit_sha).execute(project, sha, straight: true)
|
CompareService.new(project, head_commit_sha).execute(project, sha, straight: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
def commits_count
|
|
||||||
super || merge_request_diff_commits.size
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def create_merge_request_diff_files(diffs)
|
def create_merge_request_diff_files(diffs)
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
class AssureCommitsCountForMergeRequestDiff < ActiveRecord::Migration
|
||||||
|
include Gitlab::Database::MigrationHelpers
|
||||||
|
|
||||||
|
DOWNTIME = false
|
||||||
|
|
||||||
|
disable_ddl_transaction!
|
||||||
|
|
||||||
|
class MergeRequestDiff < ActiveRecord::Base
|
||||||
|
self.table_name = 'merge_request_diffs'
|
||||||
|
|
||||||
|
include ::EachBatch
|
||||||
|
end
|
||||||
|
|
||||||
|
def up
|
||||||
|
Gitlab::BackgroundMigration.steal('AddMergeRequestDiffCommitsCount')
|
||||||
|
|
||||||
|
MergeRequestDiff.where(commits_count: nil).each_batch(of: 50) do |batch|
|
||||||
|
range = batch.pluck('MIN(id)', 'MAX(id)').first
|
||||||
|
|
||||||
|
Gitlab::BackgroundMigration::AddMergeRequestDiffCommitsCount.new.perform(*range)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
# noop
|
||||||
|
end
|
||||||
|
end
|
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20180418053107) do
|
ActiveRecord::Schema.define(version: 20180425131009) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
|
|
@ -31,7 +31,8 @@ with all their related data and be moved into a new GitLab instance.
|
||||||
|
|
||||||
| GitLab version | Import/Export version |
|
| GitLab version | Import/Export version |
|
||||||
| ---------------- | --------------------- |
|
| ---------------- | --------------------- |
|
||||||
| 10.4 to current | 0.2.2 |
|
| 10.8 to current | 0.2.3 |
|
||||||
|
| 10.4 | 0.2.2 |
|
||||||
| 10.3 | 0.2.1 |
|
| 10.3 | 0.2.1 |
|
||||||
| 10.0 | 0.2.0 |
|
| 10.0 | 0.2.0 |
|
||||||
| 9.4.0 | 0.1.8 |
|
| 9.4.0 | 0.1.8 |
|
||||||
|
|
|
@ -3,7 +3,7 @@ module Gitlab
|
||||||
extend self
|
extend self
|
||||||
|
|
||||||
# For every version update, the version history in import_export.md has to be kept up to date.
|
# For every version update, the version history in import_export.md has to be kept up to date.
|
||||||
VERSION = '0.2.2'.freeze
|
VERSION = '0.2.3'.freeze
|
||||||
FILENAME_LIMIT = 50
|
FILENAME_LIMIT = 50
|
||||||
|
|
||||||
def export_path(relative_path:)
|
def export_path(relative_path:)
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,32 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
require Rails.root.join('db', 'migrate', '20180425131009_assure_commits_count_for_merge_request_diff.rb')
|
||||||
|
|
||||||
|
describe AssureCommitsCountForMergeRequestDiff, :migration, :sidekiq, :redis do
|
||||||
|
let(:migration) { spy('migration') }
|
||||||
|
|
||||||
|
before do
|
||||||
|
allow(Gitlab::BackgroundMigration::AddMergeRequestDiffCommitsCount)
|
||||||
|
.to receive(:new).and_return(migration)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when there are still unmigrated commit_counts afterwards' do
|
||||||
|
let(:namespaces) { table('namespaces') }
|
||||||
|
let(:projects) { table('projects') }
|
||||||
|
let(:merge_requests) { table('merge_requests') }
|
||||||
|
let(:diffs) { table('merge_request_diffs') }
|
||||||
|
|
||||||
|
before do
|
||||||
|
namespace = namespaces.create(name: 'foo', path: 'foo')
|
||||||
|
project = projects.create!(namespace_id: namespace.id)
|
||||||
|
merge_request = merge_requests.create!(source_branch: 'x', target_branch: 'y', target_project_id: project.id)
|
||||||
|
diffs.create!(commits_count: nil, merge_request_id: merge_request.id)
|
||||||
|
diffs.create!(commits_count: nil, merge_request_id: merge_request.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'migrates commit_counts sequentially in batches' do
|
||||||
|
migrate!
|
||||||
|
|
||||||
|
expect(migration).to have_received(:perform).once
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue