Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit d84fa0a

Browse filesBrowse files
committed
Fix: Fail early when database server does not respond
1 parent 5ab391c commit d84fa0a
Copy full SHA for d84fa0a

File tree

3 files changed

+18
-1
lines changed
Filter options

3 files changed

+18
-1
lines changed

‎CHANGES.rst

Copy file name to clipboardExpand all lines: CHANGES.rst
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ Changes for crate
55
Unreleased
66
==========
77

8+
- Changed connection behaviour to fail early when database server
9+
does not respond
10+
811
2025/01/30 2.0.0
912
================
1013

‎src/crate/client/connection.py

Copy file name to clipboardExpand all lines: src/crate/client/connection.py
+8-1Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
# software solely pursuant to the terms of the relevant commercial agreement.
2121

2222
from verlib2 import Version
23+
from verlib2.packaging.version import InvalidVersion
2324

2425
from .blob import BlobContainer
2526
from .cursor import Cursor
@@ -197,14 +198,20 @@ def get_blob_container(self, container_name):
197198

198199
def _lowest_server_version(self):
199200
lowest = None
201+
last_connection_error = None
200202
for server in self.client.active_servers:
201203
try:
202204
_, _, version = self.client.server_infos(server)
203205
version = Version(version)
204-
except (ValueError, ConnectionError):
206+
except ConnectionError as ex:
207+
last_connection_error = ex
208+
continue
209+
except (ValueError, InvalidVersion):
205210
continue
206211
if not lowest or version < lowest:
207212
lowest = version
213+
if lowest is None and last_connection_error is not None:
214+
raise last_connection_error
208215
return lowest or Version("0.0.0")
209216

210217
def __repr__(self):

‎tests/client/test_connection.py

Copy file name to clipboardExpand all lines: tests/client/test_connection.py
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from urllib3 import Timeout
55

6+
import crate.client.exceptions
67
from crate.client import connect
78
from crate.client.connection import Connection
89
from crate.client.http import Client
@@ -36,6 +37,12 @@ def server_infos(self, server):
3637
("localhost:4200", "my server", "0.42.0"),
3738
)
3839

40+
def test_invalid_server_address(self):
41+
client = Client(servers="localhost:4202")
42+
with self.assertRaises(crate.client.exceptions.ConnectionError) as ex:
43+
connect(client=client)
44+
self.assertIn("Server not available", ex.exception.message)
45+
3946
def test_lowest_server_version(self):
4047
infos = [
4148
(None, None, "0.42.3"),

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.