From 33f3528c13ec5e427fb8c3df88ef06d22dad268c Mon Sep 17 00:00:00 2001 From: Ramon Smits Date: Thu, 12 Oct 2023 10:54:39 +0200 Subject: [PATCH] Audit storage size numbers were incorrect. Ported storage size startup reporting behavior from primary instance to audit instance. --- .../EmbeddedDatabase.cs | 72 +++++++++++++++++++ ...eControl.Audit.Persistence.RavenDb5.csproj | 1 + .../Infrastructure/Bootstrapper.cs | 66 +---------------- 3 files changed, 74 insertions(+), 65 deletions(-) diff --git a/src/ServiceControl.Audit.Persistence.RavenDb5/EmbeddedDatabase.cs b/src/ServiceControl.Audit.Persistence.RavenDb5/EmbeddedDatabase.cs index a98d0dfadd..8565b0e66f 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDb5/EmbeddedDatabase.cs +++ b/src/ServiceControl.Audit.Persistence.RavenDb5/EmbeddedDatabase.cs @@ -3,9 +3,11 @@ using System; using System.Collections.Generic; using System.Diagnostics; + using System.Globalization; using System.IO; using System.Threading; using System.Threading.Tasks; + using ByteSizeLib; using NServiceBus.Logging; using Raven.Client.Documents; using Raven.Client.Documents.Conventions; @@ -122,6 +124,8 @@ void Start(ServerOptions serverOptions) } } }); + + RecordStartup(); } public async Task Connect(CancellationToken cancellationToken) @@ -153,6 +157,74 @@ public void Dispose() EmbeddedServer.Instance?.Dispose(); } + void RecordStartup() + { + var dataSize = DataSize(); + var folderSize = FolderSize(configuration.ServerConfiguration.DbPath); + + var startupMessage = $@" +------------------------------------------------------------- +Database Size: {ByteSize.FromBytes(dataSize).ToString("#.##", CultureInfo.InvariantCulture)} +Database Folder Size: {ByteSize.FromBytes(folderSize).ToString("#.##", CultureInfo.InvariantCulture)} +-------------------------------------------------------------"; + + logger.Info(startupMessage); + } + + long DataSize() + { + var datafilePath = Path.Combine(configuration.ServerConfiguration.DbPath, "Databases", configuration.Name, "Raven.voron"); + + try + { + var info = new FileInfo(datafilePath); + if (!info.Exists) + { + return -1; + } + return info.Length; + } + catch + { + return -1; + } + } + + long FolderSize(string path) + { + try + { + var dir = new DirectoryInfo(path); + var dirSize = DirSize(dir); + return dirSize; + } + catch + { + return -1; + } + } + + static long DirSize(DirectoryInfo d) + { + long size = 0; + if (d.Exists) + { + FileInfo[] fis = d.GetFiles(); + foreach (FileInfo fi in fis) + { + size += fi.Length; + } + + DirectoryInfo[] dis = d.GetDirectories(); + foreach (DirectoryInfo di in dis) + { + size += DirSize(di); + } + } + + return size; + } + CancellationTokenSource shutdownTokenSource = new CancellationTokenSource(); bool restartRequired; readonly DatabaseConfiguration configuration; diff --git a/src/ServiceControl.Audit.Persistence.RavenDb5/ServiceControl.Audit.Persistence.RavenDb5.csproj b/src/ServiceControl.Audit.Persistence.RavenDb5/ServiceControl.Audit.Persistence.RavenDb5.csproj index 49a6fd1886..1eea948003 100644 --- a/src/ServiceControl.Audit.Persistence.RavenDb5/ServiceControl.Audit.Persistence.RavenDb5.csproj +++ b/src/ServiceControl.Audit.Persistence.RavenDb5/ServiceControl.Audit.Persistence.RavenDb5.csproj @@ -9,6 +9,7 @@ + diff --git a/src/ServiceControl.Audit/Infrastructure/Bootstrapper.cs b/src/ServiceControl.Audit/Infrastructure/Bootstrapper.cs index ad21199d6d..0b6213e42b 100644 --- a/src/ServiceControl.Audit/Infrastructure/Bootstrapper.cs +++ b/src/ServiceControl.Audit/Infrastructure/Bootstrapper.cs @@ -2,11 +2,8 @@ namespace ServiceControl.Audit.Infrastructure { using System; using System.Diagnostics; - using System.Globalization; - using System.IO; using System.Net; using Auditing; - using ByteSizeLib; using Metrics; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -109,76 +106,15 @@ static TransportSettings MapSettings(Settings.Settings settings) return transportSettings; } - long DataSize(string dbPath) - { - if (string.IsNullOrEmpty(dbPath)) - { - return 0; - } - - var datafilePath = Path.Combine(dbPath, "data"); - - try - { - var info = new FileInfo(datafilePath); - - return info.Length; - } - catch (Exception) - { - return 0; - } - } - - long FolderSize(string dbPath) - { - if (string.IsNullOrEmpty(dbPath)) - { - return 0; - } - - try - { - var dir = new DirectoryInfo(dbPath); - var dirSize = DirSize(dir); - return dirSize; - } - catch - { - return -1; - } - } - - static long DirSize(DirectoryInfo d) - { - long size = 0; - FileInfo[] fis = d.GetFiles(); - foreach (FileInfo fi in fis) - { - size += fi.Length; - } - DirectoryInfo[] dis = d.GetDirectories(); - foreach (DirectoryInfo di in dis) - { - size += DirSize(di); - } - return size; - } - void RecordStartup(LoggingSettings loggingSettings, EndpointConfiguration endpointConfiguration, IPersistenceConfiguration persistenceConfiguration) { var version = FileVersionInfo.GetVersionInfo(typeof(Bootstrapper).Assembly.Location).ProductVersion; - var dbPath = SettingsReader.Read("DbPath", null); - var dataSize = DataSize(dbPath); - var folderSize = FolderSize(dbPath); var startupMessage = $@" ------------------------------------------------------------- ServiceControl Audit Version: {version} Audit Retention Period: {settings.AuditRetentionPeriod} Forwarding Audit Messages: {settings.ForwardAuditMessages} -Database Size: {ByteSize.FromBytes(dataSize).ToString("#.##", CultureInfo.InvariantCulture)} -Database Folder Size: {ByteSize.FromBytes(folderSize).ToString("#.##", CultureInfo.InvariantCulture)} ServiceControl Logging Level: {loggingSettings.LoggingLevel} RavenDB Logging Level: {loggingSettings.RavenDBLogLevel} Transport Customization: {settings.TransportType}, @@ -202,4 +138,4 @@ void RecordStartup(LoggingSettings loggingSettings, EndpointConfiguration endpoi TransportSettings transportSettings; TransportCustomization transportCustomization; } -} +} \ No newline at end of file