Skip to content

Commit 8f9aa18

Browse files
authored
Merge pull request #333 from broadinstitute/development
Release 1.28.4
2 parents 746cd83 + 25c28fa commit 8f9aa18

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

ingest/mongo_connection.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class MongoConnection:
1717
A concrete class that defines a MongoDB client
1818
"""
1919

20-
MAX_AUTO_RECONNECT_ATTEMPTS = 5
20+
MAX_AUTO_RECONNECT_ATTEMPTS = 10
2121

2222
def __init__(self):
2323
# Needed to run tests in test_ingest.py in CircleCI.
@@ -52,12 +52,11 @@ def graceful_auto_reconnect(mongo_op_func):
5252
import random
5353
import math
5454

55-
MAX_ATTEMPTS = 5
5655
# Adopted from https://stackoverflow.com/questions/46939285
5756

5857
def retry(attempt_num):
59-
if attempt_num < MAX_ATTEMPTS - 1:
60-
exp_backoff = pow(2, attempt_num)
58+
if attempt_num < MongoConnection.MAX_AUTO_RECONNECT_ATTEMPTS - 1:
59+
exp_backoff = pow(2, attempt_num + 1)
6160
max_jitter = math.ceil(exp_backoff * 0.2)
6261
final_wait_time = exp_backoff + random.randint(
6362
0, max_jitter
@@ -68,17 +67,17 @@ def retry(attempt_num):
6867
@functools.wraps(mongo_op_func)
6968
def wrapper(*args, **kwargs):
7069
args = list(args)
71-
for attempt in range(MAX_ATTEMPTS):
70+
for attempt in range(MongoConnection.MAX_AUTO_RECONNECT_ATTEMPTS):
7271
try:
7372
return mongo_op_func(*args, **kwargs)
7473
except AutoReconnect as e:
75-
if attempt < MAX_ATTEMPTS - 1:
74+
if attempt < MongoConnection.MAX_AUTO_RECONNECT_ATTEMPTS - 1:
7675
dev_logger.warning("PyMongo auto-reconnecting... %s.", str(e))
7776
retry(attempt)
7877
else:
7978
raise e
8079
except BulkWriteError as bwe:
81-
if attempt < MAX_ATTEMPTS - 1:
80+
if attempt < MongoConnection.MAX_AUTO_RECONNECT_ATTEMPTS - 1:
8281
dev_logger.warning(
8382
"Batch ops error occurred. Reinsert attempt %s.", str(attempt)
8483
)

tests/test_expression_files.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,7 @@ def test_create_gene_model(self):
368368
)
369369
self.assertEqual(actual_gene_model, expected_gene_model)
370370

371+
@patch("mongo_connection.MongoConnection.MAX_AUTO_RECONNECT_ATTEMPTS", 3)
371372
def test_insert(self):
372373
client_mock = MagicMock()
373374

@@ -403,7 +404,7 @@ def test_insert(self):
403404
self.assertRaises(
404405
AutoReconnect, GeneExpression.insert, docs, "collection", client_mock
405406
)
406-
self.assertEqual(client_mock["collection"].insert_many.call_count, 5)
407+
self.assertEqual(client_mock["collection"].insert_many.call_count, 3)
407408
client_mock.reset_mock()
408409

409410
def raiseError(*args, **kwargs):
@@ -429,4 +430,4 @@ def raiseError(*args, **kwargs):
429430
self.assertRaises(
430431
BulkWriteError, GeneExpression.insert, docs, "collection", client_mock
431432
)
432-
self.assertEqual(client_mock["collection"].insert_many.call_count, 5)
433+
self.assertEqual(client_mock["collection"].insert_many.call_count, 3)

0 commit comments

Comments
 (0)