Class Sequel::ConnectionPool
In: lib/sequel/connection_pool.rb
Parent: Object

The base connection pool class, which all other connection pools are based on. This class is not instantiated directly, but subclasses should at the very least implement the following API:

initialize(Database, Hash) :Initialize using the passed Sequel::Database object and options hash.
hold(Symbol, &block) :Yield a connection object (obtained from calling the block passed to initialize) to the current block. For sharded connection pools, the Symbol passed is the shard/server to use.
disconnect(Symbol) :Disconnect the connection object. For sharded connection pools, the Symbol passed is the shard/server to use.
servers :An array of shard/server symbols for all shards/servers that this connection pool recognizes.
size :an integer representing the total number of connections in the pool, or for the given shard/server if sharding is supported.
max_size :an integer representing the maximum size of the connection pool, or the maximum size per shard/server if sharding is supported.

For sharded connection pools, the sharded API adds the following methods:

add_servers(Array of Symbols) :start recognizing all shards/servers specified by the array of symbols.
remove_servers(Array of Symbols) :no longer recognize all shards/servers specified by the array of symbols.

Methods

created_count   new   servers  

Classes and Modules

Module Sequel::ConnectionPool::ClassMethods

Constants

OPTS = Sequel::OPTS
DEFAULT_SERVER = :default   The default server to use
CONNECTION_POOL_MAP = {[true, false] => :single, [true, true] => :sharded_single, [false, false] => :threaded, [false, true] => :sharded_threaded}   A map of [single threaded, sharded] values to symbols or ConnectionPool subclasses.

Attributes

after_connect  [RW]  The after_connect proc used for this pool. This is called with each new connection made, and is usually used to set custom per-connection settings.
db  [RW]  The Sequel::Database object tied to this connection pool.

Public Class methods

Instantiates a connection pool with the given options. The block is called with a single symbol (specifying the server/shard to use) every time a new connection is needed. The following options are respected for all connection pools:

:after_connect :A callable object called after each new connection is made, with the connection object (and server argument if the callable accepts 2 arguments), useful for customizations that you want to apply to all connections.
:preconnect :Automatically create the maximum number of connections, so that they don‘t need to be created as needed. This is useful when connecting takes a long time and you want to avoid possible latency during runtime. Set to :concurrently to create the connections in separate threads. Otherwise they‘ll be created sequentially.

[Source]

    # File lib/sequel/connection_pool.rb, line 84
84:   def initialize(db, opts=OPTS)
85:     @db = db
86:     @after_connect = opts[:after_connect]
87:     @error_classes = db.send(:database_error_classes).dup.freeze
88:   end

Public Instance methods

Alias for size, not aliased directly for ease of subclass implementation

[Source]

    # File lib/sequel/connection_pool.rb, line 91
91:   def created_count(*args)
92:     size(*args)
93:   end

An array of symbols for all shards/servers, which is a single :default by default.

[Source]

    # File lib/sequel/connection_pool.rb, line 96
96:   def servers
97:     [DEFAULT_SERVER]
98:   end

[Validate]