From d48fb755ee9df83a255c759054e8e18b1512063c Mon Sep 17 00:00:00 2001 From: Tomek Masternak Date: Wed, 8 Nov 2023 14:12:10 +0100 Subject: [PATCH 1/6] Add IngestErrorMessages setting independent of error queue name --- src/ServiceControl/Infrastructure/Settings/Settings.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ServiceControl/Infrastructure/Settings/Settings.cs b/src/ServiceControl/Infrastructure/Settings/Settings.cs index 6d8bf0c2af..eab6fc8746 100644 --- a/src/ServiceControl/Infrastructure/Settings/Settings.cs +++ b/src/ServiceControl/Infrastructure/Settings/Settings.cs @@ -28,6 +28,7 @@ public Settings(string serviceName = null) ErrorQueue = GetErrorQueue(); ErrorLogQueue = GetErrorLogQueue(ErrorQueue); + IngestErrorMessages = SettingsReader.Read("IngestErrorMessages", true); TryLoadLicenseFromConfig(); From a38b141efa27b07ecca380e99a74efb66fea2163 Mon Sep 17 00:00:00 2001 From: Tomek Masternak Date: Thu, 9 Nov 2023 10:50:19 +0100 Subject: [PATCH 2/6] validating error queue related settings --- .../Infrastructure/Settings/Settings.cs | 88 ++++++++++--------- .../Recoverability/RecoverabilityComponent.cs | 1 - .../Infrastructure/ReturnToSenderDequeuer.cs | 1 - 3 files changed, 46 insertions(+), 44 deletions(-) diff --git a/src/ServiceControl/Infrastructure/Settings/Settings.cs b/src/ServiceControl/Infrastructure/Settings/Settings.cs index eab6fc8746..7e8967c746 100644 --- a/src/ServiceControl/Infrastructure/Settings/Settings.cs +++ b/src/ServiceControl/Infrastructure/Settings/Settings.cs @@ -26,9 +26,7 @@ public Settings(string serviceName = null) // Overwrite the service name if it is specified in ENVVAR, reg, or config file ServiceName = SettingsReader.Read("InternalQueueName", ServiceName); - ErrorQueue = GetErrorQueue(); - ErrorLogQueue = GetErrorLogQueue(ErrorQueue); - IngestErrorMessages = SettingsReader.Read("IngestErrorMessages", true); + LoadErrorIngestionSettings(); TryLoadLicenseFromConfig(); @@ -56,6 +54,51 @@ public Settings(string serviceName = null) DataStoreType = GetDataStoreType(); } + void LoadErrorIngestionSettings() + { + ErrorQueue = SettingsReader.Read("ServiceBus", "ErrorQueue", "error"); + + var hasValidErrorQueueName = string.IsNullOrEmpty(ErrorQueue) && !ErrorQueue.Equals(Disabled, StringComparison.OrdinalIgnoreCase); + + IngestErrorMessages = !SettingsReader.Read("DisableErrorQueueIngestion", !hasValidErrorQueueName); + + if (IngestErrorMessages && hasValidErrorQueueName == false) + { + throw new Exception($"Error ingestion cannot be enabled when ServiceBus/ErrorQueue is '{ErrorQueue}'"); + } + + if (hasValidErrorQueueName == false || IngestErrorMessages == false) + { + logger.Info("Error ingestion disabled."); + } + + if (hasValidErrorQueueName == false) + { + if (string.IsNullOrEmpty(ErrorQueue)) + { + logger.Warn("No configuration value set for ServiceBus/ErrorQueue. If this is not intentional provide a value."); + } + + ErrorLogQueue = null; + ErrorQueue = null; + } + else + { + var errorLogQueue = SettingsReader.Read("ServiceBus", "ErrorLogQueue", null); + + if (errorLogQueue == null) + { + logger.Info("No settings found for error log queue to import, default name will be used"); + + ErrorLogQueue = Subscope(ErrorQueue); + } + else + { + ErrorLogQueue = errorLogQueue; + } + } + } + public string NotificationsFilter { get; set; } public bool AllowMessageEditing { get; set; } @@ -234,45 +277,6 @@ public string GetConnectionString() return connectionStringSettings?.ConnectionString; } - string GetErrorQueue() - { - var value = SettingsReader.Read("ServiceBus", "ErrorQueue", "error"); - - if (value == null) - { - logger.Warn("No settings found for error queue to import, if this is not intentional please set add ServiceBus/ErrorQueue to your appSettings"); - IngestErrorMessages = false; - return null; - } - - if (value.Equals(Disabled, StringComparison.OrdinalIgnoreCase)) - { - logger.Info("Error ingestion disabled."); - IngestErrorMessages = false; - return null; // needs to be null to not create the queues - } - - return value; - } - - string GetErrorLogQueue(string errorQueue) - { - if (errorQueue == null) - { - return null; - } - - var value = SettingsReader.Read("ServiceBus", "ErrorLogQueue", null); - - if (value == null) - { - logger.Info("No settings found for error log queue to import, default name will be used"); - return Subscope(errorQueue); - } - - return value; - } - string GetDbPath() { var host = Hostname; diff --git a/src/ServiceControl/Recoverability/RecoverabilityComponent.cs b/src/ServiceControl/Recoverability/RecoverabilityComponent.cs index 1a1d29f907..d2615aa415 100644 --- a/src/ServiceControl/Recoverability/RecoverabilityComponent.cs +++ b/src/ServiceControl/Recoverability/RecoverabilityComponent.cs @@ -16,7 +16,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using NServiceBus.Logging; - using NServiceBus.Raw; using NServiceBus.Transport; using Operations; using Operations.BodyStorage; diff --git a/src/ServiceControl/Recoverability/Retrying/Infrastructure/ReturnToSenderDequeuer.cs b/src/ServiceControl/Recoverability/Retrying/Infrastructure/ReturnToSenderDequeuer.cs index 4b90831a9e..e6c66c0aeb 100644 --- a/src/ServiceControl/Recoverability/Retrying/Infrastructure/ReturnToSenderDequeuer.cs +++ b/src/ServiceControl/Recoverability/Retrying/Infrastructure/ReturnToSenderDequeuer.cs @@ -13,7 +13,6 @@ namespace ServiceControl.Recoverability using NServiceBus.Transport; using Raven.Client; using ServiceBus.Management.Infrastructure.Settings; - using ServiceControl.Persistence; class ReturnToSenderDequeuer : IHostedService { From e82ce48ba1881da9dd98a49e4b0de457e224c7ba Mon Sep 17 00:00:00 2001 From: Tomek Masternak Date: Thu, 9 Nov 2023 10:58:22 +0100 Subject: [PATCH 3/6] fix formatting --- src/ServiceControl/Infrastructure/Settings/Settings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ServiceControl/Infrastructure/Settings/Settings.cs b/src/ServiceControl/Infrastructure/Settings/Settings.cs index 7e8967c746..614279cbdb 100644 --- a/src/ServiceControl/Infrastructure/Settings/Settings.cs +++ b/src/ServiceControl/Infrastructure/Settings/Settings.cs @@ -66,7 +66,7 @@ void LoadErrorIngestionSettings() { throw new Exception($"Error ingestion cannot be enabled when ServiceBus/ErrorQueue is '{ErrorQueue}'"); } - + if (hasValidErrorQueueName == false || IngestErrorMessages == false) { logger.Info("Error ingestion disabled."); From 55ceca8df4d83c7d587fb8793465dbbcb502b4d5 Mon Sep 17 00:00:00 2001 From: Tomek Masternak Date: Mon, 13 Nov 2023 11:19:23 +0100 Subject: [PATCH 4/6] fix condition in the error ingestion settings --- src/ServiceControl/Infrastructure/Settings/Settings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ServiceControl/Infrastructure/Settings/Settings.cs b/src/ServiceControl/Infrastructure/Settings/Settings.cs index 614279cbdb..41a01f9dd5 100644 --- a/src/ServiceControl/Infrastructure/Settings/Settings.cs +++ b/src/ServiceControl/Infrastructure/Settings/Settings.cs @@ -58,7 +58,7 @@ void LoadErrorIngestionSettings() { ErrorQueue = SettingsReader.Read("ServiceBus", "ErrorQueue", "error"); - var hasValidErrorQueueName = string.IsNullOrEmpty(ErrorQueue) && !ErrorQueue.Equals(Disabled, StringComparison.OrdinalIgnoreCase); + var hasValidErrorQueueName = !string.IsNullOrEmpty(ErrorQueue) && !ErrorQueue.Equals(Disabled, StringComparison.OrdinalIgnoreCase); IngestErrorMessages = !SettingsReader.Read("DisableErrorQueueIngestion", !hasValidErrorQueueName); From 8d21921b0f16f4ef444b8b4444735d9bb4dfb8bc Mon Sep 17 00:00:00 2001 From: Tomek Masternak Date: Tue, 14 Nov 2023 09:12:34 +0100 Subject: [PATCH 5/6] align code and user-provided setting name --- src/ServiceControl/Infrastructure/Settings/Settings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ServiceControl/Infrastructure/Settings/Settings.cs b/src/ServiceControl/Infrastructure/Settings/Settings.cs index 41a01f9dd5..8dc95d6cdd 100644 --- a/src/ServiceControl/Infrastructure/Settings/Settings.cs +++ b/src/ServiceControl/Infrastructure/Settings/Settings.cs @@ -60,7 +60,7 @@ void LoadErrorIngestionSettings() var hasValidErrorQueueName = !string.IsNullOrEmpty(ErrorQueue) && !ErrorQueue.Equals(Disabled, StringComparison.OrdinalIgnoreCase); - IngestErrorMessages = !SettingsReader.Read("DisableErrorQueueIngestion", !hasValidErrorQueueName); + IngestErrorMessages = !SettingsReader.Read("IngestErrorMessages", hasValidErrorQueueName); if (IngestErrorMessages && hasValidErrorQueueName == false) { From 4c2a31c7cd3c4ba1c285863df888343a93d3bf46 Mon Sep 17 00:00:00 2001 From: Tomek Masternak Date: Tue, 14 Nov 2023 14:12:40 +0100 Subject: [PATCH 6/6] fixing logic --- src/ServiceControl/Infrastructure/Settings/Settings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ServiceControl/Infrastructure/Settings/Settings.cs b/src/ServiceControl/Infrastructure/Settings/Settings.cs index 8dc95d6cdd..b3098aab54 100644 --- a/src/ServiceControl/Infrastructure/Settings/Settings.cs +++ b/src/ServiceControl/Infrastructure/Settings/Settings.cs @@ -60,7 +60,7 @@ void LoadErrorIngestionSettings() var hasValidErrorQueueName = !string.IsNullOrEmpty(ErrorQueue) && !ErrorQueue.Equals(Disabled, StringComparison.OrdinalIgnoreCase); - IngestErrorMessages = !SettingsReader.Read("IngestErrorMessages", hasValidErrorQueueName); + IngestErrorMessages = SettingsReader.Read("IngestErrorMessages", hasValidErrorQueueName); if (IngestErrorMessages && hasValidErrorQueueName == false) {