Skip to content

Commit fb6ebc9

Browse files
author
A. Jesse Jiryu Davis
committed
Pool raises ConnectionFailure, not socket.timeout, after waitQueueTimeoutMS
1 parent 7e5c376 commit fb6ebc9

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

pymongo/pool.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,8 @@ def get_socket(self, pair=None, force=False):
318318
if not self._socket_semaphore.acquire(False):
319319
forced = True
320320
elif not self._socket_semaphore.acquire(True, self.wait_queue_timeout):
321-
raise socket.timeout()
321+
self._raise_wait_queue_timeout()
322+
322323
sock_info, from_pool = None, None
323324
try:
324325
try:
@@ -452,7 +453,7 @@ def _check(self, sock_info, pair, acquire_on_connect=False):
452453
if acquire_on_connect:
453454
if not self._socket_semaphore.acquire(
454455
True, self.wait_queue_timeout):
455-
raise socket.timeout()
456+
self._raise_wait_queue_timeout()
456457
return self.connect(pair)
457458
except socket.error:
458459
self.reset()
@@ -503,6 +504,12 @@ def _get_request_state(self):
503504
tid = self._ident.get()
504505
return self._tid_to_sock.get(tid, NO_REQUEST)
505506

507+
def _raise_wait_queue_timeout(self):
508+
raise ConnectionFailure(
509+
'Timed out waiting for socket from pool with max_size %r and'
510+
' wait_queue_timeout %r' % (
511+
self.max_size, self.wait_queue_timeout))
512+
506513
def __del__(self):
507514
# Avoid ResourceWarnings in Python 3
508515
for sock_info in self.sockets:

test/test_pooling_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import pymongo.pool
3131
from pymongo.mongo_client import MongoClient
3232
from pymongo.pool import Pool, NO_REQUEST, NO_SOCKET_YET, SocketInfo
33-
from pymongo.errors import ConfigurationError
33+
from pymongo.errors import ConfigurationError, ConnectionFailure
3434
from pymongo.thread_util import ExceededMaxWaiters
3535
from test import version, host, port
3636
from test.test_client import get_client

0 commit comments

Comments
 (0)