Skip to content

Commit bcdbabe

Browse files
Handle ssl error in TCP comm (#8983)
1 parent 0657de2 commit bcdbabe

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

distributed/comm/tcp.py

+10-9
Original file line numberDiff line numberDiff line change
@@ -129,17 +129,18 @@ def get_stream_address(comm):
129129

130130
def convert_stream_closed_error(obj, exc):
131131
"""
132-
Re-raise StreamClosedError as CommClosedError.
132+
Re-raise StreamClosedError or SSLError as CommClosedError.
133133
"""
134-
if exc.real_error is not None:
134+
if hasattr(exc, "real_error"):
135135
# The stream was closed because of an underlying OS error
136+
if exc.real_error is None:
137+
raise CommClosedError(f"in {obj}: {exc}") from exc
136138
exc = exc.real_error
137-
if isinstance(exc, ssl.SSLError):
138-
if exc.reason and "UNKNOWN_CA" in exc.reason:
139-
raise FatalCommClosedError(f"in {obj}: {exc.__class__.__name__}: {exc}")
140-
raise CommClosedError(f"in {obj}: {exc.__class__.__name__}: {exc}") from exc
141-
else:
142-
raise CommClosedError(f"in {obj}: {exc}") from exc
139+
140+
if isinstance(exc, ssl.SSLError):
141+
if exc.reason and "UNKNOWN_CA" in exc.reason:
142+
raise FatalCommClosedError(f"in {obj}: {exc.__class__.__name__}: {exc}")
143+
raise CommClosedError(f"in {obj}: {exc.__class__.__name__}: {exc}") from exc
143144

144145

145146
def _close_comm(ref):
@@ -230,7 +231,7 @@ async def read(self, deserializers=None):
230231
buffer = await read_bytes_rw(stream, buffer_nbytes)
231232
frames.append(buffer)
232233

233-
except StreamClosedError as e:
234+
except (StreamClosedError, SSLError) as e:
234235
self.stream = None
235236
self._closed = True
236237
convert_stream_closed_error(self, e)

0 commit comments

Comments
 (0)