Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ namespace ServiceControl.Audit.Infrastructure.Settings
public class Settings
{
public const string DEFAULT_SERVICE_NAME = "Particular.ServiceControl.Audit";
public const string Disabled = "!disable";
public Settings(string serviceName, string transportType = null, string persisterType = null) { }
public string ApiUrl { get; }
public string AuditLogQueue { get; set; }
Expand Down
61 changes: 26 additions & 35 deletions src/ServiceControl.Audit/Infrastructure/Settings/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ public Settings(string serviceName, string transportType = null, string persiste

TransportConnectionString = GetConnectionString();

AuditQueue = GetAuditQueue();
AuditLogQueue = GetAuditLogQueue(AuditQueue);
LoadAuditQueueInformation();

TryLoadLicenseFromConfig();

Expand All @@ -44,6 +43,31 @@ public Settings(string serviceName, string transportType = null, string persiste
EnableFullTextSearchOnBodies = SettingsReader<bool>.Read("EnableFullTextSearchOnBodies", true);
}

void LoadAuditQueueInformation()
{
AuditQueue = SettingsReader<string>.Read("ServiceBus", "AuditQueue", "audit");

if (string.IsNullOrEmpty(AuditQueue))
{
throw new Exception("ServiceBus/AuditQueue value is required to start the instance");
}

IngestAuditMessages = SettingsReader<bool>.Read("ServiceControl", "IngestAuditMessages", true);

if (IngestAuditMessages == false)
{
logger.Info("Audit ingestion disabled.");
}

AuditLogQueue = SettingsReader<string>.Read("ServiceBus", "AuditLogQueue", null);

if (AuditLogQueue == null)
{
logger.Info("No settings found for audit log queue to import, default name will be used");
AuditLogQueue = Subscope(AuditQueue);
}
}

//HINT: acceptance tests only
public Func<MessageContext, bool> MessageFilter { get; set; }

Expand Down Expand Up @@ -170,38 +194,6 @@ TimeSpan GetTimeToRestartAuditIngestionAfterFailure()
return result;
}

string GetAuditLogQueue(string auditQueue)
{
if (auditQueue == null)
{
return null;
}

var value = SettingsReader<string>.Read("ServiceBus", "AuditLogQueue", null);

if (value == null)
{
logger.Info("No settings found for audit log queue to import, default name will be used");
return Subscope(auditQueue);
}

return value;
}

string GetAuditQueue()
{
var value = SettingsReader<string>.Read("ServiceBus", "AuditQueue", "audit");

if (value.Equals(Disabled, StringComparison.OrdinalIgnoreCase))
{
logger.Info("Audit ingestion disabled.");
IngestAuditMessages = false;
return null; // needs to be null to not create the queues
}

return value;
}

static bool GetForwardAuditMessages()
{
var forwardAuditMessages = NullableSettingsReader<bool>.Read("ForwardAuditMessages");
Expand Down Expand Up @@ -304,7 +296,6 @@ void TryLoadLicenseFromConfig()
ILog logger = LogManager.GetLogger(typeof(Settings));
int maxBodySizeToStore = SettingsReader<int>.Read("MaxBodySizeToStore", MaxBodySizeToStoreDefault);
public const string DEFAULT_SERVICE_NAME = "Particular.ServiceControl.Audit";
public const string Disabled = "!disable";

const int MaxBodySizeToStoreDefault = 102400; //100 kb
const int DataSpaceRemainingThresholdDefault = 20;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ public async Task Run(string username)
var transportSettings = MapSettings(settings);
var transportCustomization = settings.LoadTransportCustomization();

// if audit queue is ("!disable") IngestAuditMessages will be false
if (settings.IngestAuditMessages)
{
if (settings.SkipQueueCreation)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,6 @@ public override async Task ExecuteAsync(InstanceDetailsViewModel model)
return;
}

if (instance.IsErrorQueueDisabled())
{
await windowManager.ShowMessage("UPGRADE INCOMPATIBLE",
"You cannot upgrade the instance of ServiceControl with error ingestion disabled. Please contact support.",
hideCancel: true);

return;
}

var upgradeOptions = new ServiceControlUpgradeOptions();

if (!instance.AppConfig.AppSettingExists(ServiceControlSettings.ForwardErrorMessages.Name))
Expand Down
9 changes: 2 additions & 7 deletions src/ServiceControl.Config/Extensions/Validations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,7 @@ public static List<string> UsedErrorQueueNames(TransportInfo transportInfo = nul
{
p.ErrorLogQueue,
p.ErrorQueue
}).Where(queuename => !string.IsNullOrEmpty(queuename) &&
string.Compare(queuename, "!disable", StringComparison.OrdinalIgnoreCase) != 0 &&
string.Compare(queuename, "!disable.log", StringComparison.OrdinalIgnoreCase) != 0)
}).Where(queuename => !string.IsNullOrEmpty(queuename))
.Distinct()
.ToList();
}
Expand All @@ -75,10 +73,7 @@ public static List<string> UsedAuditQueueNames(TransportInfo transportInfo = nul
{
p.AuditQueue,
p.AuditLogQueue
}).Where(queuename => !string.IsNullOrEmpty(queuename) &&
string.Compare(queuename, "!disable", StringComparison.OrdinalIgnoreCase) != 0 &&
string.Compare(queuename, "!disable.log", StringComparison.OrdinalIgnoreCase) != 0
)
}).Where(queuename => !string.IsNullOrEmpty(queuename))
.Distinct()
.ToList();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ public ServiceControlAddViewModelValidator()
.WithMessage(string.Format(Validation.Validations.MSG_QUEUE_ALREADY_ASSIGNED, "Error"))
.MustNotBeIn(x => Validations.UsedAuditQueueNames(x.SelectedTransport, x.ErrorInstanceName, x.ConnectionString))
.WithMessage(string.Format(Validation.Validations.MSG_QUEUE_ALREADY_ASSIGNED, "Error"))
.When(x => x.InstallErrorInstance && x.ErrorQueueName != "!disable");
.When(x => x.InstallErrorInstance);

