Skip to content

Commit 342635b

Browse files
committed
proper error handling in shard client
1 parent b2ab476 commit 342635b

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

django_valkey/client/sharded.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
from typing import Any, List, Dict
44

55
from valkey import Valkey
6-
from valkey.exceptions import ConnectionError
76
from valkey.typing import EncodableT, KeyT
87

9-
from django_valkey.base_client import DEFAULT_TIMEOUT
8+
from django_valkey.base_client import DEFAULT_TIMEOUT, _main_exceptions
109
from django_valkey.client.default import DefaultClient
1110
from django_valkey.exceptions import ConnectionInterrupted
1211
from django_valkey.hash_ring import HashRing
@@ -223,10 +222,8 @@ def keys(
223222
try:
224223
for connection in self._server_dict.values():
225224
keys.extend(connection.keys(pattern))
226-
except ConnectionError as e:
227-
# FIXME: technically all clients should be passed as `connection`.
228-
client = self.get_client(key=pattern)
229-
raise ConnectionInterrupted(connection=client) from e
225+
except _main_exceptions as e:
226+
raise ConnectionInterrupted(connection=self._server_dict.values()) from e
230227

231228
return [self.reverse_key(k.decode()) for k in keys]
232229

@@ -247,13 +244,21 @@ def delete_pattern(
247244
kwargs["count"] = itersize
248245

249246
keys = []
250-
for connection in self._server_dict.values():
251-
keys.extend(key for key in connection.scan_iter(**kwargs))
247+
try:
248+
for connection in self._server_dict.values():
249+
keys.extend(key for key in connection.scan_iter(**kwargs))
250+
except _main_exceptions as e:
251+
raise ConnectionInterrupted(connection=self._server_dict.values()) from e
252252

253253
res = 0
254254
if keys:
255-
for connection in self._server_dict.values():
256-
res += connection.delete(*keys)
255+
try:
256+
for connection in self._server_dict.values():
257+
res += connection.delete(*keys)
258+
except _main_exceptions as e:
259+
raise ConnectionInterrupted(
260+
connection=self._server_dict.values()
261+
) from e
257262
return res
258263

259264
def _close(self) -> None:
@@ -262,4 +267,7 @@ def _close(self) -> None:
262267

263268
def clear(self, client=None) -> None:
264269
for connection in self._server_dict.values():
265-
connection.flushdb()
270+
try:
271+
connection.flushdb()
272+
except _main_exceptions as e:
273+
raise ConnectionInterrupted(connection=connection) from e

0 commit comments

Comments
 (0)