From 2cfd2381a93e44cfa92b8a2b4c5f4ce09e6d6eb5 Mon Sep 17 00:00:00 2001 From: "Jeremy D. Miller" Date: Tue, 2 Jun 2026 18:42:43 -0500 Subject: [PATCH] Drop HttpChainDescriptor pipeline-introspection fields; bump JasperFx 2.8.0 + Marten 9.4.0 (GH-3008) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Producer side of the JasperFx descriptor cleanup (jasperfx#411). That removal of HttpChainDescriptor.Middleware / ServiceDependencies / Postprocessors (plus MiddlewareStepDescriptor) only shipped in JasperFx 2.8.0, so this is a coordinated critter-stack bump: - JasperFx family 2.4.1 -> 2.8.0 (RuntimeCompiler stays on 5.x) - Marten family 9.2.0 -> 9.4.0 (its JasperFx floor moved to 2.5.0; keeps the runtime gap to 2.8.0 small) - Weasel.* 9.0.1 -> 9.0.2 (required by Marten 9.4.0) - Polecat stays 4.2.1 (floor 2.2.0, satisfied by 2.8.0) In HttpGraphUsageSource: stop populating the three descriptor fields and delete the now-dead describeFrames / readServiceDependencies helpers (and the now-unused buildChainDescriptor services parameter). The CritterWatch Pipeline tab moves to the existing RequestHandlerSourceCode lazy fetch, which returns the actual compiled pipeline — no operator-facing information lost. Validated: full wolverine.slnx Release build clean (net9.0 + net10.0); CoreTests 1735, MartenTests 461, Wolverine.Http.Tests 777, PolecatTests 216 — all green. Co-Authored-By: Claude Opus 4.8 (1M context) --- Directory.Packages.props | 28 ++++----- .../Diagnostics/HttpGraphUsageSource.cs | 62 ++----------------- 2 files changed, 20 insertions(+), 70 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index fccc662ba..182016b44 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -32,19 +32,19 @@ - - - + + + - - + + - - + + @@ -114,13 +114,13 @@ - - - - - - - + + + + + + + diff --git a/src/Http/Wolverine.Http/Diagnostics/HttpGraphUsageSource.cs b/src/Http/Wolverine.Http/Diagnostics/HttpGraphUsageSource.cs index 11157c004..107198976 100644 --- a/src/Http/Wolverine.Http/Diagnostics/HttpGraphUsageSource.cs +++ b/src/Http/Wolverine.Http/Diagnostics/HttpGraphUsageSource.cs @@ -1,7 +1,6 @@ using System.Security.Cryptography; using System.Text; using JasperFx; -using JasperFx.CodeGeneration.Frames; using JasperFx.Core; using JasperFx.Core.Reflection; using JasperFx.Descriptors; @@ -101,7 +100,7 @@ public HttpGraphUsageSource(WolverineHttpOptions options, WolverineOptions wolve foreach (var group in collapsed.OrderBy(g => g.Key.RawText)) { var primary = group.First(); - var descriptor = buildChainDescriptor(primary, group.ToArray(), apiDescriptions, services); + var descriptor = buildChainDescriptor(primary, group.ToArray(), apiDescriptions); usage.Chains.Add(descriptor); } @@ -131,8 +130,7 @@ private static List collectTenantStrategies(WolverineHttpOptions options private HttpChainDescriptor buildChainDescriptor( HttpChain chain, HttpChain[] versionGroup, - IApiDescriptionGroupCollectionProvider? apiDescriptions, - IServiceProvider services) + IApiDescriptionGroupCollectionProvider? apiDescriptions) { var route = chain.RoutePattern!.RawText ?? string.Empty; var methods = chain.HttpMethods.ToList(); @@ -184,11 +182,10 @@ private HttpChainDescriptor buildChainDescriptor( .ToArray(); descriptor.CascadingMessageTypes = cascading.Select(TypeDescriptor.For).ToList(); - // Service dependencies — surface what the chain resolves at runtime. - descriptor.ServiceDependencies = readServiceDependencies(chain, services); - - descriptor.Middleware = describeFrames(chain.Middleware, "Middleware"); - descriptor.Postprocessors = describeFrames(chain.Postprocessors, "Postprocessor"); + // Pipeline-introspection fields (Middleware / Postprocessors / ServiceDependencies) are no + // longer populated (GH-3008 / jasperfx#411) — they were removed from HttpChainDescriptor. The + // CritterWatch Pipeline tab now points at the RequestHandlerSourceCode lazy fetch, which + // returns the actual compiled pipeline, so no operator-facing information is lost. // API version info. When versionGroup has >1 entries, this is a // collapsed multi-version chain; collect every version + sunset. @@ -203,53 +200,6 @@ private HttpChainDescriptor buildChainDescriptor( return descriptor; } - private List readServiceDependencies(HttpChain chain, IServiceProvider services) - { - try - { - var container = services.GetService(); - if (container is null) return new List(); - - return chain - .ServiceDependencies(container, Type.EmptyTypes) - .Where(t => t != typeof(IServiceProvider)) - .Distinct() - .Select(TypeDescriptor.For) - .ToList(); - } - catch - { - return new List(); - } - } - - private static List describeFrames(IEnumerable frames, string kind) - { - var list = new List(); - foreach (var frame in frames) - { - var step = new MiddlewareStepDescriptor - { - Kind = kind, - Description = frame.ToString() ?? frame.GetType().FullNameInCode() - }; - - if (frame is MethodCall call) - { - step.TypeFullName = call.HandlerType.FullNameInCode(); - step.MethodName = call.Method.Name; - } - else - { - step.TypeFullName = frame.GetType().FullNameInCode(); - } - - list.Add(step); - } - - return list; - } - private static ApiVersionDescriptor? buildApiVersionDescriptor(HttpChain chain, HttpChain[] versionGroup) { if (chain.IsApiVersionNeutral)