clean up skipped tests
tighter connection handling in scheduler
This commit is contained in:
parent
66ef7976ea
commit
c08a7aee8f
|
@ -34,16 +34,7 @@ module Scheduler
|
||||||
end
|
end
|
||||||
@thread = Thread.new do
|
@thread = Thread.new do
|
||||||
while !@stopped
|
while !@stopped
|
||||||
if @manager.enable_stats
|
process_queue
|
||||||
begin
|
|
||||||
RailsMultisite::ConnectionManagement.establish_connection(db: "default")
|
|
||||||
process_queue
|
|
||||||
ensure
|
|
||||||
ActiveRecord::Base.connection_handler.clear_active_connections!
|
|
||||||
end
|
|
||||||
else
|
|
||||||
process_queue
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -69,6 +60,7 @@ module Scheduler
|
||||||
end
|
end
|
||||||
|
|
||||||
def process_queue
|
def process_queue
|
||||||
|
|
||||||
klass = @queue.deq
|
klass = @queue.deq
|
||||||
return unless klass
|
return unless klass
|
||||||
|
|
||||||
|
@ -83,15 +75,23 @@ module Scheduler
|
||||||
begin
|
begin
|
||||||
info.prev_result = "RUNNING"
|
info.prev_result = "RUNNING"
|
||||||
@mutex.synchronize { info.write! }
|
@mutex.synchronize { info.write! }
|
||||||
|
|
||||||
if @manager.enable_stats
|
if @manager.enable_stats
|
||||||
stat = SchedulerStat.create!(
|
begin
|
||||||
name: klass.to_s,
|
RailsMultisite::ConnectionManagement.establish_connection(db: "default")
|
||||||
hostname: hostname,
|
|
||||||
pid: Process.pid,
|
stat = SchedulerStat.create!(
|
||||||
started_at: Time.zone.now,
|
name: klass.to_s,
|
||||||
live_slots_start: GC.stat[:heap_live_slots]
|
hostname: hostname,
|
||||||
)
|
pid: Process.pid,
|
||||||
|
started_at: Time.zone.now,
|
||||||
|
live_slots_start: GC.stat[:heap_live_slots]
|
||||||
|
)
|
||||||
|
ensure
|
||||||
|
ActiveRecord::Base.connection_handler.clear_active_connections!
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
klass.new.perform
|
klass.new.perform
|
||||||
rescue => e
|
rescue => e
|
||||||
if e.class != Jobs::HandledExceptionWrapper
|
if e.class != Jobs::HandledExceptionWrapper
|
||||||
|
@ -120,6 +120,8 @@ module Scheduler
|
||||||
Discourse.handle_job_exception(ex, {message: "Processing scheduled job queue"})
|
Discourse.handle_job_exception(ex, {message: "Processing scheduled job queue"})
|
||||||
ensure
|
ensure
|
||||||
@running = false
|
@running = false
|
||||||
|
|
||||||
|
ActiveRecord::Base.connection_handler.clear_active_connections!
|
||||||
end
|
end
|
||||||
|
|
||||||
def stop!
|
def stop!
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
require 'rails_helper'
|
|
||||||
require 'demon/base'
|
|
||||||
|
|
||||||
describe Demon do
|
|
||||||
|
|
||||||
class RudeDemon < Demon::Base
|
|
||||||
def self.prefix
|
|
||||||
"rude"
|
|
||||||
end
|
|
||||||
|
|
||||||
def after_fork
|
|
||||||
Signal.trap("HUP"){}
|
|
||||||
Signal.trap("TERM"){}
|
|
||||||
sleep 999999
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
it "can terminate rude demons" do
|
|
||||||
|
|
||||||
skip("forking rspec has side effects")
|
|
||||||
# Forking rspec has all sorts of weird side effects
|
|
||||||
# this spec works but we must skip it to keep rspec
|
|
||||||
# state happy
|
|
||||||
|
|
||||||
|
|
||||||
RudeDemon.start
|
|
||||||
_,demon = RudeDemon.demons.first
|
|
||||||
pid = demon.pid
|
|
||||||
wait_for {
|
|
||||||
demon.alive?
|
|
||||||
}
|
|
||||||
|
|
||||||
demon.stop_timeout = 0.05
|
|
||||||
demon.stop
|
|
||||||
demon.start
|
|
||||||
|
|
||||||
running = !!(Process.kill(0, pid)) rescue false
|
|
||||||
expect(running).to eq(false)
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -16,11 +16,6 @@ describe PrettyText do
|
||||||
n(PrettyText.cook(*args))
|
n(PrettyText.cook(*args))
|
||||||
end
|
end
|
||||||
|
|
||||||
# see: https://github.com/sparklemotion/nokogiri/issues/1173
|
|
||||||
skip 'allows html entities correctly' do
|
|
||||||
expect(PrettyText.cook("ℵ£¢")).to eq("<p>ℵ£¢</p>")
|
|
||||||
end
|
|
||||||
|
|
||||||
let(:wrapped_image) { "<div class=\"lightbox-wrapper\"><a href=\"//localhost:3000/uploads/default/4399/33691397e78b4d75.png\" class=\"lightbox\" title=\"Screen Shot 2014-04-14 at 9.47.10 PM.png\"><img src=\"//localhost:3000/uploads/default/_optimized/bd9/b20/bbbcd6a0c0_655x500.png\" width=\"655\" height=\"500\"><div class=\"meta\">\n<span class=\"filename\">Screen Shot 2014-04-14 at 9.47.10 PM.png</span><span class=\"informations\">966x737 1.47 MB</span><span class=\"expand\"></span>\n</div></a></div>" }
|
let(:wrapped_image) { "<div class=\"lightbox-wrapper\"><a href=\"//localhost:3000/uploads/default/4399/33691397e78b4d75.png\" class=\"lightbox\" title=\"Screen Shot 2014-04-14 at 9.47.10 PM.png\"><img src=\"//localhost:3000/uploads/default/_optimized/bd9/b20/bbbcd6a0c0_655x500.png\" width=\"655\" height=\"500\"><div class=\"meta\">\n<span class=\"filename\">Screen Shot 2014-04-14 at 9.47.10 PM.png</span><span class=\"informations\">966x737 1.47 MB</span><span class=\"expand\"></span>\n</div></a></div>" }
|
||||||
let(:wrapped_image_excerpt) { }
|
let(:wrapped_image_excerpt) { }
|
||||||
|
|
||||||
|
|
|
@ -59,11 +59,11 @@ describe Scheduler::Manager do
|
||||||
}
|
}
|
||||||
|
|
||||||
before {
|
before {
|
||||||
expect(ActiveRecord::Base.connection_pool.connections.length).to eq(1)
|
expect(ActiveRecord::Base.connection_pool.connections.reject{|c| !c.in_use?}.length).to eq(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
after {
|
after {
|
||||||
expect(ActiveRecord::Base.connection_pool.connections.length).to eq(1)
|
expect(ActiveRecord::Base.connection_pool.connections.reject{|c| !c.in_use?}.length).to eq(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
it 'can disable stats' do
|
it 'can disable stats' do
|
||||||
|
@ -126,7 +126,7 @@ describe Scheduler::Manager do
|
||||||
expect($redis.zcard(Scheduler::Manager.queue_key)).to eq(0)
|
expect($redis.zcard(Scheduler::Manager.queue_key)).to eq(0)
|
||||||
end
|
end
|
||||||
|
|
||||||
skip 'should recover from crashed manager' do
|
it 'should recover from crashed manager' do
|
||||||
|
|
||||||
info = manager.schedule_info(Testing::SuperLongJob)
|
info = manager.schedule_info(Testing::SuperLongJob)
|
||||||
info.next_run = Time.now.to_i - 1
|
info.next_run = Time.now.to_i - 1
|
||||||
|
@ -145,7 +145,7 @@ describe Scheduler::Manager do
|
||||||
end
|
end
|
||||||
|
|
||||||
# something about logging jobs causing a leak in connection pool in test
|
# something about logging jobs causing a leak in connection pool in test
|
||||||
skip 'should log when job finishes running' do
|
it 'should log when job finishes running' do
|
||||||
|
|
||||||
Testing::RandomJob.runs = 0
|
Testing::RandomJob.runs = 0
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue