# File lib/active_record/connection_adapters/abstract/connection_pool.rb, line 228
      def checkout
        # Checkout an available connection
        synchronize do
          loop do
            conn = @connections.find { |c| c.lease }

            unless conn
              if @connections.size < @size
                conn = checkout_new_connection
                conn.lease
              end
            end

            if conn
              checkout_and_verify conn
              return conn
            end

            @queue.wait(@timeout)

            if(active_connections.size < @connections.size)
              next
            else
              clear_stale_cached_connections!
              if @size == active_connections.size
                raise ConnectionTimeoutError, "could not obtain a database connection#{" within #{@timeout} seconds" if @timeout}. The max pool size is currently #{@size}; consider increasing it."
              end
            end

          end
        end
      end