From 9a5ba817d750700a34f8aa8cdf1c8cc657d1353b Mon Sep 17 00:00:00 2001 From: Guido Leenders Date: Tue, 4 Mar 2025 12:10:50 +0100 Subject: [PATCH] Avoid NullReferenceException on 401 Unauthorized We frequently experience NullReferenceExceptions in our logging registered by the first chance exception handler. It is caused by `intakeResponse` being not null: Accepted = 0, Errors = null, and then evaluating `intakeResponse.Errors.Count` triggering an error. Environment: Unauthorized 401 on https://53b082e7cfeb4d9a9c117371xxxxxxxx.apm.eu-west-1.aws.cloud.es.io/intake/v2/events The payload returned is: ```json {"error":"authentication failed"}\n ``` So an improvement might be to also deserialize this JSON format. --- src/Elastic.Apm/Report/PayloadSenderV2.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Elastic.Apm/Report/PayloadSenderV2.cs b/src/Elastic.Apm/Report/PayloadSenderV2.cs index 2e85fa893..d9c9624fa 100644 --- a/src/Elastic.Apm/Report/PayloadSenderV2.cs +++ b/src/Elastic.Apm/Report/PayloadSenderV2.cs @@ -429,7 +429,7 @@ private void ProcessQueueItems(object[] queueItems) #else var intakeResponse = _payloadItemSerializer.Deserialize(response.Content.ReadAsStreamAsync().GetAwaiter().GetResult()); #endif - if (intakeResponse.Errors.Count > 0) + if ((intakeResponse?.Errors?.Count ?? 0) > 0) message = string.Join(", ", intakeResponse.Errors.Select(e => e.Message).Distinct()); } _logger?.Error()