From 0798899615db61783d7abf62efb22890a691cf3f Mon Sep 17 00:00:00 2001 From: Dan Kent <83468000+kentdr@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:48:02 -0400 Subject: [PATCH] Move database setup into the lifecycle start method (#3638) --- .../EmbeddedDatabase.cs | 7 ++++++- .../RavenDb5Installer.cs | 18 ++---------------- .../RavenDb5Persistence.cs | 6 ++---- .../RavenDbExternalPersistenceLifecycle.cs | 5 +++-- .../RavenDbPersistenceConfiguration.cs | 3 +-- 5 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDb5/EmbeddedDatabase.cs b/src/ServiceControl.Audit.Persistence.RavenDb5/EmbeddedDatabase.cs index ef0f925f36..badd8723c7 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDb5/EmbeddedDatabase.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDb5/EmbeddedDatabase.cs @@ -139,7 +139,12 @@ public async Task Connect(CancellationToken cancellationToken) dbOptions.Conventions.FindClrType += configuration.FindClrType; } - return await EmbeddedServer.Instance.GetDocumentStoreAsync(dbOptions, cancellationToken).ConfigureAwait(false); + var store = await EmbeddedServer.Instance.GetDocumentStoreAsync(dbOptions, cancellationToken).ConfigureAwait(false); + + var databaseSetup = new DatabaseSetup(configuration); + await databaseSetup.Execute(store, cancellationToken).ConfigureAwait(false); + + return store; } public void Dispose() diff --git a/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDb5Installer.cs b/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDb5Installer.cs index 7d7000a844..0ff0d58596 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDb5Installer.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDb5Installer.cs @@ -5,31 +5,17 @@ class RavenDb5Installer : IPersistenceInstaller { - public RavenDb5Installer(IRavenDbPersistenceLifecycle lifecycle, DatabaseSetup databaseSetup) + public RavenDb5Installer(IRavenDbPersistenceLifecycle lifecycle) { this.lifecycle = lifecycle; - this.databaseSetup = databaseSetup; } public async Task Install(CancellationToken cancellationToken) { await lifecycle.Start(cancellationToken).ConfigureAwait(false); - - try - { - using (var documentStore = lifecycle.GetDocumentStore()) - { - await databaseSetup.Execute(documentStore, cancellationToken) - .ConfigureAwait(false); - } - } - finally - { - await lifecycle.Stop(cancellationToken).ConfigureAwait(false); - } + await lifecycle.Stop(cancellationToken).ConfigureAwait(false); } readonly IRavenDbPersistenceLifecycle lifecycle; - readonly DatabaseSetup databaseSetup; } } \ No newline at end of file diff --git a/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDb5Persistence.cs b/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDb5Persistence.cs index 2b7cd0421a..0b62925f6f 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDb5Persistence.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDb5Persistence.cs @@ -7,10 +7,9 @@ class RavenDb5Persistence : IPersistence { - public RavenDb5Persistence(DatabaseConfiguration databaseConfiguration, DatabaseSetup databaseSetup) + public RavenDb5Persistence(DatabaseConfiguration databaseConfiguration) { this.databaseConfiguration = databaseConfiguration; - this.databaseSetup = databaseSetup; } public IPersistenceLifecycle Configure(IServiceCollection serviceCollection) @@ -29,7 +28,7 @@ public IPersistenceLifecycle Configure(IServiceCollection serviceCollection) return lifecycle; } - public IPersistenceInstaller CreateInstaller() => new RavenDb5Installer(CreateLifecycle(), databaseSetup); + public IPersistenceInstaller CreateInstaller() => new RavenDb5Installer(CreateLifecycle()); IRavenDbPersistenceLifecycle CreateLifecycle() { @@ -44,6 +43,5 @@ IRavenDbPersistenceLifecycle CreateLifecycle() } readonly DatabaseConfiguration databaseConfiguration; - readonly DatabaseSetup databaseSetup; } } \ No newline at end of file diff --git a/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDbExternalPersistenceLifecycle.cs b/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDbExternalPersistenceLifecycle.cs index a0c8b55ae3..c1d38a42ad 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDbExternalPersistenceLifecycle.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDbExternalPersistenceLifecycle.cs @@ -23,7 +23,7 @@ public IDocumentStore GetDocumentStore() return documentStore; } - public Task Start(CancellationToken cancellationToken) + public async Task Start(CancellationToken cancellationToken) { var store = new DocumentStore { @@ -44,7 +44,8 @@ public Task Start(CancellationToken cancellationToken) documentStore = store; - return Task.CompletedTask; + var databaseSetup = new DatabaseSetup(configuration); + await databaseSetup.Execute(store, cancellationToken).ConfigureAwait(false); } public Task Stop(CancellationToken cancellationToken) diff --git a/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDbPersistenceConfiguration.cs b/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDbPersistenceConfiguration.cs index 9fbfa600a9..816eedfc70 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDbPersistenceConfiguration.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDb5/RavenDbPersistenceConfiguration.cs @@ -31,9 +31,8 @@ public class RavenDbPersistenceConfiguration : IPersistenceConfiguration public IPersistence Create(PersistenceSettings settings) { var databaseConfiguration = GetDatabaseConfiguration(settings); - var databaseSetup = new DatabaseSetup(databaseConfiguration); - return new RavenDb5Persistence(databaseConfiguration, databaseSetup); + return new RavenDb5Persistence(databaseConfiguration); } internal static DatabaseConfiguration GetDatabaseConfiguration(PersistenceSettings settings)