From d79ba3671bbd0154e3cb86d63f8df6e4a2c79984 Mon Sep 17 00:00:00 2001 From: Adam R Grey Date: Wed, 14 Dec 2022 17:09:28 -0500 Subject: [PATCH] don't let every single possible client explode just because one malformed message was seen --- franz/Telefranz.cs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/franz/Telefranz.cs b/franz/Telefranz.cs index 1ee973c..5b75289 100644 --- a/franz/Telefranz.cs +++ b/franz/Telefranz.cs @@ -37,22 +37,25 @@ namespace franz while (!token.IsCancellationRequested) { var cr = topicConsumer.Consume(); - var deserialized = JsonConvert.DeserializeObject(cr.Message.Value, messageType); - if (deserialized != null && (deserialized as gray_messages.message).type == deserialized.GetType().ToString()) - { - foreach (var waitingAction in externalSubscribers) + try{ + var deserialized = JsonConvert.DeserializeObject(cr.Message.Value, messageType); + if (deserialized != null && (deserialized as gray_messages.message).type == deserialized.GetType().ToString()) { - try + foreach (var waitingAction in externalSubscribers) { waitingAction(deserialized); } - catch (Exception e) - { - Console.Error.WriteLine("if I don't catch this error the whole thing dies so..."); - Console.Error.WriteLine(JsonConvert.SerializeObject(e)); - } } } + catch(JsonSerializationException jse) + { + Console.Error.WriteLine($"couldn't deserialize {cr?.Message?.Value} as {messageType}; {jse}"); + } + catch (Exception e) + { + Console.Error.WriteLine("something happened in an action handler for: "); + Console.Error.WriteLine(JsonConvert.SerializeObject(e)); + } } } finally