diff --git a/neo4j/io/_bolt3.py b/neo4j/io/_bolt3.py index 5e2f8ab10..d57b84263 100644 --- a/neo4j/io/_bolt3.py +++ b/neo4j/io/_bolt3.py @@ -356,6 +356,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 @@ -370,12 +372,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 2f8f65b2a..32c239242 100644 --- a/neo4j/io/_bolt4x0.py +++ b/neo4j/io/_bolt4x0.py @@ -370,6 +370,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 @@ -384,12 +386,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/_bolt4x1.py b/neo4j/io/_bolt4x1.py index 2b67f1d1b..cc7e01bbe 100644 --- a/neo4j/io/_bolt4x1.py +++ b/neo4j/io/_bolt4x1.py @@ -370,6 +370,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 @@ -384,12 +386,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