gitlab-org--gitlab-foss/db/migrate/20180223120443_create_user_interacted_projects_table.rb
Andreas Brandl 5f35ea146a Fix concurrency issue with migration for user_interacted_projects table.
The concurrency issue originates from inserts on
`user_interacted_projects` from the app while running the post-deploy
migration.

This change comes with a strategy to lock the table while removing
duplicates and creating the unique index (and similar for FK
constraints).

Also, we'll have a non-unique index until the post-deploy migration is
finished to speed up queries during that time.

Closes #44205.
2018-03-14 17:51:47 +01:00

20 lines
502 B
Ruby

class CreateUserInteractedProjectsTable < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
INDEX_NAME = 'user_interacted_projects_non_unique_index'
def up
create_table :user_interacted_projects, id: false do |t|
t.references :user, null: false
t.references :project, null: false
end
add_index :user_interacted_projects, [:project_id, :user_id], name: INDEX_NAME
end
def down
drop_table :user_interacted_projects
end
end