`gitlab-rake geo:db:reset` drops but cannot create the database

First found by Drupal here: https://gitlab.slack.com/archives/C8XUSB5L3/p1545423901023100

Confirmed on my test setup:

root@selective-sync-test-secondary:~#  gitlab-rake geo:db:reset
Dropped database 'gitlabhq_geo_production'
PG::InsufficientPrivilege: ERROR:  permission denied to create database
: CREATE DATABASE "gitlabhq_geo_production" ENCODING = 'unicode' LC_COLLATE = ''
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "collation"=>nil, "database"=>"gitlabhq_geo_production", "pool"=>10, "username"=>"gitlab_geo", "password"=>nil, "host"=>"/var/opt/gitlab/geo-postgresql", "port"=>5431, "socket"=>nil, "sslmode"=>nil, "sslcompression"=>0, "sslrootcert"=>nil, "sslca"=>nil, "load_balancing"=>{"hosts"=>[]}, "prepared_statements"=>nil, "statements_limit"=>nil, "fdw"=>true}
rake aborted!
ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR:  permission denied to create database
: CREATE DATABASE "gitlabhq_geo_production" ENCODING = 'unicode' LC_COLLATE = ''
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/gitlab/geo/database_tasks.rb:12:in `public_send'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/gitlab/geo/database_tasks.rb:12:in `block in method_missing'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/gitlab/geo/database_tasks.rb:181:in `with_geo_db'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/gitlab/geo/database_tasks.rb:11:in `method_missing'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/tasks/geo.rake:19:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/tasks/geo.rake:47:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'

Caused by:
PG::InsufficientPrivilege: ERROR:  permission denied to create database
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/gitlab/geo/database_tasks.rb:12:in `public_send'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/gitlab/geo/database_tasks.rb:12:in `block in method_missing'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/gitlab/geo/database_tasks.rb:181:in `with_geo_db'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/gitlab/geo/database_tasks.rb:11:in `method_missing'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/tasks/geo.rake:19:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/tasks/geo.rake:47:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'
Tasks: TOP => geo:db:create
(See full trace by running task with --trace)

gitlab-rake geo:db:reset is used near the end of https://docs.gitlab.com/ee/administration/geo/replication/troubleshooting.html#how-to-reset-geo-secondary-replication.

cc @stanhu

Edited Dec 21, 2018 by Michael Kozono
Assignee Loading
Time tracking Loading