Sha256: 692acb2d30fe3dfd781895cae27cfc678cf7c4b569c308ea165fc1c047b380b9

Contents?: true

Size: 1.07 KB

Versions: 4

Compression:

Stored size: 1.07 KB

Contents

module ActiveRecord
  module ConnectionAdapters
    class ConnectionPool
      
      attr_reader :connections, 
                  :checked_out,
                  :reserved_connections

      def initialize(spec)
        @spec = spec
        # The cache of reserved connections mapped to threads
        @reserved_connections = {}
        # The mutex used to synchronize pool access
        @connection_mutex = Monitor.new
        @queue = @connection_mutex.new_cond
        # default 5 second timeout
        @timeout = spec.config[:wait_timeout] || 5
        # default max pool size to 5
        @size = (spec.config[:pool] && spec.config[:pool].to_i) || 5
        @connections = []
        @checked_out = []
        # warmup hook
        warmup! if spec.config[:warmup]
      end

      private
      
        # Establish ( warmup ) all connections for this pool in advance.
        #
        def warmup!
          @connection_mutex.synchronize do
            1.upto(@size) do
              @connections << new_connection
            end
          end  
        end  

    end  
  end    
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
methodmissing-mysqlplus_adapter-1.0.1 lib/active_record/connection_adapters/mysqlplus_adapter/connection_pool.rb
methodmissing-mysqlplus_adapter-1.0.2 lib/active_record/connection_adapters/mysqlplus_adapter/connection_pool.rb
methodmissing-mysqlplus_adapter-1.0.3 lib/active_record/connection_adapters/mysqlplus_adapter/connection_pool.rb
methodmissing-mysqlplus_adapter-1.0.4 lib/active_record/connection_adapters/mysqlplus_adapter/connection_pool.rb