From 6ada975071f91fa0eb1d50e187017528c2fb60b8 Mon Sep 17 00:00:00 2001 From: Bart Koelman <104792814+bart-vmware@users.noreply.github.com> Date: Tue, 3 Mar 2026 12:09:58 +0100 Subject: [PATCH 1/2] Fix broken documentation in Steeltoe 4.x --- .../Configuration/ConfigurationServiceCollectionExtensions.cs | 4 ++-- .../Endpoint/Actuators/Health/Availability/LivenessState.cs | 3 ++- .../Endpoint/Actuators/Health/Availability/ReadinessState.cs | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Discovery/src/Configuration/ConfigurationServiceCollectionExtensions.cs b/src/Discovery/src/Configuration/ConfigurationServiceCollectionExtensions.cs index 652c368278..e2692969e7 100644 --- a/src/Discovery/src/Configuration/ConfigurationServiceCollectionExtensions.cs +++ b/src/Discovery/src/Configuration/ConfigurationServiceCollectionExtensions.cs @@ -18,7 +18,7 @@ public static class ConfigurationServiceCollectionExtensions /// Build your list of service instances under the configuration prefix discovery:services. /// /// Example configuration in appsettings.json: - /// + /// ]]> /// /// /// diff --git a/src/Management/src/Endpoint/Actuators/Health/Availability/LivenessState.cs b/src/Management/src/Endpoint/Actuators/Health/Availability/LivenessState.cs index e19bbbb7eb..e0e609983d 100644 --- a/src/Management/src/Endpoint/Actuators/Health/Availability/LivenessState.cs +++ b/src/Management/src/Endpoint/Actuators/Health/Availability/LivenessState.cs @@ -6,9 +6,10 @@ namespace Steeltoe.Management.Endpoint.Actuators.Health.Availability; /// /// "Liveness" state of the application. -/// +/// /// An application is considered live when it's running with a correct internal state. "Liveness" failure means that the internal state of the /// application is broken, and we cannot recover from it. As a result, the platform should restart the application. +/// /// public sealed class LivenessState : AvailabilityState { diff --git a/src/Management/src/Endpoint/Actuators/Health/Availability/ReadinessState.cs b/src/Management/src/Endpoint/Actuators/Health/Availability/ReadinessState.cs index b4371f9898..4169a69ae7 100644 --- a/src/Management/src/Endpoint/Actuators/Health/Availability/ReadinessState.cs +++ b/src/Management/src/Endpoint/Actuators/Health/Availability/ReadinessState.cs @@ -6,9 +6,10 @@ namespace Steeltoe.Management.Endpoint.Actuators.Health.Availability; /// /// The Readiness state of the application. -/// +/// /// An application is considered ready when it's and willing to accept traffic. "Readiness" failure means that the /// application is not able to accept traffic and that the infrastructure should not route requests to it. +/// /// public sealed class ReadinessState : AvailabilityState { From 97a84e4eca56f8c8be5c473e6216d5b3ff20f779 Mon Sep 17 00:00:00 2001 From: Bart Koelman <104792814+bart-vmware@users.noreply.github.com> Date: Tue, 3 Mar 2026 12:53:06 +0100 Subject: [PATCH 2/2] Fix broken build (this branch uses an old Sonar version) --- .../src/Abstractions/CompositeConfigurationProvider.cs | 7 +++---- .../Connectors/DynamicTypeAccess/ConnectorFactoryShim.cs | 2 +- .../src/Connectors/DynamicTypeAccess/ConnectorShim.cs | 2 +- src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs | 7 ++++++- .../Actuators/RouteMappings/AspNetEndpointProvider.cs | 2 +- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Configuration/src/Abstractions/CompositeConfigurationProvider.cs b/src/Configuration/src/Abstractions/CompositeConfigurationProvider.cs index b9523cf738..2dc24eb071 100644 --- a/src/Configuration/src/Abstractions/CompositeConfigurationProvider.cs +++ b/src/Configuration/src/Abstractions/CompositeConfigurationProvider.cs @@ -97,10 +97,9 @@ public void Set(string key, string? value) LogSet(GetType().Name, key, value); - if (ConfigurationRoot != null) - { - ConfigurationRoot[key] = value; - } +#pragma warning disable S1121 // Assignments should not be made from within sub-expressions + ConfigurationRoot?[key] = value; +#pragma warning restore S1121 // Assignments should not be made from within sub-expressions } public void Dispose() diff --git a/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorFactoryShim.cs b/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorFactoryShim.cs index 4ad4609884..51d468747d 100644 --- a/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorFactoryShim.cs +++ b/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorFactoryShim.cs @@ -60,7 +60,7 @@ private static TypeAccessor MakeGenericTypeAccessor(Type connectionType) public ConnectorShim Get(string serviceBindingName) { - object instance = InstanceAccessor.InvokeMethodOverload(nameof(ConnectorFactory.Get), true, [typeof(string)], serviceBindingName)!; + object instance = InstanceAccessor.InvokeMethodOverload(nameof(ConnectorFactory<,>.Get), true, [typeof(string)], serviceBindingName)!; return new ConnectorShim(_connectionType, instance); } diff --git a/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorShim.cs b/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorShim.cs index ff13dba205..e3479f0232 100644 --- a/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorShim.cs +++ b/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorShim.cs @@ -25,7 +25,7 @@ private static InstanceAccessor CreateAccessor(Type connectionType, object insta public object GetConnection() { - return InstanceAccessor.InvokeMethod(nameof(Connector.GetConnection), true)!; + return InstanceAccessor.InvokeMethod(nameof(Connector<,>.GetConnection), true)!; } public void Dispose() diff --git a/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs b/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs index 8417407d59..df11be4347 100644 --- a/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs +++ b/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs @@ -17,7 +17,7 @@ public sealed class ApplicationInfo private readonly ConcurrentDictionary _instanceMap = new(); public string Name { get; } - public IReadOnlyList Instances => new List(_instanceMap.Values); + public IReadOnlyList Instances => GetInstancesSnapshot(); internal ApplicationInfo(string name) : this(name, Array.Empty()) @@ -38,6 +38,11 @@ internal ApplicationInfo(string name, ICollection instances) } } + private List GetInstancesSnapshot() + { + return [.. _instanceMap.Values]; + } + internal InstanceInfo? GetInstance(string instanceId) { ArgumentException.ThrowIfNullOrWhiteSpace(instanceId); diff --git a/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs b/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs index 70f810c77f..39c995b7a9 100644 --- a/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs +++ b/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs @@ -167,7 +167,7 @@ private static IEnumerable FromActuatorEndpoint(RouteEndpoint en if (endpointOptions != null) { string displayName = endpoint.DisplayName ?? string.Empty; - MethodInfo handlerMethod = typeof(EndpointMiddleware<,>).GetMethod(nameof(EndpointMiddleware.InvokeAsync))!; + MethodInfo handlerMethod = typeof(EndpointMiddleware<,>).GetMethod(nameof(EndpointMiddleware<,>.InvokeAsync))!; var metadataProvider = endpoint.Metadata.GetMetadata()!; foreach (string httpMethod in endpointOptions.GetSafeAllowedVerbs())