Merge branch 'fix-project-mirror-data-schema' into 'master'
Fix project mirror data schema See merge request gitlab-org/gitlab-ce!18811
This commit is contained in:
commit
f0a0da69d6
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: Fixes database inconsistencies between Community and Enterprise Edition on
|
||||
import state
|
||||
merge_request: 18811
|
||||
author:
|
||||
type: fixed
|
|
@ -0,0 +1,21 @@
|
|||
class AddNotNullConstraintToProjectMirrorDataForeignKey < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
class ProjectImportState < ActiveRecord::Base
|
||||
include EachBatch
|
||||
|
||||
self.table_name = 'project_mirror_data'
|
||||
end
|
||||
|
||||
def up
|
||||
ProjectImportState.where(project_id: nil).delete_all
|
||||
|
||||
change_column_null :project_mirror_data, :project_id, false
|
||||
end
|
||||
|
||||
def down
|
||||
change_column_null :project_mirror_data, :project_id, true
|
||||
end
|
||||
end
|
|
@ -0,0 +1,31 @@
|
|||
class AddUniqueConstraintToProjectMirrorDataProjectIdIndex < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_concurrent_index(:project_mirror_data,
|
||||
:project_id,
|
||||
unique: true,
|
||||
name: 'index_project_mirror_data_on_project_id_unique')
|
||||
|
||||
remove_concurrent_index_by_name(:project_mirror_data, 'index_project_mirror_data_on_project_id')
|
||||
|
||||
rename_index(:project_mirror_data,
|
||||
'index_project_mirror_data_on_project_id_unique',
|
||||
'index_project_mirror_data_on_project_id')
|
||||
end
|
||||
|
||||
def down
|
||||
rename_index(:project_mirror_data,
|
||||
'index_project_mirror_data_on_project_id',
|
||||
'index_project_mirror_data_on_project_id_old')
|
||||
|
||||
add_concurrent_index(:project_mirror_data, :project_id)
|
||||
|
||||
remove_concurrent_index_by_name(:project_mirror_data,
|
||||
'index_project_mirror_data_on_project_id_old')
|
||||
end
|
||||
end
|
|
@ -1529,14 +1529,14 @@ ActiveRecord::Schema.define(version: 20180508135515) do
|
|||
add_index "project_import_data", ["project_id"], name: "index_project_import_data_on_project_id", using: :btree
|
||||
|
||||
create_table "project_mirror_data", force: :cascade do |t|
|
||||
t.integer "project_id"
|
||||
t.integer "project_id", null: false
|
||||
t.string "status"
|
||||
t.string "jid"
|
||||
t.text "last_error"
|
||||
end
|
||||
|
||||
add_index "project_mirror_data", ["jid"], name: "index_project_mirror_data_on_jid", using: :btree
|
||||
add_index "project_mirror_data", ["project_id"], name: "index_project_mirror_data_on_project_id", using: :btree
|
||||
add_index "project_mirror_data", ["project_id"], name: "index_project_mirror_data_on_project_id", unique: true, using: :btree
|
||||
add_index "project_mirror_data", ["status"], name: "index_project_mirror_data_on_status", using: :btree
|
||||
|
||||
create_table "project_statistics", force: :cascade do |t|
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
require 'spec_helper'
|
||||
require Rails.root.join('db', 'migrate', '20180508100222_add_not_null_constraint_to_project_mirror_data_foreign_key.rb')
|
||||
|
||||
describe AddNotNullConstraintToProjectMirrorDataForeignKey, :migration do
|
||||
let(:namespaces) { table(:namespaces) }
|
||||
let(:projects) { table(:projects) }
|
||||
let(:import_state) { table(:project_mirror_data) }
|
||||
|
||||
before do
|
||||
import_state.create!(id: 1, project_id: nil, status: :started)
|
||||
end
|
||||
|
||||
it 'removes every import state without an associated project_id' do
|
||||
expect do
|
||||
subject.up
|
||||
end.to change { import_state.count }.from(1).to(0)
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue