From 06f97c16890101095b83ca680659a7f1a8aa976b Mon Sep 17 00:00:00 2001 From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com> Date: Wed, 14 Aug 2024 10:47:54 +0200 Subject: [PATCH 01/10] initial commit --- .../IResourceUtilizationPublisher.cs | 2 ++ .../ResourceMonitorBuilder.cs | 2 ++ .../ResourceMonitorService.cs | 6 ++++++ .../ResourceUtilizationInstruments.cs | 3 --- .../Linux/AcceptanceTest.cs | 4 ++++ .../Linux/Resources/GenericPublisher.cs | 1 + .../Publishers/AnotherPublisher.cs | 2 ++ .../Publishers/EmptyPublisher.cs | 4 +++- .../Publishers/FaultPublisher.cs | 1 + .../Publishers/GenericPublisher.cs | 1 + .../ResourceMonitoringBuilderTests.cs | 1 + .../ResourceMonitoringExtensionsTests.cs | 1 + .../ResourceMonitoringServiceTests.cs | 7 ++++--- .../Resilience/RequestMessageSnapshotTests.cs | 1 - 14 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs index 5476fcdad05..c8fead4616e 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System; using System.Threading; using System.Threading.Tasks; @@ -9,6 +10,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; /// /// Defines the contract for a resource utilization publisher that gets invoked whenever resource utilization is computed. /// +[Obsolete("This interface is obsolete. Instead, use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")] public interface IResourceUtilizationPublisher { /// diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs index 4f9f5c9284f..d8d7303dbe4 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System; using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -21,6 +22,7 @@ public ResourceMonitorBuilder(IServiceCollection services) Services = services; } + [Obsolete("This method is obsolete. Instead, use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")] public IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>() where T : class, IResourceUtilizationPublisher { diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs index cafb216e993..52bb94d44e6 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs @@ -29,10 +29,12 @@ internal sealed class ResourceMonitorService : BackgroundService, IResourceMonit /// private readonly ISnapshotProvider _provider; +#pragma warning disable CS0618 // Type or member is obsolete /// /// The publishers to use with the data we are tracking. /// private readonly IResourceUtilizationPublisher[] _publishers; +#pragma warning restore CS0618 // Type or member is obsolete /// /// Logger to be used in this class. @@ -55,7 +57,9 @@ public ResourceMonitorService( ISnapshotProvider provider, ILogger logger, IOptions options, +#pragma warning disable CS0618 // Type or member is obsolete IEnumerable publishers) +#pragma warning restore CS0618 // Type or member is obsolete : this(provider, logger, options, publishers, TimeProvider.System) { } @@ -64,7 +68,9 @@ internal ResourceMonitorService( ISnapshotProvider provider, ILogger logger, IOptions options, +#pragma warning disable CS0618 // Type or member is obsolete IEnumerable publishers, +#pragma warning restore CS0618 // Type or member is obsolete TimeProvider timeProvider) { _provider = provider; diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs index aa3fd012029..d1f1385f20c 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs @@ -8,9 +8,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; /// /// Represents the names of instruments published by this package. /// -/// -/// These metrics are currently only published on Linux. -/// /// internal static class ResourceUtilizationInstruments { diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs index 5611ad8ec00..7536a7c9f15 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs @@ -229,7 +229,9 @@ public Task ResourceUtilizationTracker_And_Metrics_Report_Same_Values_With_Cgrou .AddSingleton(clock) .AddSingleton(new FakeUserHz(100)) .AddSingleton(fileSystem) +#pragma warning disable CS0618 // Type or member is obsolete .AddSingleton(new GenericPublisher(_ => e.Set())) +#pragma warning restore CS0618 // Type or member is obsolete .AddResourceMonitoring()) .Build(); @@ -312,7 +314,9 @@ public Task ResourceUtilizationTracker_And_Metrics_Report_Same_Values_With_Cgrou .AddSingleton(clock) .AddSingleton(new FakeUserHz(100)) .AddSingleton(fileSystem) +#pragma warning disable CS0618 // Type or member is obsolete .AddSingleton(new GenericPublisher(_ => e.Set())) +#pragma warning restore CS0618 // Type or member is obsolete .AddResourceMonitoring() .Replace(ServiceDescriptor.Singleton())) .Build(); diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs index 1bb73a44d03..ec179e4c845 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs @@ -10,6 +10,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Linux.Test; /// /// A publisher that accept in its constructor. /// +[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")] internal sealed class GenericPublisher : IResourceUtilizationPublisher { private readonly Action _publish; diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs index a0f2805dc5f..f37b72c78df 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System; using System.Threading; using System.Threading.Tasks; @@ -9,6 +10,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers; /// /// Another publisher that do nothing, added to test scenarios where multiple publishers are added to the services collections. /// +[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")] internal sealed class AnotherPublisher : IResourceUtilizationPublisher { /// diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs index 85c03212ee6..5c5082d9f60 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs @@ -1,14 +1,16 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System; using System.Threading; using System.Threading.Tasks; namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers; /// -/// A publisher that do nothing. +/// A publisher that does nothing. /// +[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")] internal sealed class EmptyPublisher : IResourceUtilizationPublisher { /// diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs index 7a7e6502c32..1292788f738 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs @@ -10,6 +10,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers; /// /// A publisher that throws an error. /// +[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")] internal sealed class FaultPublisher : IResourceUtilizationPublisher { /// diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs index 6d9e716fc7f..220b06221d9 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs @@ -10,6 +10,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers; /// /// A publisher that accept in its constructor. /// +[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")] internal sealed class GenericPublisher : IResourceUtilizationPublisher { private readonly Action _publish; diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs index 4247b390711..f0808e35ef0 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs @@ -8,6 +8,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test; +#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage. public sealed class ResourceMonitoringBuilderTests { [Fact] diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs index 447c9d4c827..428847403e0 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs @@ -15,6 +15,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test; +#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage. public sealed class ResourceMonitoringExtensionsTests { [Fact] diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs index 6de754a2366..f6c67d273c4 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs @@ -21,6 +21,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test; /// /// Tests for the DataTracker class. /// +#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage. public sealed class ResourceMonitoringServiceTests { private const string ProviderUnableToGatherData = "Unable to gather utilization statistics."; @@ -32,7 +33,7 @@ public sealed class ResourceMonitoringServiceTests /// /// Simply construct the object. /// - /// Tests that look into internals like this are evil. Consider removing long term. + /// Tests that look into internals like this are evil. Consider removing long term. [Fact] public void BasicConstructor() { @@ -75,7 +76,7 @@ public void BasicConstructor_NullOptions_Throws() /// /// Simply construct the object (publisher constructor). /// - /// Tests that look into internals like this are evil. Consider removing long term. + /// Tests that look into internals like this are evil. Consider removing long term. [Fact] public void BasicConstructor_NullPublishers_Throws() { @@ -293,7 +294,7 @@ public async Task RunTrackerAsync_IfPublisherThrows_LogsError() /// /// Validate that the tracker invokes the publisher's Publish method. /// - /// Tests that look into internals like this are evil. Consider removing long term. + /// Tests that look into internals like this are evil. Consider removing long term. [Fact] public async Task ResourceUtilizationTracker_InitializedProperly_InvokesPublishers() { diff --git a/test/Libraries/Microsoft.Extensions.Http.Resilience.Tests/Resilience/RequestMessageSnapshotTests.cs b/test/Libraries/Microsoft.Extensions.Http.Resilience.Tests/Resilience/RequestMessageSnapshotTests.cs index 4a5214f2a40..742822f73e7 100644 --- a/test/Libraries/Microsoft.Extensions.Http.Resilience.Tests/Resilience/RequestMessageSnapshotTests.cs +++ b/test/Libraries/Microsoft.Extensions.Http.Resilience.Tests/Resilience/RequestMessageSnapshotTests.cs @@ -11,7 +11,6 @@ namespace Microsoft.Extensions.Http.Resilience.Test.Resilience; -#pragma warning disable CS0618 // Type or member is obsolete #pragma warning disable CS0618 // Type or member is obsolete public class RequestMessageSnapshotTests From 179e064fadcb6b74f18258cfbad4b713af610dd5 Mon Sep 17 00:00:00 2001 From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com> Date: Wed, 14 Aug 2024 10:48:05 +0200 Subject: [PATCH 02/10] remove unnecessary suppression --- .../Windows/Log.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Log.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Log.cs index 9be79e1851b..78c19524f75 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Log.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Log.cs @@ -6,7 +6,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Windows; #pragma warning disable S109 -#pragma warning disable IDE0060 // Remove unused parameters - Reason: used by source generator. internal static partial class Log { From 8b898b24ae652c1309c1da6ae8a4f94e0b474da4 Mon Sep 17 00:00:00 2001 From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com> Date: Wed, 14 Aug 2024 11:46:51 +0200 Subject: [PATCH 03/10] update --- .../IResourceMonitorBuilder.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs index 4890ea1bd1a..2f1a0b6d366 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System; using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.DependencyInjection; @@ -21,6 +22,7 @@ public interface IResourceMonitorBuilder /// /// The publisher's implementation type. /// The value of the object instance. + [Obsolete("This method is obsolete. Instead of IResourceUtilizationPublisher use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")] IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>() where T : class, IResourceUtilizationPublisher; } From ed4fcd1227cea81a4baa6a9c365da166f05fcce4 Mon Sep 17 00:00:00 2001 From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com> Date: Thu, 22 Aug 2024 12:59:59 +0200 Subject: [PATCH 04/10] Deprecate the API using the new diagnostic ID --- Directory.Build.targets | 3 ++ docs/list-of-diagnostics.md | 10 +++++ eng/MSBuild/LegacySupport.props | 4 ++ .../ObsoleteAttribute/ObsoleteAttribute.cs | 45 +++++++++++++++++++ src/LegacySupport/ObsoleteAttribute/README.md | 7 +++ .../IResourceMonitorBuilder.cs | 8 +++- .../IResourceUtilizationPublisher.cs | 8 +++- ...ions.Diagnostics.ResourceMonitoring.csproj | 1 + .../ResourceMonitorBuilder.cs | 8 +++- .../ResourceMonitorService.cs | 6 --- src/Shared/DiagnosticIds/DiagnosticIds.cs | 5 +++ .../Linux/AcceptanceTest.cs | 2 - .../Linux/Resources/GenericPublisher.cs | 1 - .../Publishers/AnotherPublisher.cs | 2 - .../Publishers/EmptyPublisher.cs | 2 - .../Publishers/FaultPublisher.cs | 1 - .../Publishers/GenericPublisher.cs | 1 - .../ResourceMonitoringBuilderTests.cs | 1 - .../ResourceMonitoringExtensionsTests.cs | 1 - .../ResourceMonitoringServiceTests.cs | 1 - 20 files changed, 96 insertions(+), 21 deletions(-) create mode 100644 src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs create mode 100644 src/LegacySupport/ObsoleteAttribute/README.md diff --git a/Directory.Build.targets b/Directory.Build.targets index bcf3171ca0d..cd5fab65acb 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -22,6 +22,9 @@ $(NoWarn);EXTEXP0001;EXTEXP0002;EXTEXP0003;EXTEXP0004;EXTEXP0005;EXTEXP0006;EXTEXP0007;EXTEXP0008;EXTEXP0009;EXTEXP0010;EXTEXP0011;EXTEXP0012;EXTEXP0013;EXTEXP0014;EXTEXP0015;EXTEXP0016;EXTEXP0017 + + $(NoWarn);EXTOBS0001; + $(NoWarn);NU5104 diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md index f540a808699..778625a8d64 100644 --- a/docs/list-of-diagnostics.md +++ b/docs/list-of-diagnostics.md @@ -41,6 +41,16 @@ if desired. | `EXTEXP0016` | Hosting integration testing experiments | | `EXTEXP0017` | Contextual options experiments | +# Obsoletions + +At some point in its lifecycle APIs become obsolete. If you use obsolete APIs, you will get one of the diagnostic shown below. + +You may continue using obsolete APIs in your application, but we advise exploring proposed alternatives which you will find in the obsoletion message. + +| Diagnostic ID | Description | +| :---------------- | :---------- | +| `EXTOBS0001` | Resource monitoring obsoletions | + # LoggerMessage | Diagnostic ID | Description | diff --git a/eng/MSBuild/LegacySupport.props b/eng/MSBuild/LegacySupport.props index 11e7aa6c0f5..c96a83d34d6 100644 --- a/eng/MSBuild/LegacySupport.props +++ b/eng/MSBuild/LegacySupport.props @@ -50,4 +50,8 @@ + + + + diff --git a/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs b/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs new file mode 100644 index 00000000000..573222e6d3e --- /dev/null +++ b/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs @@ -0,0 +1,45 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +#if !NET5_0_OR_GREATER + +using System.Diagnostics.CodeAnalysis; + +namespace System; + +/// +/// Marks program elements that are no longer in use. +/// +[ExcludeFromCodeCoverage] +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | + AttributeTargets.Interface | AttributeTargets.Constructor | AttributeTargets.Method | + AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | + AttributeTargets.Delegate, + Inherited = false)] +internal sealed class ObsoleteAttribute : Attribute +{ + public ObsoleteAttribute() + { + } + + public ObsoleteAttribute(string? message) + { + Message = message; + } + + public ObsoleteAttribute(string? message, bool error) + { + Message = message; + IsError = error; + } + + public string? Message { get; } + + public bool IsError { get; } + + public string? DiagnosticId { get; set; } + + public string? UrlFormat { get; set; } +} + +#endif diff --git a/src/LegacySupport/ObsoleteAttribute/README.md b/src/LegacySupport/ObsoleteAttribute/README.md new file mode 100644 index 00000000000..f667dfcf1e7 --- /dev/null +++ b/src/LegacySupport/ObsoleteAttribute/README.md @@ -0,0 +1,7 @@ +To use this source in your project, add the following to your `.csproj` file: + +```xml + + true + +``` diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs index 2f1a0b6d366..01cb3fd3505 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs @@ -4,6 +4,7 @@ using System; using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Shared.DiagnosticIds; namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; @@ -22,7 +23,12 @@ public interface IResourceMonitorBuilder /// /// The publisher's implementation type. /// The value of the object instance. - [Obsolete("This method is obsolete. Instead of IResourceUtilizationPublisher use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")] +#if !NET5_0_OR_GREATER +#pragma warning disable CS0436 // Type conflicts with imported type +#endif + [Obsolete("This method is obsolete and will be removed in a future version. Consider using observable instruments.", + DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring, + UrlFormat = DiagnosticIds.UrlFormat)] IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>() where T : class, IResourceUtilizationPublisher; } diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs index c8fead4616e..3990c714707 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs @@ -4,13 +4,19 @@ using System; using System.Threading; using System.Threading.Tasks; +using Microsoft.Shared.DiagnosticIds; namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; /// /// Defines the contract for a resource utilization publisher that gets invoked whenever resource utilization is computed. /// -[Obsolete("This interface is obsolete. Instead, use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")] +#if !NET5_0_OR_GREATER +#pragma warning disable CS0436 // Type conflicts with imported type +#endif +[Obsolete("This API is obsolete and will be removed in a future version. Consider using observable instruments.", + DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring, + UrlFormat = DiagnosticIds.UrlFormat)] public interface IResourceUtilizationPublisher { /// diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj index beffa2e9ac8..c71fddc3a5c 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj @@ -12,6 +12,7 @@ true true true + true true true diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs index d8d7303dbe4..c64828b73f2 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs @@ -6,6 +6,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; +using Microsoft.Shared.DiagnosticIds; namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; @@ -22,7 +23,12 @@ public ResourceMonitorBuilder(IServiceCollection services) Services = services; } - [Obsolete("This method is obsolete. Instead, use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")] +#if !NET5_0_OR_GREATER +#pragma warning disable CS0436 // Type conflicts with imported type +#endif + [Obsolete("This API is obsolete and will be removed in a future version. Consider using observable instruments.", + DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring, + UrlFormat = DiagnosticIds.UrlFormat)] public IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>() where T : class, IResourceUtilizationPublisher { diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs index 52bb94d44e6..cafb216e993 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs @@ -29,12 +29,10 @@ internal sealed class ResourceMonitorService : BackgroundService, IResourceMonit /// private readonly ISnapshotProvider _provider; -#pragma warning disable CS0618 // Type or member is obsolete /// /// The publishers to use with the data we are tracking. /// private readonly IResourceUtilizationPublisher[] _publishers; -#pragma warning restore CS0618 // Type or member is obsolete /// /// Logger to be used in this class. @@ -57,9 +55,7 @@ public ResourceMonitorService( ISnapshotProvider provider, ILogger logger, IOptions options, -#pragma warning disable CS0618 // Type or member is obsolete IEnumerable publishers) -#pragma warning restore CS0618 // Type or member is obsolete : this(provider, logger, options, publishers, TimeProvider.System) { } @@ -68,9 +64,7 @@ internal ResourceMonitorService( ISnapshotProvider provider, ILogger logger, IOptions options, -#pragma warning disable CS0618 // Type or member is obsolete IEnumerable publishers, -#pragma warning restore CS0618 // Type or member is obsolete TimeProvider timeProvider) { _provider = provider; diff --git a/src/Shared/DiagnosticIds/DiagnosticIds.cs b/src/Shared/DiagnosticIds/DiagnosticIds.cs index 343093e6f44..9330746c71a 100644 --- a/src/Shared/DiagnosticIds/DiagnosticIds.cs +++ b/src/Shared/DiagnosticIds/DiagnosticIds.cs @@ -117,6 +117,11 @@ internal static class AuditReports internal const string AUDREPGEN000 = nameof(AUDREPGEN000); internal const string AUDREPGEN001 = nameof(AUDREPGEN001); } + + internal static class Obsoletions + { + internal const string ResourceMonitoring = "EXTOBS0001"; + } } #pragma warning restore S1144 diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs index 7536a7c9f15..ac0108842f1 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs @@ -229,9 +229,7 @@ public Task ResourceUtilizationTracker_And_Metrics_Report_Same_Values_With_Cgrou .AddSingleton(clock) .AddSingleton(new FakeUserHz(100)) .AddSingleton(fileSystem) -#pragma warning disable CS0618 // Type or member is obsolete .AddSingleton(new GenericPublisher(_ => e.Set())) -#pragma warning restore CS0618 // Type or member is obsolete .AddResourceMonitoring()) .Build(); diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs index ec179e4c845..1bb73a44d03 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs @@ -10,7 +10,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Linux.Test; /// /// A publisher that accept in its constructor. /// -[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")] internal sealed class GenericPublisher : IResourceUtilizationPublisher { private readonly Action _publish; diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs index f37b72c78df..a0f2805dc5f 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; using System.Threading; using System.Threading.Tasks; @@ -10,7 +9,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers; /// /// Another publisher that do nothing, added to test scenarios where multiple publishers are added to the services collections. /// -[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")] internal sealed class AnotherPublisher : IResourceUtilizationPublisher { /// diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs index 5c5082d9f60..74af8d013a9 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; using System.Threading; using System.Threading.Tasks; @@ -10,7 +9,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers; /// /// A publisher that does nothing. /// -[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")] internal sealed class EmptyPublisher : IResourceUtilizationPublisher { /// diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs index 1292788f738..7a7e6502c32 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs @@ -10,7 +10,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers; /// /// A publisher that throws an error. /// -[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")] internal sealed class FaultPublisher : IResourceUtilizationPublisher { /// diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs index 220b06221d9..6d9e716fc7f 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs @@ -10,7 +10,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers; /// /// A publisher that accept in its constructor. /// -[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")] internal sealed class GenericPublisher : IResourceUtilizationPublisher { private readonly Action _publish; diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs index f0808e35ef0..4247b390711 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs @@ -8,7 +8,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test; -#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage. public sealed class ResourceMonitoringBuilderTests { [Fact] diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs index 428847403e0..447c9d4c827 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs @@ -15,7 +15,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test; -#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage. public sealed class ResourceMonitoringExtensionsTests { [Fact] diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs index f6c67d273c4..9ebeb3e6788 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs @@ -21,7 +21,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test; /// /// Tests for the DataTracker class. /// -#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage. public sealed class ResourceMonitoringServiceTests { private const string ProviderUnableToGatherData = "Unable to gather utilization statistics."; From c1733ccd5360f3389af5206177e3e8dc9e654553 Mon Sep 17 00:00:00 2001 From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com> Date: Thu, 22 Aug 2024 13:02:43 +0200 Subject: [PATCH 05/10] Remove unncessary suppression --- .../Linux/AcceptanceTest.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs index ac0108842f1..5611ad8ec00 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs @@ -312,9 +312,7 @@ public Task ResourceUtilizationTracker_And_Metrics_Report_Same_Values_With_Cgrou .AddSingleton(clock) .AddSingleton(new FakeUserHz(100)) .AddSingleton(fileSystem) -#pragma warning disable CS0618 // Type or member is obsolete .AddSingleton(new GenericPublisher(_ => e.Set())) -#pragma warning restore CS0618 // Type or member is obsolete .AddResourceMonitoring() .Replace(ServiceDescriptor.Singleton())) .Build(); From bcb7157360cd812f8e8b3ef4b4e411f5af1ac826 Mon Sep 17 00:00:00 2001 From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com> Date: Thu, 22 Aug 2024 13:08:11 +0200 Subject: [PATCH 06/10] Update text --- docs/list-of-diagnostics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md index 778625a8d64..dfbb66535ba 100644 --- a/docs/list-of-diagnostics.md +++ b/docs/list-of-diagnostics.md @@ -49,7 +49,7 @@ You may continue using obsolete APIs in your application, but we advise explorin | Diagnostic ID | Description | | :---------------- | :---------- | -| `EXTOBS0001` | Resource monitoring obsoletions | +| `EXTOBS0001` | IResourceUtilizationPublisher obsoletions | # LoggerMessage From ccd6c80c89c9fe3f287e97d5e0cd29c854ae268b Mon Sep 17 00:00:00 2001 From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com> Date: Thu, 22 Aug 2024 13:11:49 +0200 Subject: [PATCH 07/10] update doc --- docs/list-of-diagnostics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md index dfbb66535ba..f87fc1b28d0 100644 --- a/docs/list-of-diagnostics.md +++ b/docs/list-of-diagnostics.md @@ -49,7 +49,7 @@ You may continue using obsolete APIs in your application, but we advise explorin | Diagnostic ID | Description | | :---------------- | :---------- | -| `EXTOBS0001` | IResourceUtilizationPublisher obsoletions | +| `EXTOBS0001` | IResourceUtilizationPublisher obsoletions. Please use observable instruments from [here](https://github.com/dotnet/extensions/blob/6e0195db97d66cdf082e32799858c34bf5fd0cdb/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs). | # LoggerMessage From e74cf16be58dcc468ac08dc487ddfd5db39d5b0f Mon Sep 17 00:00:00 2001 From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com> Date: Thu, 22 Aug 2024 13:40:12 +0200 Subject: [PATCH 08/10] Fix warnings --- src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs b/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs index 573222e6d3e..3f75ef56ba3 100644 --- a/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs +++ b/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs @@ -10,6 +10,13 @@ namespace System; /// /// Marks program elements that are no longer in use. /// +/// +/// Source code imported from +/// +/// ObsoleteAttribute.cs without any changes, all resulting warnings ignored accordingly. +/// +#pragma warning disable CA1019 // Define accessors for attribute arguments +#pragma warning disable S3996 // URI properties should not be strings [ExcludeFromCodeCoverage] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Interface | AttributeTargets.Constructor | AttributeTargets.Method | From b79aff3207d089521a401b179d2bb9533972d840 Mon Sep 17 00:00:00 2001 From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com> Date: Fri, 23 Aug 2024 11:22:57 +0200 Subject: [PATCH 09/10] PR comments --- docs/list-of-diagnostics.md | 2 +- .../IResourceMonitorBuilder.cs | 4 ++-- .../IResourceUtilizationPublisher.cs | 4 ++-- .../ResourceMonitorBuilder.cs | 4 ++-- src/Shared/DiagnosticIds/DiagnosticIds.cs | 3 ++- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md index f87fc1b28d0..54866a3d0d3 100644 --- a/docs/list-of-diagnostics.md +++ b/docs/list-of-diagnostics.md @@ -49,7 +49,7 @@ You may continue using obsolete APIs in your application, but we advise explorin | Diagnostic ID | Description | | :---------------- | :---------- | -| `EXTOBS0001` | IResourceUtilizationPublisher obsoletions. Please use observable instruments from [here](https://github.com/dotnet/extensions/blob/6e0195db97d66cdf082e32799858c34bf5fd0cdb/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs). | +| `EXTOBS0001` | This API is obsolete and will be removed in a future version. Consider using Resource Monitoring observable [instruments](https://learn.microsoft.com/dotnet/core/diagnostics/built-in-metrics-diagnostics#microsoftextensionsdiagnosticsresourcemonitoring). | # LoggerMessage diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs index 01cb3fd3505..d2f6800d4f5 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs @@ -26,8 +26,8 @@ public interface IResourceMonitorBuilder #if !NET5_0_OR_GREATER #pragma warning disable CS0436 // Type conflicts with imported type #endif - [Obsolete("This method is obsolete and will be removed in a future version. Consider using observable instruments.", - DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring, + [Obsolete(DiagnosticIds.Obsoletions.IResourceUtilizationPublisherMessage, + DiagnosticId = DiagnosticIds.Obsoletions.IResourceUtilizationPublisherDiagId, UrlFormat = DiagnosticIds.UrlFormat)] IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>() where T : class, IResourceUtilizationPublisher; diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs index 3990c714707..152d5fdb973 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs @@ -14,8 +14,8 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; #if !NET5_0_OR_GREATER #pragma warning disable CS0436 // Type conflicts with imported type #endif -[Obsolete("This API is obsolete and will be removed in a future version. Consider using observable instruments.", - DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring, +[Obsolete(DiagnosticIds.Obsoletions.IResourceUtilizationPublisherMessage, + DiagnosticId = DiagnosticIds.Obsoletions.IResourceUtilizationPublisherDiagId, UrlFormat = DiagnosticIds.UrlFormat)] public interface IResourceUtilizationPublisher { diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs index c64828b73f2..acd947c982b 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs @@ -26,8 +26,8 @@ public ResourceMonitorBuilder(IServiceCollection services) #if !NET5_0_OR_GREATER #pragma warning disable CS0436 // Type conflicts with imported type #endif - [Obsolete("This API is obsolete and will be removed in a future version. Consider using observable instruments.", - DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring, + [Obsolete(DiagnosticIds.Obsoletions.IResourceUtilizationPublisherMessage, + DiagnosticId = DiagnosticIds.Obsoletions.IResourceUtilizationPublisherDiagId, UrlFormat = DiagnosticIds.UrlFormat)] public IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>() where T : class, IResourceUtilizationPublisher diff --git a/src/Shared/DiagnosticIds/DiagnosticIds.cs b/src/Shared/DiagnosticIds/DiagnosticIds.cs index 9330746c71a..ce3b2ca9d18 100644 --- a/src/Shared/DiagnosticIds/DiagnosticIds.cs +++ b/src/Shared/DiagnosticIds/DiagnosticIds.cs @@ -120,7 +120,8 @@ internal static class AuditReports internal static class Obsoletions { - internal const string ResourceMonitoring = "EXTOBS0001"; + internal const string IResourceUtilizationPublisherDiagId = "EXTOBS0001"; + internal const string IResourceUtilizationPublisherMessage = "This API is obsolete and will be removed in a future version. Consider using Resource Monitoring observable instruments."; } } From 5b405a2253aa2fe3ab8a4670db9fdc2411432e31 Mon Sep 17 00:00:00 2001 From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com> Date: Fri, 23 Aug 2024 11:23:55 +0200 Subject: [PATCH 10/10] update link --- docs/list-of-diagnostics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md index 54866a3d0d3..45c468db518 100644 --- a/docs/list-of-diagnostics.md +++ b/docs/list-of-diagnostics.md @@ -49,7 +49,7 @@ You may continue using obsolete APIs in your application, but we advise explorin | Diagnostic ID | Description | | :---------------- | :---------- | -| `EXTOBS0001` | This API is obsolete and will be removed in a future version. Consider using Resource Monitoring observable [instruments](https://learn.microsoft.com/dotnet/core/diagnostics/built-in-metrics-diagnostics#microsoftextensionsdiagnosticsresourcemonitoring). | +| `EXTOBS0001` | This API is obsolete and will be removed in a future version. Consider using [Resource Monitoring observable instruments](https://learn.microsoft.com/dotnet/core/diagnostics/built-in-metrics-diagnostics#microsoftextensionsdiagnosticsresourcemonitoring). | # LoggerMessage