database upgrade script fails while upgrading to gitlab-ce-12.3.0 on centos

Per request by @yorickpeterse, who released this update.

I upgraded from the lastest 12.2.x to 12.3.0 on centos and ran into the problem below:

Most important error: NoMethodError: undefined method type' for nil:NilClass`

After a reboot and running gitlab-ctl reconfigure gitlab is running but the error remains.

Recipe: gitlab::database_migrations
  * bash[migrate gitlab-rails database] action run
    [execute] rake aborted!
              StandardError: An error has occurred, all later migrations canceled:
              
              undefined method `type' for nil:NilClass
              /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:1066:in `create_column_from'
              /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:462:in `rename_column_concurrently'
              /opt/gitlab/embedded/service/gitlab-rails/db/migrate/20190822175441_rename_epics_state_to_state_id.rb:11:in `up'
              /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:49: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:
              NoMethodError: undefined method `type' for nil:NilClass
              /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:1066:in `create_column_from'
              /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:462:in `rename_column_concurrently'
              /opt/gitlab/embedded/service/gitlab-rails/db/migrate/20190822175441_rename_epics_state_to_state_id.rb:11:in `up'
              /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:49: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 => db:migrate
              (See full trace by running task with --trace)
              == 20190822175441 RenameEpicsStateToStateId: migrating ========================
              -- transaction_open?()
                 -> 0.0000s
              -- columns(:epics)
                 -> 0.0020s
    
    ================================================================================
    Error executing action `run` on resource 'bash[migrate gitlab-rails database]'
    ================================================================================
    
    Mixlib::ShellOut::ShellCommandFailed
    ------------------------------------
    Expected process to exit with [0], but received '1'
    ---- Begin output of "bash"  "/root/.tmp/chef-script20190922-1044-mm0br0" ----
    STDOUT: rake aborted!
    StandardError: An error has occurred, all later migrations canceled:
    
    undefined method `type' for nil:NilClass
    /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:1066:in `create_column_from'
    /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:462:in `rename_column_concurrently'
    /opt/gitlab/embedded/service/gitlab-rails/db/migrate/20190822175441_rename_epics_state_to_state_id.rb:11:in `up'
    /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:49: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:
    NoMethodError: undefined method `type' for nil:NilClass
    /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:1066:in `create_column_from'
    /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:462:in `rename_column_concurrently'
    /opt/gitlab/embedded/service/gitlab-rails/db/migrate/20190822175441_rename_epics_state_to_state_id.rb:11:in `up'
    /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:49: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 => db:migrate
    (See full trace by running task with --trace)
    == 20190822175441 RenameEpicsStateToStateId: migrating ========================
    -- transaction_open?()
       -> 0.0000s
    -- columns(:epics)
       -> 0.0020s
    STDERR: 
    ---- End output of "bash"  "/root/.tmp/chef-script20190922-1044-mm0br0" ----
    Ran "bash"  "/root/.tmp/chef-script20190922-1044-mm0br0" returned 1
    
    Resource Declaration:
    ---------------------
    # In /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/recipes/database_migrations.rb
    
     54: bash "migrate gitlab-rails database" do
     55:   code <<-EOH
     56:     set -e
     57:     log_file="#{node['gitlab']['gitlab-rails']['log_directory']}/gitlab-rails-db-migrate-$(date +%Y-%m-%d-%H-%M-%S).log"
     58:     umask 077
     59:     /opt/gitlab/bin/gitlab-rake gitlab:db:configure 2>& 1 | tee ${log_file}
     60:     STATUS=${PIPESTATUS[0]}
     61:     chown #{account_helper.gitlab_user}:#{account_helper.gitlab_group} ${log_file}
     62:     echo $STATUS > #{db_migrate_status_file}
     63:     exit $STATUS
     64:   EOH
     65:   environment env_variables unless env_variables.empty?
     66:   notifies :run, "execute[clear the gitlab-rails cache]", :immediately
     67:   dependent_services.each do |svc|
     68:     notifies :restart, svc, :immediately
     69:   end
     70:   not_if "(test -f #{db_migrate_status_file}) && (cat #{db_migrate_status_file} | grep -Fx 0)"
     71:   only_if { node['gitlab']['gitlab-rails']['auto_migrate'] }
     72: end
     73: 
    
    Compiled Resource:
    ------------------
    # Declared in /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/recipes/database_migrations.rb:54:in `from_file'
    
    bash("migrate gitlab-rails database") do
      action [:run]
      default_guard_interpreter :default
      command nil
      backup 5
      interpreter "bash"
      declared_type :bash
      cookbook_name "gitlab"
      recipe_name "database_migrations"
      code "    set -e\n    log_file=\"/var/log/gitlab/gitlab-rails/gitlab-rails-db-migrate-$(date +%Y-%m-%d-%H-%M-%S).log\"\n    umask 077\n    /opt/gitlab/bin/gitlab-rake gitlab:db:configure 2>& 1 | tee ${log_file}\n    STATUS=${PIPESTATUS[0]}\n    chown git:git ${log_file}\n    echo $STATUS > /var/opt/gitlab/gitlab-rails/upgrade-status/db-migrate-873248b1f0d3a7a5535771a3a1635803-7099ecf77cb\n    exit $STATUS\n"
      domain nil
      user nil
      not_if "(test -f /var/opt/gitlab/gitlab-rails/upgrade-status/db-migrate-873248b1f0d3a7a5535771a3a1635803-7099ecf77cb) && (cat /var/opt/gitlab/gitlab-rails/upgrade-status/db-migrate-873248b1f0d3a7a5535771a3a1635803-7099ecf77cb | grep -Fx 0)"
      only_if { #code block }
    end
    
    System Info:
    ------------
    chef_version=14.13.11
    platform=centos
    platform_version=7.7.1908
    ruby=ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
    program_name=/opt/gitlab/embedded/bin/chef-client
    executable=/opt/gitlab/embedded/bin/chef-client
    

Running handlers:
There was an error running gitlab-ctl reconfigure:

bash[migrate gitlab-rails database] (gitlab::database_migrations line 54) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of "bash"  "/root/.tmp/chef-script20190922-1044-mm0br0" ----
STDOUT: rake aborted!
StandardError: An error has occurred, all later migrations canceled:

undefined method `type' for nil:NilClass
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:1066:in `create_column_from'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:462:in `rename_column_concurrently'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20190822175441_rename_epics_state_to_state_id.rb:11:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:49: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:
NoMethodError: undefined method `type' for nil:NilClass
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:1066:in `create_column_from'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:462:in `rename_column_concurrently'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20190822175441_rename_epics_state_to_state_id.rb:11:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:49: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 => db:migrate
(See full trace by running task with --trace)
== 20190822175441 RenameEpicsStateToStateId: migrating ========================
-- transaction_open?()
   -> 0.0000s
-- columns(:epics)
   -> 0.0020s
STDERR: 
---- End output of "bash"  "/root/.tmp/chef-script20190922-1044-mm0br0" ----
Ran "bash"  "/root/.tmp/chef-script20190922-1044-mm0br0" returned 1

Running handlers complete
Chef Client failed. 3 resources updated in 22 seconds
Assignee Loading
Time tracking Loading