From e1195f450eff055c6c234f02d83dd5ed771d8515 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Sat, 3 Aug 2024 14:09:59 +1200 Subject: [PATCH] Improved error handling if trying to release an unrelated resource. --- lib/async/pool/controller.rb | 2 +- test/async/pool/controller.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/async/pool/controller.rb b/lib/async/pool/controller.rb index 396685e..47f75d5 100644 --- a/lib/async/pool/controller.rb +++ b/lib/async/pool/controller.rb @@ -264,7 +264,7 @@ def reuse(resource) Console.debug(self) {"Reuse #{resource}"} usage = @resources[resource] - if usage.zero? + if usage.nil? || usage.zero? raise "Trying to reuse unacquired resource: #{resource}!" end diff --git a/test/async/pool/controller.rb b/test/async/pool/controller.rb index c4336d1..7dbfab4 100644 --- a/test/async/pool/controller.rb +++ b/test/async/pool/controller.rb @@ -22,6 +22,14 @@ expect(pool).to be(:empty?) end + it 'raises an error when releasing an unacquired resource' do + resource = Async::Pool::Resource.new + + expect do + pool.release(resource) + end.to raise_exception(RuntimeError, message: be =~ /unacquired resource/) + end + with '#as_json' do it 'generates a JSON representation' do expect(pool.as_json).to be == {