From 4da595faf9246b2f7cf1251fbebf2d40553978be Mon Sep 17 00:00:00 2001 From: Reiley Yang Date: Fri, 26 Nov 2021 11:34:19 -0800 Subject: [PATCH] Hide MetricReader.ProcessMetrics for now (#2683) --- docs/metrics/extending-the-sdk/MyReader.cs | 59 ------------------- docs/metrics/extending-the-sdk/Program.cs | 2 +- .../.publicApi/net461/PublicAPI.Unshipped.txt | 2 - .../netstandard2.0/PublicAPI.Unshipped.txt | 2 - .../Metrics/BaseExportingMetricReader.cs | 2 +- .../Metrics/CompositeMetricReader.cs | 2 +- src/OpenTelemetry/Metrics/MetricReader.cs | 5 +- .../HostingMeterExtensionTests.cs | 4 -- 8 files changed, 7 insertions(+), 71 deletions(-) delete mode 100644 docs/metrics/extending-the-sdk/MyReader.cs diff --git a/docs/metrics/extending-the-sdk/MyReader.cs b/docs/metrics/extending-the-sdk/MyReader.cs deleted file mode 100644 index eef6b2b03..000000000 --- a/docs/metrics/extending-the-sdk/MyReader.cs +++ /dev/null @@ -1,59 +0,0 @@ -// -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -using System; -using System.Text; -using OpenTelemetry; -using OpenTelemetry.Metrics; - -internal class MyReader : MetricReader -{ - private readonly string name; - - public MyReader(string name = "MyReader") - { - this.name = name; - } - - protected override bool ProcessMetrics(in Batch metrics, int timeoutMilliseconds) - { - var sb = new StringBuilder(); - foreach (var record in metrics) - { - if (sb.Length > 0) - { - sb.Append(", "); - } - - sb.Append($"{record}"); - } - - Console.WriteLine($"{this.name}.ProcessMetrics(metrics=[{sb}], timeoutMilliseconds={timeoutMilliseconds})"); - return true; - } - - protected override bool OnShutdown(int timeoutMilliseconds) - { - Console.WriteLine($"{this.name}.OnShutdown(timeoutMilliseconds={timeoutMilliseconds})"); - return base.OnShutdown(timeoutMilliseconds); - } - - protected override void Dispose(bool disposing) - { - Console.WriteLine($"{this.name}.Dispose({disposing})"); - base.Dispose(disposing); - } -} diff --git a/docs/metrics/extending-the-sdk/Program.cs b/docs/metrics/extending-the-sdk/Program.cs index f5fc5fe68..0da915686 100644 --- a/docs/metrics/extending-the-sdk/Program.cs +++ b/docs/metrics/extending-the-sdk/Program.cs @@ -42,7 +42,7 @@ public class Program { using var meterProvider = Sdk.CreateMeterProviderBuilder() .AddMeter("MyCompany.MyProduct.MyLibrary") - .AddReader(new MyReader()) + .AddReader(new BaseExportingMetricReader(new MyExporter("ExporterX"))) .AddMyExporter() .Build(); diff --git a/src/OpenTelemetry/.publicApi/net461/PublicAPI.Unshipped.txt b/src/OpenTelemetry/.publicApi/net461/PublicAPI.Unshipped.txt index e6b63dcad..e81c909bf 100644 --- a/src/OpenTelemetry/.publicApi/net461/PublicAPI.Unshipped.txt +++ b/src/OpenTelemetry/.publicApi/net461/PublicAPI.Unshipped.txt @@ -1,4 +1,3 @@ -abstract OpenTelemetry.Metrics.MetricReader.ProcessMetrics(in OpenTelemetry.Batch metrics, int timeoutMilliseconds) -> bool OpenTelemetry.BaseExporter.ForceFlush(int timeoutMilliseconds = -1) -> bool OpenTelemetry.Batch.Batch(T[] items, int count) -> void OpenTelemetry.Batch.Count.get -> long @@ -116,7 +115,6 @@ override OpenTelemetry.BatchExportProcessor.Dispose(bool disposing) -> void override OpenTelemetry.Metrics.BaseExportingMetricReader.Dispose(bool disposing) -> void override OpenTelemetry.Metrics.BaseExportingMetricReader.OnCollect(int timeoutMilliseconds) -> bool override OpenTelemetry.Metrics.BaseExportingMetricReader.OnShutdown(int timeoutMilliseconds) -> bool -override OpenTelemetry.Metrics.BaseExportingMetricReader.ProcessMetrics(in OpenTelemetry.Batch metrics, int timeoutMilliseconds) -> bool override OpenTelemetry.Metrics.MeterProviderBuilderBase.AddInstrumentation(System.Func instrumentationFactory) -> OpenTelemetry.Metrics.MeterProviderBuilder override OpenTelemetry.Metrics.MeterProviderBuilderBase.AddMeter(params string[] names) -> OpenTelemetry.Metrics.MeterProviderBuilder override OpenTelemetry.Metrics.PeriodicExportingMetricReader.Dispose(bool disposing) -> void diff --git a/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt b/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt index e6b63dcad..e81c909bf 100644 --- a/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt @@ -1,4 +1,3 @@ -abstract OpenTelemetry.Metrics.MetricReader.ProcessMetrics(in OpenTelemetry.Batch metrics, int timeoutMilliseconds) -> bool OpenTelemetry.BaseExporter.ForceFlush(int timeoutMilliseconds = -1) -> bool OpenTelemetry.Batch.Batch(T[] items, int count) -> void OpenTelemetry.Batch.Count.get -> long @@ -116,7 +115,6 @@ override OpenTelemetry.BatchExportProcessor.Dispose(bool disposing) -> void override OpenTelemetry.Metrics.BaseExportingMetricReader.Dispose(bool disposing) -> void override OpenTelemetry.Metrics.BaseExportingMetricReader.OnCollect(int timeoutMilliseconds) -> bool override OpenTelemetry.Metrics.BaseExportingMetricReader.OnShutdown(int timeoutMilliseconds) -> bool -override OpenTelemetry.Metrics.BaseExportingMetricReader.ProcessMetrics(in OpenTelemetry.Batch metrics, int timeoutMilliseconds) -> bool override OpenTelemetry.Metrics.MeterProviderBuilderBase.AddInstrumentation(System.Func instrumentationFactory) -> OpenTelemetry.Metrics.MeterProviderBuilder override OpenTelemetry.Metrics.MeterProviderBuilderBase.AddMeter(params string[] names) -> OpenTelemetry.Metrics.MeterProviderBuilder override OpenTelemetry.Metrics.PeriodicExportingMetricReader.Dispose(bool disposing) -> void diff --git a/src/OpenTelemetry/Metrics/BaseExportingMetricReader.cs b/src/OpenTelemetry/Metrics/BaseExportingMetricReader.cs index 579b92bdb..5be6cf443 100644 --- a/src/OpenTelemetry/Metrics/BaseExportingMetricReader.cs +++ b/src/OpenTelemetry/Metrics/BaseExportingMetricReader.cs @@ -78,7 +78,7 @@ namespace OpenTelemetry.Metrics } /// - protected override bool ProcessMetrics(in Batch metrics, int timeoutMilliseconds) + internal override bool ProcessMetrics(in Batch metrics, int timeoutMilliseconds) { // TODO: Do we need to consider timeout here? return this.exporter.Export(metrics) == ExportResult.Success; diff --git a/src/OpenTelemetry/Metrics/CompositeMetricReader.cs b/src/OpenTelemetry/Metrics/CompositeMetricReader.cs index 36f799670..f666f2463 100644 --- a/src/OpenTelemetry/Metrics/CompositeMetricReader.cs +++ b/src/OpenTelemetry/Metrics/CompositeMetricReader.cs @@ -70,7 +70,7 @@ namespace OpenTelemetry.Metrics public Enumerator GetEnumerator() => new Enumerator(this.head); /// - protected override bool ProcessMetrics(in Batch metrics, int timeoutMilliseconds) + internal override bool ProcessMetrics(in Batch metrics, int timeoutMilliseconds) { // CompositeMetricReader delegates the work to its underlying readers, // so CompositeMetricReader.ProcessMetrics should never be called. diff --git a/src/OpenTelemetry/Metrics/MetricReader.cs b/src/OpenTelemetry/Metrics/MetricReader.cs index 61947e832..124adf2b0 100644 --- a/src/OpenTelemetry/Metrics/MetricReader.cs +++ b/src/OpenTelemetry/Metrics/MetricReader.cs @@ -191,7 +191,10 @@ namespace OpenTelemetry.Metrics /// Returns true when metrics processing succeeded; otherwise, /// false. /// - protected abstract bool ProcessMetrics(in Batch metrics, int timeoutMilliseconds); + internal virtual bool ProcessMetrics(in Batch metrics, int timeoutMilliseconds) + { + return true; + } /// /// Called by Collect. This function should block the current diff --git a/test/OpenTelemetry.Extensions.Hosting.Tests/HostingMeterExtensionTests.cs b/test/OpenTelemetry.Extensions.Hosting.Tests/HostingMeterExtensionTests.cs index 1043e7f0d..ea55aa58d 100644 --- a/test/OpenTelemetry.Extensions.Hosting.Tests/HostingMeterExtensionTests.cs +++ b/test/OpenTelemetry.Extensions.Hosting.Tests/HostingMeterExtensionTests.cs @@ -229,10 +229,6 @@ namespace OpenTelemetry.Extensions.Hosting.Tests internal class TestReader : MetricReader { - protected override bool ProcessMetrics(in Batch metrics, int timeoutMilliseconds) - { - return true; - } } } }