Skip to content

Commit 7cd0086

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 db832e2 commit 7cd0086

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/crate/client/connection.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,20 +202,21 @@ def get_blob_container(self, container_name):
202202

203203
def _lowest_server_version(self):
204204
lowest = None
205-
last_connection_error = None
205+
server_count = len(self.client.active_servers)
206+
connection_errors = []
206207
for server in self.client.active_servers:
207208
try:
208209
_, _, version = self.client.server_infos(server)
209210
version = Version(version)
210211
except ConnectionError as ex:
211-
last_connection_error = ex
212+
connection_errors.append(ex)
212213
continue
213214
except (ValueError, InvalidVersion):
214215
continue
215216
if not lowest or version < lowest:
216217
lowest = version
217-
if lowest is None and last_connection_error is not None:
218-
raise last_connection_error
218+
if connection_errors and len(connection_errors) == server_count:
219+
raise ConnectionError(str(connection_errors))
219220
return lowest or Version("0.0.0")
220221

221222
def __repr__(self):

0 commit comments

Comments
 (0)