Skip to content

Commit b74ce4b

Browse files
committed
Error handling: Only re-raise ConnectionError when all servers fail
The procedure will collect all `ConnectionError` instances and include them into the exception message of the final `ConnectionError`.
1 parent 1262fe6 commit b74ce4b

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/crate/client/connection.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -198,20 +198,21 @@ def get_blob_container(self, container_name):
198198

199199
def _lowest_server_version(self):
200200
lowest = None
201-
last_connection_error = None
201+
server_count = len(self.client.active_servers)
202+
connection_errors = []
202203
for server in self.client.active_servers:
203204
try:
204205
_, _, version = self.client.server_infos(server)
205206
version = Version(version)
206207
except ConnectionError as ex:
207-
last_connection_error = ex
208+
connection_errors.append(ex)
208209
continue
209210
except (ValueError, InvalidVersion):
210211
continue
211212
if not lowest or version < lowest:
212213
lowest = version
213-
if lowest is None and last_connection_error is not None:
214-
raise last_connection_error
214+
if connection_errors and len(connection_errors) == server_count:
215+
raise ConnectionError(str(connection_errors))
215216
return lowest or Version("0.0.0")
216217

217218
def __repr__(self):

0 commit comments

Comments
 (0)