Tolerate one decode error; may have been a registry ping
parent
ef75883b62
commit
135459ca25
|
@ -177,17 +177,19 @@ class MsgspecTCPStream(MsgpackTCPStream):
|
||||||
|
|
||||||
log.transport(f"received {msg_bytes}") # type: ignore
|
log.transport(f"received {msg_bytes}") # type: ignore
|
||||||
try:
|
try:
|
||||||
assert not last_decode_failed
|
|
||||||
yield self.decode(msg_bytes)
|
yield self.decode(msg_bytes)
|
||||||
except (
|
except (
|
||||||
msgspec.DecodingError,
|
msgspec.DecodingError,
|
||||||
UnicodeDecodeError,
|
UnicodeDecodeError,
|
||||||
):
|
):
|
||||||
|
if not last_decode_failed:
|
||||||
# ignore decoding errors for now and assume they have to
|
# ignore decoding errors for now and assume they have to
|
||||||
# do with a channel drop - hope that receiving from the
|
# do with a channel drop - hope that receiving from the
|
||||||
# channel will raise an expected error and bubble up.
|
# channel will raise an expected error and bubble up.
|
||||||
log.error('`msgspec` failed to decode!?')
|
log.error('`msgspec` failed to decode!?')
|
||||||
last_decode_failed = True
|
last_decode_failed = True
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
async def send(self, data: Any) -> None:
|
async def send(self, data: Any) -> None:
|
||||||
async with self._send_lock:
|
async with self._send_lock:
|
||||||
|
|
Loading…
Reference in New Issue