RuleFor(x => x.ErrorForwardingQueueName)
.NotEmpty()
Expand Down Expand Up @@ -226,7 +226,7 @@ public ServiceControlAddViewModelValidator()
.WithMessage(string.Format(Validation.Validations.MSG_QUEUE_ALREADY_ASSIGNED, "Audit"))
.MustNotBeIn(x => Validations.UsedAuditQueueNames(x.SelectedTransport, x.AuditInstanceName, x.ConnectionString))
.WithMessage(string.Format(Validation.Validations.MSG_QUEUE_ALREADY_ASSIGNED, "Audit"))
.When(x => x.InstallAuditInstance && x.AuditQueueName != "!disable");
.When(x => x.InstallAuditInstance);

RuleFor(x => x.AuditForwardingQueueName)
.NotEmpty()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public ServiceControlAuditEditViewModelValidator()
.WithMessage(string.Format(Validation.Validations.MSG_QUEUE_ALREADY_ASSIGNED, "Audit"))
.MustNotBeIn(x => Validations.UsedAuditQueueNames(x.SelectedTransport, x.InstanceName, x.ConnectionString))
.WithMessage(string.Format(Validation.Validations.MSG_QUEUE_ALREADY_ASSIGNED, "Audit"))
.When(x => x.SubmitAttempted && x.AuditQueueName != "!disable");
.When(x => x.SubmitAttempted);

RuleFor(x => x.AuditForwardingQueueName)
.NotEmpty()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public ServiceControlEditViewModelValidator()
.MustNotBeIn(x =>
Validations.UsedErrorQueueNames(x.SelectedTransport, x.InstanceName, x.ConnectionString))
.WithMessage(string.Format(Validation.Validations.MSG_QUEUE_ALREADY_ASSIGNED, "Error"))
.When(x => x.SubmitAttempted && x.ErrorQueueName != "!disable");
.When(x => x.SubmitAttempted);

