Skip to content

Commit 20ad639

Browse files
committed
Allow RavenDB search engine type to be configured
1 parent 19ca929 commit 20ad639

File tree

7 files changed

+70
-33
lines changed

7 files changed

+70
-33
lines changed

src/ServiceControl.Audit.Persistence.RavenDB/DatabaseConfiguration.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ public class DatabaseConfiguration(
1212
int dataSpaceRemainingThreshold,
1313
int minimumStorageLeftRequiredForIngestion,
1414
ServerConfiguration serverConfiguration,
15-
TimeSpan bulkInsertCommitTimeout)
15+
TimeSpan bulkInsertCommitTimeout,
16+
string searchEngineType)
1617
{
1718
public string Name { get; } = name;
1819

@@ -33,5 +34,7 @@ public class DatabaseConfiguration(
3334
public int MinimumStorageLeftRequiredForIngestion { get; internal set; } = minimumStorageLeftRequiredForIngestion; //Setting for ATT only
3435

3536
public TimeSpan BulkInsertCommitTimeout { get; } = bulkInsertCommitTimeout;
37+
38+
public string SearchEngineType { get; } = searchEngineType;
3639
}
37-
}
40+
}

src/ServiceControl.Audit.Persistence.RavenDB/DatabaseSetup.cs

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ async Task CreateDatabase(IDocumentStore documentStore, string databaseName, Can
3636
try
3737
{
3838
var databaseRecord = new DatabaseRecord(databaseName);
39-
databaseRecord.Settings.Add("Indexing.Auto.SearchEngineType", "Corax");
40-
databaseRecord.Settings.Add("Indexing.Static.SearchEngineType", "Corax");
39+
databaseRecord.Settings.Add("Indexing.Auto.SearchEngineType", configuration.SearchEngineType);
40+
databaseRecord.Settings.Add("Indexing.Static.SearchEngineType", configuration.SearchEngineType);
4141

4242
await documentStore.Maintenance.Server.SendAsync(new CreateDatabaseOperation(databaseRecord), cancellationToken);
4343
}
@@ -59,8 +59,33 @@ async Task UpdateDatabaseSettings(IDocumentStore documentStore, string databaseN
5959

6060
var updated = false;
6161

62-
updated |= dbRecord.Settings.TryAdd("Indexing.Auto.SearchEngineType", "Corax");
63-
updated |= dbRecord.Settings.TryAdd("Indexing.Static.SearchEngineType", "Corax");
62+
if (dbRecord.Settings.TryGetValue(AutoSearchEngineTypeKey, out var searchEngineTypeAuto))
63+
{
64+
if (searchEngineTypeAuto != configuration.SearchEngineType)
65+
{
66+
updated = true;
67+
}
68+
}
69+
else
70+
{
71+
updated = true;
72+
}
73+
74+
dbRecord.Settings[AutoSearchEngineTypeKey] = configuration.SearchEngineType;
75+
76+
if (dbRecord.Settings.TryGetValue(StaticSearchEngineTypeKey, out var searchEngineTypeStatic))
77+
{
78+
if (searchEngineTypeStatic != configuration.SearchEngineType)
79+
{
80+
updated = true;
81+
}
82+
}
83+
else
84+
{
85+
updated = true;
86+
}
87+
88+
dbRecord.Settings[StaticSearchEngineTypeKey] = configuration.SearchEngineType;
6489

6590
if (updated)
6691
{
@@ -116,5 +141,8 @@ async Task ConfigureExpiration(IDocumentStore documentStore, CancellationToken c
116141

117142
await documentStore.Maintenance.SendAsync(new ConfigureExpirationOperation(expirationConfig), cancellationToken);
118143
}
144+
145+
const string AutoSearchEngineTypeKey = "Indexing.Auto.SearchEngineType";
146+
const string StaticSearchEngineTypeKey = "Indexing.Static.SearchEngineType";
119147
}
120-
}
148+
}

