Commit c13c7e67 authored by Stan Hu's avatar Stan Hu

Fix member expiration not always working

The Sidekiq job `RemoveExpiredMembersWorker` was failing to run in
production because it was hitting statement timeouts because it was
scanning all rows in order. On staging, where it used to scan 4 million
rows, adding an index brought this down to only a few hundred rows.

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/67286
parent 80e9f7f3
---
title: Fix member expiration not always working
merge_request: 32951
author:
type: performance
# frozen_string_literal: true
class AddIndexToMembersOnExpiresAt < ActiveRecord::Migration[5.2]
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
def up
add_concurrent_index :members, :expires_at
end
def down
remove_concurrent_index :members, :expires_at
end
end
......@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2019_09_10_000130) do
ActiveRecord::Schema.define(version: 2019_09_12_061145) do
# These are extensions that must be enabled in order to support this database
enable_extension "pg_trgm"
......@@ -1997,6 +1997,7 @@ ActiveRecord::Schema.define(version: 2019_09_10_000130) do
t.boolean "ldap", default: false, null: false
t.boolean "override", default: false, null: false
t.index ["access_level"], name: "index_members_on_access_level"
t.index ["expires_at"], name: "index_members_on_expires_at"
t.index ["invite_email"], name: "index_members_on_invite_email"
t.index ["invite_token"], name: "index_members_on_invite_token", unique: true
t.index ["requested_at"], name: "index_members_on_requested_at"
......
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