diff --git a/neo4j/io/_bolt3.py b/neo4j/io/_bolt3.py index cbd63fae6..456a28d3f 100644 --- a/neo4j/io/_bolt3.py +++ b/neo4j/io/_bolt3.py @@ -343,6 +343,8 @@ def _set_defunct(self, error=None): message = ("Failed to read from defunct connection {!r} ({!r})".format( self.unresolved_address, self.server_info.address)) + if error: + log.error(str(error)) log.error(message) # We were attempting to receive data but the connection # has unexpectedly terminated. So, we need to close the @@ -357,12 +359,21 @@ def _set_defunct(self, error=None): # unable to confirm that the COMMIT completed successfully. for response in self.responses: if isinstance(response, CommitResponse): - raise BoltIncompleteCommitError(message, address=None) + if error: + raise BoltIncompleteCommitError(message, address=None) from error + else: + raise BoltIncompleteCommitError(message, address=None) if direct_driver: - raise ServiceUnavailable(message) + if error: + raise ServiceUnavailable(message) from error + else: + raise ServiceUnavailable(message) else: - raise SessionExpired(message) + if error: + raise SessionExpired(message) from error + else: + raise SessionExpired(message) def timedout(self): return 0 <= self._max_connection_lifetime <= perf_counter() - self._creation_timestamp diff --git a/neo4j/io/_bolt4x0.py b/neo4j/io/_bolt4x0.py index ac3d73e18..b119067ed 100644 --- a/neo4j/io/_bolt4x0.py +++ b/neo4j/io/_bolt4x0.py @@ -347,6 +347,8 @@ def _set_defunct(self, error=None): message = ("Failed to read from defunct connection {!r} ({!r})".format( self.unresolved_address, self.server_info.address)) + if error: + log.error(str(error)) log.error(message) # We were attempting to receive data but the connection # has unexpectedly terminated. So, we need to close the @@ -361,12 +363,21 @@ def _set_defunct(self, error=None): # unable to confirm that the COMMIT completed successfully. for response in self.responses: if isinstance(response, CommitResponse): - raise BoltIncompleteCommitError(message, address=None) + if error: + raise BoltIncompleteCommitError(message, address=None) from error + else: + raise BoltIncompleteCommitError(message, address=None) if direct_driver: - raise ServiceUnavailable(message) + if error: + raise ServiceUnavailable(message) from error + else: + raise ServiceUnavailable(message) else: - raise SessionExpired(message) + if error: + raise SessionExpired(message) from error + else: + raise SessionExpired(message) def timedout(self): return 0 <= self._max_connection_lifetime <= perf_counter() - self._creation_timestamp