src/ServiceControl.Audit.Persistence.RavenDB/RavenPersistenceConfiguration.cs

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,9 @@ public class RavenPersistenceConfiguration : IPersistenceConfiguration
2222
public const string MinimumStorageLeftRequiredForIngestionKey = "MinimumStorageLeftRequiredForIngestion";
2323
public const string BulkInsertCommitTimeoutInSecondsKey = "BulkInsertCommitTimeoutInSeconds";
2424
public const string DataSpaceRemainingThresholdKey = "DataSpaceRemainingThreshold";
25+
public const string SearchEngineTypeKey = "SearchEngineType";
2526

26-
public IEnumerable<string> ConfigurationKeys => new[]{
27-
DatabaseNameKey,
28-
DatabasePathKey,
29-
ConnectionStringKey,
30-
ClientCertificatePathKey,
31-
ClientCertificateBase64Key,
32-
ClientCertificatePasswordKey,
33-
DatabaseMaintenancePortKey,
34-
ExpirationProcessTimerInSecondsKey,
35-
LogPathKey,
36-
RavenDbLogLevelKey,
37-
DataSpaceRemainingThresholdKey,
38-
MinimumStorageLeftRequiredForIngestionKey,
39-
BulkInsertCommitTimeoutInSecondsKey
40-
};
27+
public IEnumerable<string> ConfigurationKeys => new[] { DatabaseNameKey, DatabasePathKey, ConnectionStringKey, ClientCertificatePathKey, ClientCertificateBase64Key, ClientCertificatePasswordKey, DatabaseMaintenancePortKey, ExpirationProcessTimerInSecondsKey, LogPathKey, RavenDbLogLevelKey, DataSpaceRemainingThresholdKey, MinimumStorageLeftRequiredForIngestionKey, BulkInsertCommitTimeoutInSecondsKey, SearchEngineTypeKey };
4128

4229
public string Name => "RavenDB";
4330

@@ -70,10 +57,12 @@ internal static DatabaseConfiguration GetDatabaseConfiguration(PersistenceSettin
7057
{
7158
serverConfiguration.ClientCertificatePath = clientCertificatePath;
7259
}
60+
7361
if (settings.PersisterSpecificSettings.TryGetValue(ClientCertificateBase64Key, out var clientCertificateBase64))
7462
{
7563
serverConfiguration.ClientCertificateBase64 = clientCertificateBase64;
7664
}
65+
7766
if (settings.PersisterSpecificSettings.TryGetValue(ClientCertificatePasswordKey, out var clientCertificatePassword))
7867
{
7968
serverConfiguration.ClientCertificatePassword = clientCertificatePassword;
@@ -120,6 +109,11 @@ internal static DatabaseConfiguration GetDatabaseConfiguration(PersistenceSettin
120109

121110
var bulkInsertTimeout = TimeSpan.FromSeconds(GetBulkInsertCommitTimeout(settings));
122111

112+
if (!settings.PersisterSpecificSettings.TryGetValue(SearchEngineTypeKey, out var searchEngineType))
113+
{
114+
searchEngineType = "Corax";
115+
}
116+
123117
return new DatabaseConfiguration(
124118
databaseName,
125119
expirationProcessTimerInSeconds,
@@ -129,7 +123,8 @@ internal static DatabaseConfiguration GetDatabaseConfiguration(PersistenceSettin
129123
dataSpaceRemainingThreshold,
130124
minimumStorageLeftRequiredForIngestion,
131125
serverConfiguration,
132-
bulkInsertTimeout);
126+
bulkInsertTimeout,
127+
searchEngineType);
133128
}
134129

135130
static int GetExpirationProcessTimerInSeconds(PersistenceSettings settings)
@@ -198,4 +193,4 @@ static string GetLogPath(PersistenceSettings settings)
198193
const int ExpirationProcessTimerInSecondsDefault = 600;
199194
const int BulkInsertCommitTimeoutInSecondsDefault = 60;
200195
}
201-
}
196+
}

src/ServiceControl.Audit.Persistence.Tests.RavenDB/PersistenceTestsConfiguration.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,10 @@ public async Task Configure(Action<PersistenceSettings> setSettings)
8484
var documentStoreProvider = host.Services.GetRequiredService<IRavenDocumentStoreProvider>();
8585
DocumentStore = await documentStoreProvider.GetDocumentStore();
8686
var bulkInsert = DocumentStore.BulkInsert(
87-
options: new BulkInsertOptions { SkipOverwriteIfUnchanged = true, });
87+
options: new BulkInsertOptions
88+
{
89+
SkipOverwriteIfUnchanged = true,
90+
});
8891

