fix: address MonitorServer review — dispose resources, add cancellation, improve test reliability

This commit is contained in:
Joseph Doherty
2026-02-22 22:30:14 -05:00
parent 63198ef83b
commit 818bc0ba1f
3 changed files with 27 additions and 10 deletions

View File

@@ -13,6 +13,7 @@ public sealed class MonitorServer : IAsyncDisposable
{
private readonly WebApplication _app;
private readonly ILogger<MonitorServer> _logger;
private readonly VarzHandler _varzHandler;
public MonitorServer(NatsServer server, NatsOptions options, ServerStats stats, ILoggerFactory loggerFactory)
{
@@ -25,7 +26,7 @@ public sealed class MonitorServer : IAsyncDisposable
_app = builder.Build();
var basePath = options.MonitorBasePath ?? "";
var varzHandler = new VarzHandler(server, options);
_varzHandler = new VarzHandler(server, options);
_app.MapGet(basePath + "/", () =>
{
@@ -44,10 +45,10 @@ public sealed class MonitorServer : IAsyncDisposable
stats.HttpReqStats.AddOrUpdate("/healthz", 1, (_, v) => v + 1);
return Results.Ok("ok");
});
_app.MapGet(basePath + "/varz", async () =>
_app.MapGet(basePath + "/varz", async (HttpContext ctx) =>
{
stats.HttpReqStats.AddOrUpdate("/varz", 1, (_, v) => v + 1);
return Results.Ok(await varzHandler.HandleVarzAsync());
return Results.Ok(await _varzHandler.HandleVarzAsync(ctx.RequestAborted));
});
// Stubs for unimplemented endpoints
@@ -106,6 +107,8 @@ public sealed class MonitorServer : IAsyncDisposable
public async ValueTask DisposeAsync()
{
await _app.StopAsync();
await _app.DisposeAsync();
_varzHandler.Dispose();
}
}