Migrations should check that they have trigger permissions before creating new columns
ZD ticket: https://gitlab.zendesk.com/agent/tickets/81399, https://gitlab.zendesk.com/agent/tickets/80426
Scenario:
== 20170510101016 RemoveSyncTimeFromProjectMirrorsAndMinimumMirrorSyncTimeFromApplicationSettings: migrating rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: TRIGGER command denied to user 'USERNAME' for table 'web_hooks': CREATE TRIGGER trigger_688beaaec90d_insert
A second reconfigure lead to:
---- Begin output of "bash" "/tmp/chef-script20170729-7281-9ohiqr" ----
STDOUT: rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Duplicate column name 'job_events': ALTER TABLE `web_hooks` ADD `job_events` tinyint(1)/opt/gitlab/embedded/service/gitlab-rails/config/initializers/connection_fix.rb:20:in `execute'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:362:in `rename_column_concurrently'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20170511082759_rename_web_hooks_build_events_to_job_events.rb:12:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:50:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:22:in `load'
/opt/gitlab/embedded/bin/bundle:22:in `<main>'
ActiveRecord::StatementInvalid: Mysql2::Error: Duplicate column name 'job_events': ALTER TABLE `web_hooks` ADD `job_events` tinyint(1)
/opt/gitlab/embedded/service/gitlab-rails/config/initializers/connection_fix.rb:20:in `execute'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:362:in `rename_column_concurrently'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20170511082759_rename_web_hooks_build_events_to_job_events.rb:12:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:50:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:22:in `load'
/opt/gitlab/embedded/bin/bundle:22:in `<main>'
Mysql2::Error: Duplicate column name 'job_events'
/opt/gitlab/embedded/service/gitlab-rails/config/initializers/connection_fix.rb:20:in `execute'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:362:in `rename_column_concurrently'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20170511082759_rename_web_hooks_build_events_to_job_events.rb:12:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:50:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:22:in `load'
/opt/gitlab/embedded/bin/bundle:22:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
== 20170511082759 RenameWebHooksBuildEventsToJobEvents: migrating =============
-- transaction_open?()
-> 0.0000s
-- columns(:web_hooks)
-> 0.0054s
-- add_column(:web_hooks, :job_events, :boolean, {:limit=>1, :precision=>nil, :scale=>nil})
STDERR:
---- End output of "bash" "/tmp/chef-script20170729-7281-9ohiqr" ----
We should verify that users have trigger permissions before we attempt to make them, and if not, don't proceed.
/cc @stanhu is this clear / accurate enough?
Edited by Stan Hu