Allow up to 4 `msgpsec` decode failures

drop_msgpack
Tyler Goodlet 2022-05-31 12:19:29 -04:00
parent f594f1bdda
commit 932b841176
1 changed files with 8 additions and 4 deletions

View File

@ -144,7 +144,7 @@ class MsgpackTCPStream(MsgTransport):
''' '''
import msgspec # noqa import msgspec # noqa
last_decode_failed: bool = False decodes_failed: int = 0
while True: while True:
try: try:
@ -181,12 +181,16 @@ class MsgpackTCPStream(MsgTransport):
msgspec.DecodeError, msgspec.DecodeError,
UnicodeDecodeError, UnicodeDecodeError,
): ):
if not last_decode_failed: if decodes_failed < 4:
# 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(
last_decode_failed = True '`msgspec` failed to decode!?\n'
'dumping bytes:\n'
f'{msg_bytes}'
)
decodes_failed += 1
else: else:
raise raise