Skip to content

Commit 211d97a

Browse files
committed
Write RavenDB client logs to filesystem and console and set GracefulShutdownTimeout, via hack to align this with Host ShutdownTimeout options
1 parent d10e163 commit 211d97a

File tree

5 files changed

+26
-2
lines changed

5 files changed

+26
-2
lines changed

src/ServiceControl.Audit/HostApplicationBuilderExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static void AddServiceControlAudit(this IHostApplicationBuilder builder,
4242
var transportCustomization = TransportFactory.Create(transportSettings);
4343
transportCustomization.AddTransportForAudit(services, transportSettings);
4444

45-
services.Configure<HostOptions>(options => options.ShutdownTimeout = TimeSpan.FromSeconds(30));
45+
services.Configure<HostOptions>(options => options.ShutdownTimeout = settings.ShutdownTimeout);
4646

4747
services.AddSingleton(settings);
4848
services.AddSingleton<EndpointInstanceMonitoring>();

src/ServiceControl.Audit/Infrastructure/Settings/Settings.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public Settings(string transportType = null, string persisterType = null, Loggin
5151
EnableFullTextSearchOnBodies = SettingsReader.Read(SettingsRootNamespace, "EnableFullTextSearchOnBodies", true);
5252

5353
AssemblyLoadContextResolver = static assemblyPath => new PluginAssemblyLoadContext(assemblyPath);
54+
ShutdownTimeout = SettingsReader.Read(SettingsRootNamespace, "ShutdownTimeout", ShutdownTimeout);
55+
Environment.SetEnvironmentVariable("ShutdownTimeout", ShutdownTimeout.ToString());
5456
}
5557

5658
void LoadAuditQueueInformation()
@@ -151,6 +153,8 @@ public int MaxBodySizeToStore
151153

152154
public bool EnableFullTextSearchOnBodies { get; set; }
153155

156+
public TimeSpan ShutdownTimeout { get; set; } = TimeSpan.FromMinutes(5);
157+
154158
public TransportSettings ToTransportSettings()
155159
{
156160
var transportSettings = new TransportSettings

src/ServiceControl.RavenDB/EmbeddedDatabase.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ namespace ServiceControl.RavenDB
1515
using Raven.Client.Documents.Conventions;
1616
using Raven.Client.ServerWide.Operations;
1717
using Raven.Embedded;
18+
using Sparrow.Logging;
1819

1920
public sealed class EmbeddedDatabase : IDisposable
2021
{
@@ -52,9 +53,24 @@ public static EmbeddedDatabase Start(EmbeddedDatabaseConfiguration databaseConfi
5253

5354
var nugetPackagesPath = Path.Combine(databaseConfiguration.DbPath, "Packages", "NuGet");
5455

56+
LoggingSource.Instance.SetupLogMode(
57+
(LogMode)255,
58+
Path.Combine(databaseConfiguration.LogPath, "client"),
59+
TimeSpan.FromDays(7),
60+
1024 * 1024 * 10,
61+
false
62+
);
63+
64+
LoggingSource.Instance.EnableConsoleLogging();
65+
66+
var gracefulShutdownTimeout = TimeSpan.Parse(Environment.GetEnvironmentVariable("ShutdownTimeout"));
67+
// Must be less to ensure teardown of child process completes
68+
gracefulShutdownTimeout -= TimeSpan.FromSeconds(5);
69+
5570
Logger.InfoFormat("Loading RavenDB license from {0}", licenseFileNameAndServerDirectory.LicenseFileName);
5671
var serverOptions = new ServerOptions
5772
{
73+
GracefulShutdownTimeout = gracefulShutdownTimeout,
5874
CommandLineArgs =
5975
[
6076
$"--Logs.Mode={databaseConfiguration.LogsMode}",

src/ServiceControl/HostApplicationBuilderExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public static void AddServiceControl(this IHostApplicationBuilder hostBuilder, S
5151
var transportCustomization = TransportFactory.Create(transportSettings);
5252
transportCustomization.AddTransportForPrimary(services, transportSettings);
5353

54-
services.Configure<HostOptions>(options => options.ShutdownTimeout = TimeSpan.FromSeconds(30));
54+
services.Configure<HostOptions>(options => options.ShutdownTimeout = settings.ShutdownTimeout);
5555
services.AddSingleton<IDomainEvents, DomainEvents>();
5656

5757
services.AddSingleton<MessageStreamerHub>();

src/ServiceControl/Infrastructure/Settings/Settings.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ public Settings(
6666
DisableExternalIntegrationsPublishing = SettingsReader.Read(SettingsRootNamespace, "DisableExternalIntegrationsPublishing", false);
6767
TrackInstancesInitialValue = SettingsReader.Read(SettingsRootNamespace, "TrackInstancesInitialValue", true);
6868
AssemblyLoadContextResolver = static assemblyPath => new PluginAssemblyLoadContext(assemblyPath);
69+
ShutdownTimeout = SettingsReader.Read(SettingsRootNamespace, "ShutdownTimeout", ShutdownTimeout);
70+
Environment.SetEnvironmentVariable("ShutdownTimeout", ShutdownTimeout.ToString());
6971
}
7072

7173
[JsonIgnore]
@@ -180,6 +182,8 @@ public TimeSpan HeartbeatGracePeriod
180182

181183
public bool DisableHealthChecks { get; set; }
182184

185+
public TimeSpan ShutdownTimeout { get; set; } = TimeSpan.FromMinutes(5);
186+
183187
public string GetConnectionString()
184188
{
185189
var settingsValue = SettingsReader.Read<string>(SettingsRootNamespace, "ConnectionString");

0 commit comments

Comments
 (0)