Run two threads to improve migration running time

This commit is contained in:
Lin Jen-Shin 2017-02-06 12:39:36 +08:00
parent a770227139
commit 25cd5aa228
1 changed files with 17 additions and 3 deletions

View File

@ -4,24 +4,38 @@ class RemoveInactiveDefaultEmailServices < ActiveRecord::Migration
DOWNTIME = false
def up
execute <<-SQL.strip_heredoc
builds_service = spawn <<-SQL.strip_heredoc
DELETE FROM services
WHERE type = 'BuildsEmailService'
AND active = #{false_value}
AND properties = '{"notify_only_broken_builds":true}';
SQL
pipelines_service = spawn <<-SQL.strip_heredoc
DELETE FROM services
WHERE type = 'PipelinesEmailService'
AND active = #{false_value}
AND properties = '{"notify_only_broken_pipelines":true}';
SQL
[builds_service, pipelines_service].each(&:join)
end
def false_value
quote(false)
private
def spawn(query)
Thread.new do
ActiveRecord::Base.connection_pool.with_connection do
ActiveRecord::Base.connection.execute(query)
end
end
end
def quote(value)
ActiveRecord::Base.connection.quote(value)
end
def false_value
quote(false)
end
end