Skip to content

Commit 4036511

Browse files
propagate connection error to defunct function (#466)
1 parent e120a58 commit 4036511

File tree

3 files changed

+42
-9
lines changed

3 files changed

+42
-9
lines changed

neo4j/io/_bolt3.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,8 @@ def _set_defunct(self, error=None):
356356
message = ("Failed to read from defunct connection {!r} ({!r})".format(
357357
self.unresolved_address, self.server_info.address))
358358

359+
if error:
360+
log.error(str(error))
359361
log.error(message)
360362
# We were attempting to receive data but the connection
361363
# has unexpectedly terminated. So, we need to close the
@@ -370,12 +372,21 @@ def _set_defunct(self, error=None):
370372
# unable to confirm that the COMMIT completed successfully.
371373
for response in self.responses:
372374
if isinstance(response, CommitResponse):
373-
raise BoltIncompleteCommitError(message, address=None)
375+
if error:
376+
raise BoltIncompleteCommitError(message, address=None) from error
377+
else:
378+
raise BoltIncompleteCommitError(message, address=None)
374379

375380
if direct_driver:
376-
raise ServiceUnavailable(message)
381+
if error:
382+
raise ServiceUnavailable(message) from error
383+
else:
384+
raise ServiceUnavailable(message)
377385
else:
378-
raise SessionExpired(message)
386+
if error:
387+
raise SessionExpired(message) from error
388+
else:
389+
raise SessionExpired(message)
379390

380391
def timedout(self):
381392
return 0 <= self._max_connection_lifetime <= perf_counter() - self._creation_timestamp

neo4j/io/_bolt4x0.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,8 @@ def _set_defunct(self, error=None):
370370
message = ("Failed to read from defunct connection {!r} ({!r})".format(
371371
self.unresolved_address, self.server_info.address))
372372

373+
if error:
374+
log.error(str(error))
373375
log.error(message)
374376
# We were attempting to receive data but the connection
375377
# has unexpectedly terminated. So, we need to close the
@@ -384,12 +386,21 @@ def _set_defunct(self, error=None):
384386
# unable to confirm that the COMMIT completed successfully.
385387
for response in self.responses:
386388
if isinstance(response, CommitResponse):
387-
raise BoltIncompleteCommitError(message, address=None)
389+
if error:
390+
raise BoltIncompleteCommitError(message, address=None) from error
391+
else:
392+
raise BoltIncompleteCommitError(message, address=None)
388393

389394
if direct_driver:
390-
raise ServiceUnavailable(message)
395+
if error:
396+
raise ServiceUnavailable(message) from error
397+
else:
398+
raise ServiceUnavailable(message)
391399
else:
392-
raise SessionExpired(message)
400+
if error:
401+
raise SessionExpired(message) from error
402+
else:
403+
raise SessionExpired(message)
393404

394405
def timedout(self):
395406
return 0 <= self._max_connection_lifetime <= perf_counter() - self._creation_timestamp

neo4j/io/_bolt4x1.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,8 @@ def _set_defunct(self, error=None):
370370
message = ("Failed to read from defunct connection {!r} ({!r})".format(
371371
self.unresolved_address, self.server_info.address))
372372

373+
if error:
374+
log.error(str(error))
373375
log.error(message)
374376
# We were attempting to receive data but the connection
375377
# has unexpectedly terminated. So, we need to close the
@@ -384,12 +386,21 @@ def _set_defunct(self, error=None):
384386
# unable to confirm that the COMMIT completed successfully.
385387
for response in self.responses:
386388
if isinstance(response, CommitResponse):
387-
raise BoltIncompleteCommitError(message, address=None)
389+
if error:
390+
raise BoltIncompleteCommitError(message, address=None) from error
391+
else:
392+
raise BoltIncompleteCommitError(message, address=None)
388393

389394
if direct_driver:
390-
raise ServiceUnavailable(message)
395+
if error:
396+
raise ServiceUnavailable(message) from error
397+
else:
398+
raise ServiceUnavailable(message)
391399
else:
392-
raise SessionExpired(message)
400+
if error:
401+
raise SessionExpired(message) from error
402+
else:
403+
raise SessionExpired(message)
393404

394405
def timedout(self):
395406
return 0 <= self._max_connection_lifetime <= perf_counter() - self._creation_timestamp

0 commit comments

Comments
 (0)