feat: add reload semantics for cluster and jetstream options

This commit is contained in:
Joseph Doherty
2026-02-23 06:23:34 -05:00
parent 2aa7265db1
commit 6c83f12e5c
3 changed files with 120 additions and 1 deletions

View File

@@ -1025,10 +1025,22 @@ public sealed class NatsServer : IMessageRouter, ISubListAccess, IDisposable
/// the changes, and applies reloadable settings. CLI overrides are preserved.
/// </summary>
public void ReloadConfig()
{
ReloadConfigCore(throwOnError: false);
}
public void ReloadConfigOrThrow()
{
ReloadConfigCore(throwOnError: true);
}
private void ReloadConfigCore(bool throwOnError)
{
if (_options.ConfigFile == null)
{
_logger.LogWarning("No config file specified, cannot reload");
if (throwOnError)
throw new InvalidOperationException("No config file specified.");
return;
}
@@ -1054,6 +1066,8 @@ public sealed class NatsServer : IMessageRouter, ISubListAccess, IDisposable
{
foreach (var err in errors)
_logger.LogError("Config reload error: {Error}", err);
if (throwOnError)
throw new InvalidOperationException(string.Join("; ", errors));
return;
}
@@ -1065,6 +1079,8 @@ public sealed class NatsServer : IMessageRouter, ISubListAccess, IDisposable
catch (Exception ex)
{
_logger.LogError(ex, "Failed to reload config file: {ConfigFile}", _options.ConfigFile);
if (throwOnError)
throw;
}
}