8992
var sessionProvider = host.Services.GetRequiredService<IRavenSessionProvider>();
9093

@@ -103,11 +106,18 @@ public async Task Cleanup()
103106
if (DocumentStore != null)
104107
{
105108
await DocumentStore.Maintenance.Server.SendAsync(new DeleteDatabasesOperation(
106-
new DeleteDatabasesOperation.Parameters { DatabaseNames = [databaseName], HardDelete = true }));
109+
new DeleteDatabasesOperation.Parameters
110+
{
111+
DatabaseNames = [databaseName],
112+
HardDelete = true
113+
}));
107114
}
108115

109-
await host.StopAsync();
110-
host.Dispose();
116+
if (host != null)
117+
{
118+
await host.StopAsync();
119+
host.Dispose();
120+
}
111121
}
112122

113123

src/ServiceControl.Audit.Persistence.Tests.RavenDB/SharedEmbeddedServer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static async Task<EmbeddedDatabase> GetInstance(CancellationToken cancell
3636
var logsMode = "Operations";
3737
var serverUrl = $"http://localhost:{PortUtility.FindAvailablePort(33334)}";
3838

39-
var databaseConfiguration = new DatabaseConfiguration("audit", 60, true, TimeSpan.FromMinutes(5), 120000, 5, 5, new ServerConfiguration(dbPath, serverUrl, logPath, logsMode), TimeSpan.FromSeconds(60));
39+
var databaseConfiguration = new DatabaseConfiguration("audit", 60, true, TimeSpan.FromMinutes(5), 120000, 5, 5, new ServerConfiguration(dbPath, serverUrl, logPath, logsMode), TimeSpan.FromSeconds(60), "Lucene");
4040
var serverConfig = databaseConfiguration.ServerConfiguration;
4141

4242
// TODO: See if more refactoring can be done in configuration classes

src/ServiceControl.Persistence.RavenDB/DatabaseSetup.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ async Task CreateDatabase(string databaseName, CancellationToken cancellationTok
3535
try
3636
{
3737
var databaseRecord = new DatabaseRecord(databaseName);
38-
databaseRecord.Settings.Add("Indexing.Auto.SearchEngineType", "Corax");
39-
databaseRecord.Settings.Add("Indexing.Static.SearchEngineType", "Corax");
38+
databaseRecord.Settings.Add("Indexing.Auto.SearchEngineType", settings.SearchEngineType);
39+
databaseRecord.Settings.Add("Indexing.Static.SearchEngineType", settings.SearchEngineType);
4040

4141
await documentStore.Maintenance.Server.SendAsync(new CreateDatabaseOperation(databaseRecord), cancellationToken);
4242
}
@@ -58,8 +58,8 @@ async Task UpdateDatabaseSettings(string databaseName, CancellationToken cancell
5858

5959
var updated = false;
6060

61-
updated |= dbRecord.Settings.TryAdd("Indexing.Auto.SearchEngineType", "Corax");
62-
updated |= dbRecord.Settings.TryAdd("Indexing.Static.SearchEngineType", "Corax");
61+
updated |= dbRecord.Settings.TryAdd("Indexing.Auto.SearchEngineType", settings.SearchEngineType);
62+
updated |= dbRecord.Settings.TryAdd("Indexing.Static.SearchEngineType", settings.SearchEngineType);
6363

6464
if (updated)
6565
{

src/ServiceControl.Persistence.RavenDB/RavenPersisterSettings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class RavenPersisterSettings : PersistenceSettings, IRavenClientCertificateInfo
3232
public string LogsMode { get; set; } = LogsModeDefault;
3333
public string DatabaseName { get; set; } = DatabaseNameDefault;
3434
public string ThroughputDatabaseName { get; set; } = ThroughputSettings.DefaultDatabaseName;
35+
public string SearchEngineType { get; set; } = "Corax";
3536

3637
public const string DatabaseNameDefault = "primary";
3738
public const int DatabaseMaintenancePortDefault = 33334;

0 commit comments

Comments
 (0)