RuleFor(x => x.ErrorForwardingQueueName)
.NotEmpty()
Expand Down
68 changes: 26 additions & 42 deletions src/ServiceControl/Infrastructure/Settings/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ public Settings(
// Overwrite the service name if it is specified in ENVVAR, reg, or config file
ServiceName = SettingsReader.Read("InternalQueueName", ServiceName);

ErrorQueue = GetErrorQueue();
ErrorLogQueue = GetErrorLogQueue(ErrorQueue);
LoadErrorIngestionSettings();

TryLoadLicenseFromConfig();

Expand Down Expand Up @@ -185,45 +184,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<string>("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;
}

static bool GetForwardErrorMessages()
{
var forwardErrorMessages = SettingsReader.Read<bool?>("ForwardErrorMessages");
Expand Down Expand Up @@ -426,14 +386,38 @@ int GetDataSpaceRemainingThreshold()
return threshold;
}

void LoadErrorIngestionSettings()
{
ErrorQueue = SettingsReader.Read("ServiceBus", "ErrorQueue", "error");

if (string.IsNullOrEmpty(ErrorQueue))
{
throw new Exception("ServiceBus/ErrorQueue requires a value to start the instance");
}

IngestErrorMessages = SettingsReader.Read("IngestErrorMessages", true);

if (!IngestErrorMessages)
{
logger.Info("Error ingestion disabled.");
}

ErrorLogQueue = SettingsReader.Read<string>("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);
}
}

void TryLoadLicenseFromConfig()
{
LicenseFileText = SettingsReader.Read<string>("LicenseText");
}

static readonly ILog logger = LogManager.GetLogger(typeof(Settings));
public const string DEFAULT_SERVICE_NAME = "Particular.ServiceControl";
public const string Disabled = "!disable";

const int DataSpaceRemainingThresholdDefault = 20;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -343,8 +343,6 @@ protected virtual IEnumerable<string> GetPersistencePathsToCleanUp()
return Enumerable.Empty<string>();
}

protected bool IsQueueDisabled(string queueName) => queueName != null && queueName.Equals("!disable", StringComparison.InvariantCultureIgnoreCase);

protected virtual void ValidateConnectionString()
{
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,6 @@ public override void RunQueueCreation()
QueueCreation.RunQueueCreation(this);
}

public bool IsAuditQueueDisabled() => IsQueueDisabled(AuditQueue);

public bool IsErrorQueueDisabled() => IsQueueDisabled(ErrorQueue);

protected override void ValidateQueueNames()
{
try
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ internal void CheckQueueNamesAreUniqueWithinInstance()
var duplicatedQueues = queues
.Where(x => x.QueueName != null)
.ToLookup(x => x.QueueName.ToLower())
//HINT: we need to filter out `!disable` as the user can still have old instances with this value
.Where(x => x.Key != "!disable" && x.Key != "!disable.log" && x.Count() > 1);

if (duplicatedQueues.Any())
Expand All @@ -124,6 +125,7 @@ where allQueues.Any(p =>
p.QueueType != QueueType.Audit &&
string.Equals(p.ConnectionString, queue.ConnectionString, StringComparison.OrdinalIgnoreCase) &&
string.Equals(p.QueueName, queue.QueueName, StringComparison.OrdinalIgnoreCase) &&
//HINT: we need to filter out `!disable` as the user can still have old instances with this value
string.Compare("!disable", queue.QueueName, StringComparison.OrdinalIgnoreCase) != 0 &&
string.Compare("!disable.log", queue.QueueName, StringComparison.OrdinalIgnoreCase) != 0)
select queue.PropertyName
Expand All @@ -140,6 +142,7 @@ from queue in queues
where allQueues.Any(p =>
string.Equals(p.ConnectionString, queue.ConnectionString, StringComparison.OrdinalIgnoreCase) &&
string.Equals(p.QueueName, queue.QueueName, StringComparison.OrdinalIgnoreCase) &&
//HINT: we need to filter out `!disable` as the user can still have old instances with this value
string.Compare("!disable", queue.QueueName, StringComparison.OrdinalIgnoreCase) != 0 &&
string.Compare("!disable.log", queue.QueueName, StringComparison.OrdinalIgnoreCase) != 0)
select queue.PropertyName
Expand Down