diff --git a/lib/final_destination/resolver.rb b/lib/final_destination/resolver.rb index 551eb0270d..f809099d4d 100644 --- a/lib/final_destination/resolver.rb +++ b/lib/final_destination/resolver.rb @@ -8,12 +8,14 @@ class FinalDestination::Resolver @result = nil @queue ||= Queue.new - @queue << "" ensure_lookup_thread @lookup = addr @parent = Thread.current + # Wakeup the worker thread + @queue << "" + # This sleep will be interrupted by the lookup thread # if completed within timeout sleep timeout diff --git a/spec/lib/final_destination/resolver_spec.rb b/spec/lib/final_destination/resolver_spec.rb index bf519d843d..20ce673cd7 100644 --- a/spec/lib/final_destination/resolver_spec.rb +++ b/spec/lib/final_destination/resolver_spec.rb @@ -18,16 +18,12 @@ describe FinalDestination::Resolver do expect { result = FinalDestination::Resolver.lookup("sleep.example.com", timeout: 0.001) - # If the test gets this far, it failed - puts "Flaky test debug: Result was #{result.inspect}" }.to raise_error(Timeout::Error) start_thread_count = alive_thread_count expect { result = FinalDestination::Resolver.lookup("sleep.example.com", timeout: 0.001) - # If the test gets this far, it failed - puts "Flaky test debug: Result was #{result.inspect}" }.to raise_error(Timeout::Error) expect(alive_thread_count).to eq(start_thread_count)