From 3aaeb80bce5bbd3061583e772609b77dacc72fe2 Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Sat, 22 Feb 2025 14:13:23 +0100 Subject: [PATCH 01/12] MessagesViewIndex change --- .../Indexes/MessagesViewIndex.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 6e348f08c4..497b7505a5 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -24,10 +24,10 @@ from message in messages CriticalTime = (TimeSpan?)message.MessageMetadata["CriticalTime"], ProcessingTime = (TimeSpan?)message.MessageMetadata["ProcessingTime"], DeliveryTime = (TimeSpan?)message.MessageMetadata["DeliveryTime"], - Query = message.MessageMetadata.Select(_ => _.Value.ToString()).Union(new[] - { - string.Join(" ", message.Headers.Select(x => x.Value)) - }).ToArray(), + Query = new[] { + string.Join(" ", message.Headers.Values), + string.Join(" ", message.MessageMetadata.Values.Select(v => v.ToString() ?? "")) + }, ConversationId = (string)message.MessageMetadata["ConversationId"] }; From 9263d1511ca3f528ef175c26977a739407cff6d9 Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 12:11:16 +0100 Subject: [PATCH 02/12] use let to reduce code --- .../Indexes/MessagesViewIndex.cs | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 497b7505a5..7dbb721e9e 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -12,23 +12,24 @@ public MessagesViewIndex() { Map = messages => from message in messages + let metadata = message.MessageMetadata select new SortAndFilterOptions { - MessageId = (string)message.MessageMetadata["MessageId"], - MessageType = (string)message.MessageMetadata["MessageType"], - IsSystemMessage = (bool)message.MessageMetadata["IsSystemMessage"], - Status = (bool)message.MessageMetadata["IsRetried"] ? MessageStatus.ResolvedSuccessfully : MessageStatus.Successful, - TimeSent = (DateTime)message.MessageMetadata["TimeSent"], + MessageId = (string)metadata["MessageId"], + MessageType = (string)metadata["MessageType"], + IsSystemMessage = (bool)metadata["IsSystemMessage"], + Status = (bool)metadata["IsRetried"] ? MessageStatus.ResolvedSuccessfully : MessageStatus.Successful, + TimeSent = (DateTime)metadata["TimeSent"], ProcessedAt = message.ProcessedAt, - ReceivingEndpointName = ((EndpointDetails)message.MessageMetadata["ReceivingEndpoint"]).Name, - CriticalTime = (TimeSpan?)message.MessageMetadata["CriticalTime"], - ProcessingTime = (TimeSpan?)message.MessageMetadata["ProcessingTime"], - DeliveryTime = (TimeSpan?)message.MessageMetadata["DeliveryTime"], + ReceivingEndpointName = ((EndpointDetails)metadata["ReceivingEndpoint"]).Name, + CriticalTime = (TimeSpan?)metadata["CriticalTime"], + ProcessingTime = (TimeSpan?)metadata["ProcessingTime"], + DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], Query = new[] { string.Join(" ", message.Headers.Values), - string.Join(" ", message.MessageMetadata.Values.Select(v => v.ToString() ?? "")) + string.Join(" ", metadata.Values.Select(v => v.ToString() ?? "")) }, - ConversationId = (string)message.MessageMetadata["ConversationId"] + ConversationId = (string)metadata["ConversationId"] }; Index(x => x.Query, FieldIndexing.Search); From b0aaab122ae2f6fa83edbe48209991708ec5307c Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 12:27:59 +0100 Subject: [PATCH 03/12] Small optimization on string.Join --- .../Indexes/MessagesViewIndex.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 7dbb721e9e..0bef33c8fc 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -26,8 +26,8 @@ from message in messages ProcessingTime = (TimeSpan?)metadata["ProcessingTime"], DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], Query = new[] { - string.Join(" ", message.Headers.Values), - string.Join(" ", metadata.Values.Select(v => v.ToString() ?? "")) + string.Join(' ', message.Headers.Values), + string.Join(' ', metadata.Values.Select(v => v.ToString() ?? string.Empty)) }, ConversationId = (string)metadata["ConversationId"] }; From f29d91e85fc098138ead274ac8fa41d7cd41fd6b Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 12:35:44 +0100 Subject: [PATCH 04/12] Use `let` to reduce code and improve readability --- .../Indexes/MessagesViewIndex.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index aff8883bc6..93e153c15e 100644 --- a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -14,11 +14,12 @@ public MessagesViewIndex() from message in messages let last = message.ProcessingAttempts.Last() + let metadata = last.MessageMetadata select new SortAndFilterOptions { MessageId = last.MessageId, - MessageType = (string)last.MessageMetadata["MessageType"], - IsSystemMessage = (bool)last.MessageMetadata["IsSystemMessage"], + MessageType = (string)metadata["MessageType"], + IsSystemMessage = (bool)metadata["IsSystemMessage"], Status = message.Status == FailedMessageStatus.Archived ? MessageStatus.ArchivedFailure : message.Status == FailedMessageStatus.Resolved @@ -26,14 +27,14 @@ from message in messages : message.ProcessingAttempts.Count == 1 ? MessageStatus.Failed : MessageStatus.RepeatedFailure, - TimeSent = (DateTime)last.MessageMetadata["TimeSent"], + TimeSent = (DateTime)metadata["TimeSent"], ProcessedAt = last.AttemptedAt, - ReceivingEndpointName = ((EndpointDetails)last.MessageMetadata["ReceivingEndpoint"]).Name, - CriticalTime = (TimeSpan?)last.MessageMetadata["CriticalTime"], - ProcessingTime = (TimeSpan?)last.MessageMetadata["ProcessingTime"], - DeliveryTime = (TimeSpan?)last.MessageMetadata["DeliveryTime"], - Query = last.MessageMetadata.Select(_ => _.Value.ToString()).Union(new[] { string.Join(" ", last.Headers.Select(x => x.Value)) }).ToArray(), - ConversationId = (string)last.MessageMetadata["ConversationId"] + ReceivingEndpointName = ((EndpointDetails)metadata["ReceivingEndpoint"]).Name, + CriticalTime = (TimeSpan?)metadata["CriticalTime"], + ProcessingTime = (TimeSpan?)metadata["ProcessingTime"], + DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], + Query = metadata.Select(_ => _.Value.ToString()).Union(new[] { string.Join(" ", last.Headers.Select(x => x.Value)) }).ToArray(), + ConversationId = (string)metadata["ConversationId"] }; // StandardAnalyzer is the default analyzer, so no follow-up Analyze() call is needed here From b39f6744128a4ad5d76c0169019080a35715473d Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 12:41:05 +0100 Subject: [PATCH 05/12] Fix potential NullReferenceException and added comment why cannot use `.Values` directly --- .../Indexes/MessagesViewIndex.cs | 2 +- .../Indexes/MessagesViewIndex.cs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 0bef33c8fc..2c37842d6b 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -27,7 +27,7 @@ from message in messages DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], Query = new[] { string.Join(' ', message.Headers.Values), - string.Join(' ', metadata.Values.Select(v => v.ToString() ?? string.Empty)) + string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RaveDB does not like object arrays }, ConversationId = (string)metadata["ConversationId"] }; diff --git a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 93e153c15e..6762cd3605 100644 --- a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -33,7 +33,10 @@ from message in messages CriticalTime = (TimeSpan?)metadata["CriticalTime"], ProcessingTime = (TimeSpan?)metadata["ProcessingTime"], DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], - Query = metadata.Select(_ => _.Value.ToString()).Union(new[] { string.Join(" ", last.Headers.Select(x => x.Value)) }).ToArray(), + Query = new[] { + string.Join(' ', last.Headers.Values), + string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RavenDB does not like object arrays + }, ConversationId = (string)metadata["ConversationId"] }; From 0e1630526ea746277408d1d425974979498b5e1b Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 13:01:03 +0100 Subject: [PATCH 06/12] Code formatting --- .../Indexes/MessagesViewIndex.cs | 3 ++- .../Indexes/MessagesViewIndex.cs | 14 +++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 2c37842d6b..2f90baf51c 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -25,7 +25,8 @@ from message in messages CriticalTime = (TimeSpan?)metadata["CriticalTime"], ProcessingTime = (TimeSpan?)metadata["ProcessingTime"], DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], - Query = new[] { + Query = new[] + { string.Join(' ', message.Headers.Values), string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RaveDB does not like object arrays }, diff --git a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 6762cd3605..f173ae8e32 100644 --- a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -11,7 +11,6 @@ public class MessagesViewIndex : AbstractIndexCreationTask - from message in messages let last = message.ProcessingAttempts.Last() let metadata = last.MessageMetadata @@ -22,18 +21,19 @@ from message in messages IsSystemMessage = (bool)metadata["IsSystemMessage"], Status = message.Status == FailedMessageStatus.Archived ? MessageStatus.ArchivedFailure - : message.Status == FailedMessageStatus.Resolved - ? MessageStatus.ResolvedSuccessfully - : message.ProcessingAttempts.Count == 1 - ? MessageStatus.Failed - : MessageStatus.RepeatedFailure, + : message.Status == FailedMessageStatus.Resolved + ? MessageStatus.ResolvedSuccessfully + : message.ProcessingAttempts.Count == 1 + ? MessageStatus.Failed + : MessageStatus.RepeatedFailure, TimeSent = (DateTime)metadata["TimeSent"], ProcessedAt = last.AttemptedAt, ReceivingEndpointName = ((EndpointDetails)metadata["ReceivingEndpoint"]).Name, CriticalTime = (TimeSpan?)metadata["CriticalTime"], ProcessingTime = (TimeSpan?)metadata["ProcessingTime"], DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], - Query = new[] { + Query = new[] + { string.Join(' ', last.Headers.Values), string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RavenDB does not like object arrays }, From 5bcee0fdff6ec224ac551d693d93d7b928a33239 Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 13:34:31 +0100 Subject: [PATCH 07/12] Resolve error CS0019: Operator '!=' cannot be applied to operands of type 'KeyValuePair' and '' --- .../Indexes/MessagesViewIndex.cs | 2 +- .../Indexes/MessagesViewIndex.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 2f90baf51c..76c0cc4ea2 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -28,7 +28,7 @@ from message in messages Query = new[] { string.Join(' ', message.Headers.Values), - string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RaveDB does not like object arrays + string.Join(' ', metadata.Values.Select(v => v.ToString())) // Needed, RaveDB does not like object arrays }, ConversationId = (string)metadata["ConversationId"] }; diff --git a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index f173ae8e32..8d1a2200ce 100644 --- a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -35,7 +35,7 @@ from message in messages Query = new[] { string.Join(' ', last.Headers.Values), - string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RavenDB does not like object arrays + string.Join(' ', metadata.Values.Select(v => v.ToString())) // Needed, RavenDB does not like object arrays }, ConversationId = (string)metadata["ConversationId"] }; From 0fa5bba964a5b58b191cba0a0de2271dc04f5207 Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 15:23:05 +0100 Subject: [PATCH 08/12] error CS1503: Argument 2: cannot convert from 'System.Collections.Generic.IEnumerable' to 'System.Collections.Generic.IEnumerable' --- .../Indexes/MessagesViewIndex.cs | 4 +++- .../Indexes/MessagesViewIndex.cs | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 76c0cc4ea2..b1a78f05f1 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -28,7 +28,9 @@ from message in messages Query = new[] { string.Join(' ', message.Headers.Values), - string.Join(' ', metadata.Values.Select(v => v.ToString())) // Needed, RaveDB does not like object arrays + // Needed, RavenDB does not like object arrays + // and cannot directly use metadata.Values + string.Join(' ', metadata.Select(x => x.Value.ToString())) }, ConversationId = (string)metadata["ConversationId"] }; diff --git a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 8d1a2200ce..9fd209479f 100644 --- a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -35,7 +35,9 @@ from message in messages Query = new[] { string.Join(' ', last.Headers.Values), - string.Join(' ', metadata.Values.Select(v => v.ToString())) // Needed, RavenDB does not like object arrays + // Needed, RavenDB does not like object arrays + // and cannot directly use metadata.Values + string.Join(' ', metadata.Select(x => x.Value.ToString())) }, ConversationId = (string)metadata["ConversationId"] }; From c6a4a7824eba9f045f3526131dbcbc88db406ab8 Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 17:15:07 +0100 Subject: [PATCH 09/12] Revert "error CS1503: Argument 2: cannot convert from 'System.Collections.Generic.IEnumerable' to 'System.Collections.Generic.IEnumerable'" This reverts commit 0fa5bba964a5b58b191cba0a0de2271dc04f5207. --- .../Indexes/MessagesViewIndex.cs | 4 +--- .../Indexes/MessagesViewIndex.cs | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index b1a78f05f1..76c0cc4ea2 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -28,9 +28,7 @@ from message in messages Query = new[] { string.Join(' ', message.Headers.Values), - // Needed, RavenDB does not like object arrays - // and cannot directly use metadata.Values - string.Join(' ', metadata.Select(x => x.Value.ToString())) + string.Join(' ', metadata.Values.Select(v => v.ToString())) // Needed, RaveDB does not like object arrays }, ConversationId = (string)metadata["ConversationId"] }; diff --git a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 9fd209479f..8d1a2200ce 100644 --- a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -35,9 +35,7 @@ from message in messages Query = new[] { string.Join(' ', last.Headers.Values), - // Needed, RavenDB does not like object arrays - // and cannot directly use metadata.Values - string.Join(' ', metadata.Select(x => x.Value.ToString())) + string.Join(' ', metadata.Values.Select(v => v.ToString())) // Needed, RavenDB does not like object arrays }, ConversationId = (string)metadata["ConversationId"] }; From 63d35f209c1bbeeff824da3f8688a42754977ccb Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 17:15:07 +0100 Subject: [PATCH 10/12] Revert "Resolve error CS0019: Operator '!=' cannot be applied to operands of type 'KeyValuePair' and ''" This reverts commit 5bcee0fdff6ec224ac551d693d93d7b928a33239. --- .../Indexes/MessagesViewIndex.cs | 2 +- .../Indexes/MessagesViewIndex.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 76c0cc4ea2..2f90baf51c 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -28,7 +28,7 @@ from message in messages Query = new[] { string.Join(' ', message.Headers.Values), - string.Join(' ', metadata.Values.Select(v => v.ToString())) // Needed, RaveDB does not like object arrays + string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RaveDB does not like object arrays }, ConversationId = (string)metadata["ConversationId"] }; diff --git a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 8d1a2200ce..f173ae8e32 100644 --- a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -35,7 +35,7 @@ from message in messages Query = new[] { string.Join(' ', last.Headers.Values), - string.Join(' ', metadata.Values.Select(v => v.ToString())) // Needed, RavenDB does not like object arrays + string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RavenDB does not like object arrays }, ConversationId = (string)metadata["ConversationId"] }; From 02d06e9e301b8431722debafed779dc9a632a321 Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 17:15:07 +0100 Subject: [PATCH 11/12] Revert "Code formatting" This reverts commit 0e1630526ea746277408d1d425974979498b5e1b. --- .../Indexes/MessagesViewIndex.cs | 3 +-- .../Indexes/MessagesViewIndex.cs | 14 +++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 2f90baf51c..2c37842d6b 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -25,8 +25,7 @@ from message in messages CriticalTime = (TimeSpan?)metadata["CriticalTime"], ProcessingTime = (TimeSpan?)metadata["ProcessingTime"], DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], - Query = new[] - { + Query = new[] { string.Join(' ', message.Headers.Values), string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RaveDB does not like object arrays }, diff --git a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index f173ae8e32..6762cd3605 100644 --- a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -11,6 +11,7 @@ public class MessagesViewIndex : AbstractIndexCreationTask + from message in messages let last = message.ProcessingAttempts.Last() let metadata = last.MessageMetadata @@ -21,19 +22,18 @@ from message in messages IsSystemMessage = (bool)metadata["IsSystemMessage"], Status = message.Status == FailedMessageStatus.Archived ? MessageStatus.ArchivedFailure - : message.Status == FailedMessageStatus.Resolved - ? MessageStatus.ResolvedSuccessfully - : message.ProcessingAttempts.Count == 1 - ? MessageStatus.Failed - : MessageStatus.RepeatedFailure, + : message.Status == FailedMessageStatus.Resolved + ? MessageStatus.ResolvedSuccessfully + : message.ProcessingAttempts.Count == 1 + ? MessageStatus.Failed + : MessageStatus.RepeatedFailure, TimeSent = (DateTime)metadata["TimeSent"], ProcessedAt = last.AttemptedAt, ReceivingEndpointName = ((EndpointDetails)metadata["ReceivingEndpoint"]).Name, CriticalTime = (TimeSpan?)metadata["CriticalTime"], ProcessingTime = (TimeSpan?)metadata["ProcessingTime"], DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], - Query = new[] - { + Query = new[] { string.Join(' ', last.Headers.Values), string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RavenDB does not like object arrays }, From dd793a1a66842a9d8bf0f0d0a94447795fd9538d Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Tue, 11 Mar 2025 17:15:07 +0100 Subject: [PATCH 12/12] Revert "Fix potential NullReferenceException and added comment why cannot use `.Values` directly" This reverts commit b39f6744128a4ad5d76c0169019080a35715473d. --- .../Indexes/MessagesViewIndex.cs | 2 +- .../Indexes/MessagesViewIndex.cs | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 2c37842d6b..0bef33c8fc 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -27,7 +27,7 @@ from message in messages DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], Query = new[] { string.Join(' ', message.Headers.Values), - string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RaveDB does not like object arrays + string.Join(' ', metadata.Values.Select(v => v.ToString() ?? string.Empty)) }, ConversationId = (string)metadata["ConversationId"] }; diff --git a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs index 6762cd3605..93e153c15e 100644 --- a/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs +++ b/src/ServiceControl.Persistence.RavenDB/Indexes/MessagesViewIndex.cs @@ -33,10 +33,7 @@ from message in messages CriticalTime = (TimeSpan?)metadata["CriticalTime"], ProcessingTime = (TimeSpan?)metadata["ProcessingTime"], DeliveryTime = (TimeSpan?)metadata["DeliveryTime"], - Query = new[] { - string.Join(' ', last.Headers.Values), - string.Join(' ', metadata.Values.Where(v => v != null).Select(v => v.ToString())) // Needed, RavenDB does not like object arrays - }, + Query = metadata.Select(_ => _.Value.ToString()).Union(new[] { string.Join(" ", last.Headers.Select(x => x.Value)) }).ToArray(), ConversationId = (string)metadata["ConversationId"] };