def release(self, conn): """ Release a connection back to the pool. :param gremlinclient.connection.Connection: The connection to be released """ future = self._future_class() if self.size <= self.maxsize: if conn.closed: # conn has been closed pool_logger.info("Released closed connection: {}".format(conn)) self._acquired.remove(conn) conn = None elif self._waiters: waiter = self._waiters.popleft() waiter.set_result(conn) pool_logger.debug( "Completeing future with connection: {}".format(conn)) else: self._pool.append(conn) self._acquired.remove(conn) future.set_result(None) else: future_conn = conn.close() future_conn.add_done_callback( lambda f: future.set_result(f.result())) return future
def release(self, conn): """ Release a connection back to the pool. :param gremlinclient.connection.Connection: The connection to be released """ future = self._future_class() if self.size <= self.maxsize: if conn.closed: # conn has been closed pool_logger.info( "Released closed connection: {}".format(conn)) self._acquired.remove(conn) conn = None elif self._waiters: waiter = self._waiters.popleft() waiter.set_result(conn) pool_logger.debug( "Completeing future with connection: {}".format(conn)) else: self._pool.append(conn) self._acquired.remove(conn) future.set_result(None) else: future_conn = conn.close() future_conn.add_done_callback( lambda f: future.set_result(f.result())) return future
def _close(self): to_close = [] while self.pool: conn = self.pool.popleft() to_close.append(conn.close()) yield from asyncio.gather(*to_close, loop=self._loop) while self._waiters: f = self._waiters.popleft() f.cancel() self._graph = None self._closed = True pool_logger.info("Connection pool {} has been closed".format(self))
def close(self): """ Close pool """ while self.pool: conn = self.pool.popleft() conn.close() while self._waiters: f = self._waiters.popleft() f.cancel() self._graph = None self._closed = True pool_logger.info("Connection pool {} has been closed".format(self))
def _close(self): to_close = [] while self.pool: conn = self.pool.popleft() to_close.append(conn.close()) yield from asyncio.gather(*to_close, loop=self._loop) while self._waiters: f = self._waiters.popleft() f.cancel() self._graph = None self._closed = True pool_logger.info( "Connection pool {} has been closed".format(self))
def close(self): """ Close pool """ while self.pool: conn = self.pool.popleft() conn.close() while self._waiters: f = self._waiters.popleft() f.cancel() self._graph = None self._closed = True pool_logger.info( "Connection pool {} has been closed".format(self))