diff options
Diffstat (limited to 'db/post_migrate/20170206040400_remove_inactive_default_email_services.rb')
-rw-r--r-- | db/post_migrate/20170206040400_remove_inactive_default_email_services.rb | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/db/post_migrate/20170206040400_remove_inactive_default_email_services.rb b/db/post_migrate/20170206040400_remove_inactive_default_email_services.rb index 52e7f91bb01..f3863881229 100644 --- a/db/post_migrate/20170206040400_remove_inactive_default_email_services.rb +++ b/db/post_migrate/20170206040400_remove_inactive_default_email_services.rb @@ -6,24 +6,52 @@ class RemoveInactiveDefaultEmailServices < ActiveRecord::Migration disable_ddl_transaction! def up - Gitlab::Database::ThreadedConnectionPool.with_pool(2) do |pool| - pool.execute_async <<-SQL.strip_heredoc + pool = create_connection_pool + threads = [] + + threads << Thread.new do + pool.with_connection do |connection| + connection.execute <<-SQL.strip_heredoc DELETE FROM services WHERE type = 'BuildsEmailService' AND active IS FALSE AND properties = '{"notify_only_broken_builds":true}'; - SQL + SQL + end + end - pool.execute_async <<-SQL.strip_heredoc + threads << Thread.new do + pool.with_connection do |connection| + connection.execute <<-SQL.strip_heredoc DELETE FROM services WHERE type = 'PipelinesEmailService' AND active IS FALSE AND properties = '{"notify_only_broken_pipelines":true}'; - SQL + SQL + end end + + threads.each(&:join) end def down # Nothing can be done to restore the records end + + private + + def create_connection_pool + # See activerecord-4.2.7.1/lib/active_record/connection_adapters/connection_specification.rb + env = Rails.env + original_config = ActiveRecord::Base.configurations + env_config = original_config[env].merge('pool' => 2) + config = original_config.merge(env => env_config) + + spec = + ActiveRecord:: + ConnectionAdapters:: + ConnectionSpecification::Resolver.new(config).spec(env.to_sym) + + ActiveRecord::ConnectionAdapters::ConnectionPool.new(spec) + end end |