mirror of
https://github.com/mperham/connection_pool
synced 2023-03-27 23:22:21 -04:00
Rejigger exceptions, fixes #130
This commit is contained in:
parent
c46a347ca4
commit
dd5dac5660
4 changed files with 15 additions and 16 deletions
|
@ -1,9 +1,9 @@
|
||||||
connection\_pool changelog
|
# connection_pool Changelog
|
||||||
---------------------------
|
|
||||||
|
|
||||||
HEAD
|
2.2.3
|
||||||
------
|
------
|
||||||
|
|
||||||
|
- Pool now throws `ConnectionPool::TimeoutError` on timeout. [#130]
|
||||||
- Use monotonic clock present in all modern Rubies [Tero Tasanen, #109]
|
- Use monotonic clock present in all modern Rubies [Tero Tasanen, #109]
|
||||||
- Remove code hacks necessary for JRuby 1.7
|
- Remove code hacks necessary for JRuby 1.7
|
||||||
- Expose wrapped pool from ConnectionPool::Wrapper [Thomas Lecavelier, #113]
|
- Expose wrapped pool from ConnectionPool::Wrapper [Thomas Lecavelier, #113]
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
require_relative 'connection_pool/version'
|
require 'connection_pool/version'
|
||||||
require_relative 'connection_pool/timed_stack'
|
require 'connection_pool/errors'
|
||||||
|
require 'connection_pool/timed_stack'
|
||||||
|
|
||||||
|
|
||||||
# Generic connection pool class for sharing a limited number of objects or network connections
|
# Generic connection pool class for sharing a limited number of objects or network connections
|
||||||
|
@ -34,9 +35,6 @@ require_relative 'connection_pool/timed_stack'
|
||||||
class ConnectionPool
|
class ConnectionPool
|
||||||
DEFAULTS = {size: 5, timeout: 5}
|
DEFAULTS = {size: 5, timeout: 5}
|
||||||
|
|
||||||
class Error < RuntimeError
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.wrap(options, &block)
|
def self.wrap(options, &block)
|
||||||
Wrapper.new(options, &block)
|
Wrapper.new(options, &block)
|
||||||
end
|
end
|
||||||
|
|
7
lib/connection_pool/errors.rb
Normal file
7
lib/connection_pool/errors.rb
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
require 'timeout'
|
||||||
|
|
||||||
|
class ConnectionPool
|
||||||
|
class Error < RuntimeError; end
|
||||||
|
class ConnectionPool::PoolShuttingDownError < ConnectionPool::Error; end
|
||||||
|
class ConnectionPool::TimeoutError < Timeout::Error; end
|
||||||
|
end
|
|
@ -1,10 +1,4 @@
|
||||||
require 'timeout'
|
require 'connection_pool/errors'
|
||||||
|
|
||||||
##
|
|
||||||
# Raised when you attempt to retrieve a connection from a pool that has been
|
|
||||||
# shut down.
|
|
||||||
|
|
||||||
class ConnectionPool::PoolShuttingDownError < RuntimeError; end
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# The TimedStack manages a pool of homogeneous connections (or any resource
|
# The TimedStack manages a pool of homogeneous connections (or any resource
|
||||||
|
@ -82,7 +76,7 @@ class ConnectionPool::TimedStack
|
||||||
return connection if connection
|
return connection if connection
|
||||||
|
|
||||||
to_wait = deadline - current_time
|
to_wait = deadline - current_time
|
||||||
raise Timeout::Error, "Waited #{timeout} sec" if to_wait <= 0
|
raise ConnectionPool::TimeoutError, "Waited #{timeout} sec" if to_wait <= 0
|
||||||
@resource.wait(@mutex, to_wait)
|
@resource.wait(@mutex, to_wait)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue