Skip to content
Snippets Groups Projects
Commit 9b020019 authored by Alexander Polcyn's avatar Alexander Polcyn
Browse files

get rid of racey sleep 5 and use a cv to wait forever

parent d6dd46a1
No related branches found
No related tags found
No related merge requests found
...@@ -52,8 +52,7 @@ describe GRPC::Pool do ...@@ -52,8 +52,7 @@ describe GRPC::Pool do
expect(p.ready_for_work?).to be(false) expect(p.ready_for_work?).to be(false)
end end
it 'it stops being ready after all workers are busy, ' \ it 'it stops being ready after all workers are busy' do
'and it becomes ready again after jobs complete' do
p = Pool.new(5) p = Pool.new(5)
p.start p.start
...@@ -78,11 +77,6 @@ describe GRPC::Pool do ...@@ -78,11 +77,6 @@ describe GRPC::Pool do
wait = false wait = false
wait_cv.broadcast wait_cv.broadcast
end end
# There's a potential race here but it shouldn't ever be
# reached with a 5 second sleep.
sleep 5
expect(p.ready_for_work?).to be(true)
end end
end end
...@@ -114,10 +108,17 @@ describe GRPC::Pool do ...@@ -114,10 +108,17 @@ describe GRPC::Pool do
it 'stops jobs when there are long running jobs' do it 'stops jobs when there are long running jobs' do
p = Pool.new(1) p = Pool.new(1)
p.start p.start
wait_forever_mu = Mutex.new
wait_forever_cv = ConditionVariable.new
wait_forever = true
job_running = Queue.new job_running = Queue.new
job = proc do job = proc do
job_running.push(Object.new) job_running.push(Object.new)
sleep(5000) wait_forever_mu.synchronize do
wait_forever_cv.wait while wait_forever
end
end end
p.schedule(&job) p.schedule(&job)
job_running.pop job_running.pop
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment