GitLab + postgresql10 で DB マイグレーションに失敗した

  • docker-ce 19.01
  • gitlab 11.3.1 -> 11.11.3
  • postgresql 10

で更新をしていると下記のようになった。

Running handlers:
Running handlers complete
Chef Client failed. 9 resources updated in 01 minutes 43 seconds
There was an error running gitlab-ctl reconfigure:

bash[migrate gitlab-rails database] (gitlab::database_migrations line 53) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received ‘1’
—- Begin output of “bash” “/tmp/chef-script20200501-37-rb4dgd” —-
STDOUT: rake aborted!
StandardError: An error has occurred, all later migrations canceled:

PG::UndefinedObject: ERROR: operator class “gin_trgm_ops” does not exist for access method “gin”
: CREATE INDEX CONCURRENTLY “index_tags_on_name_trigram” ON “tags” USING gin (“name” gin_trgm_ops)
/opt/gitlab/embedded/service/gitlab-rails/config/initializers/postgresql_opclasses_support.rb:149:in add_index'<br />/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:69:inblock in add_concurrent_index’
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:254:in disable_statement_timeout'<br />/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:68:inadd_concurrent_index’
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20190206193120_add_index_to_tags.rb:12:in up'<br />/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:56:inblock (3 levels) in <top (required)>’
/opt/gitlab/embedded/bin/bundle:23:in load'<br />/opt/gitlab/embedded/bin/bundle:23:in

‘

Caused by:
ActiveRecord::StatementInvalid: PG::UndefinedObject: ERROR: operator class “gin_trgm_ops” does not exist for access method “gin”
: CREATE INDEX CONCURRENTLY “index_tags_on_name_trigram” ON “tags” USING gin (“name” gin_trgm_ops)
/opt/gitlab/embedded/service/gitlab-rails/config/initializers/postgresql_opclasses_support.rb:149:in add_index'<br />/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:69:inblock in add_concurrent_index’
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:254:in disable_statement_timeout'<br />/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:68:inadd_concurrent_index’
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20190206193120_add_index_to_tags.rb:12:in up'<br />/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:56:inblock (3 levels) in <top (required)>’
/opt/gitlab/embedded/bin/bundle:23:in load'<br />/opt/gitlab/embedded/bin/bundle:23:in
‘

Caused by:
PG::UndefinedObject: ERROR: operator class “gin_trgm_ops” does not exist for access method “gin”
/opt/gitlab/embedded/service/gitlab-rails/config/initializers/postgresql_opclasses_support.rb:149:in add_index'<br />/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:69:inblock in add_concurrent_index’
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:254:in disable_statement_timeout'<br />/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:68:inadd_concurrent_index’
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20190206193120_add_index_to_tags.rb:12:in up'<br />/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:56:inblock (3 levels) in <top (required)>’
/opt/gitlab/embedded/bin/bundle:23:in load'<br />/opt/gitlab/embedded/bin/bundle:23:in
‘
Tasks: TOP => db:migrate
(See full trace by running task with –trace)
== 20190206193120 AddIndexToTags: migrating ===================================
– transaction_open?()
-> 0.0001s
– index_exists?(:tags, :name, {:name=>”index_tags_on_name_trigram”, :using=>:gin, :opclasses=>{:name=>:gin_trgm_ops}, :algorithm=>:concurrently})
-> 0.0099s
– execute(“SET statement_timeout TO 0”)
-> 0.0054s
– add_index(:tags, :name, {:name=>”index_tags_on_name_trigram”, :using=>:gin, :opclasses=>{:name=>:gin_trgm_ops}, :algorithm=>:concurrently})
– execute(“RESET ALL”)
-> 0.0018s
STDERR:
—- End output of “bash” “/tmp/chef-script20200501-37-rb4dgd” —-
Ran “bash” “/tmp/chef-script20200501-37-rb4dgd” returned 1

"gin_trgm_ops" というのが足りないらしい。ググると下記がヒットした。
How to install the additional module pg_trgm

postgresql10-contrib というパッケージを追加でインストールした上で、DBを拡張する必要があるとのことだった。

当環境はopenSUSEのため

sudo zypper in postgresql10-contrib

とインストール後に、対象DBを gitlabhq_prodaction としてCREATE文を実行すると、DBマイグレーションを最後まで実行できた。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です