From 1f39623af5aaf2617937ef8bca0bb3ae5105c73a Mon Sep 17 00:00:00 2001 From: Rajkumar Rangaraj Date: Tue, 10 Dec 2024 22:19:03 -0800 Subject: [PATCH 1/3] [otlp] Avoid filling new buffer on expansion (#6019) --- .../Serializer/ProtobufOtlpLogSerializer.cs | 14 +++++++++----- .../Serializer/ProtobufOtlpMetricSerializer.cs | 14 +++++++++----- .../Serializer/ProtobufOtlpTraceSerializer.cs | 15 ++++++++++----- .../Serializer/ProtobufSerializer.cs | 4 +--- 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpLogSerializer.cs b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpLogSerializer.cs index 4f29ce28fa4..3aaa423e76a 100644 --- a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpLogSerializer.cs +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpLogSerializer.cs @@ -22,10 +22,6 @@ internal static class ProtobufOtlpLogSerializer internal static int WriteLogsData(ref byte[] buffer, int writePosition, SdkLimitOptions sdkLimitOptions, ExperimentalOptions experimentalOptions, Resources.Resource? resource, in Batch logRecordBatch) { - writePosition = ProtobufSerializer.WriteTag(buffer, writePosition, ProtobufOtlpLogFieldNumberConstants.LogsData_Resource_Logs, ProtobufWireType.LEN); - int logsDataLengthPosition = writePosition; - writePosition += ReserveSizeForLength; - foreach (var logRecord in logRecordBatch) { var scopeName = logRecord.Logger.Name; @@ -48,7 +44,6 @@ internal static int WriteLogsData(ref byte[] buffer, int writePosition, SdkLimit } writePosition = TryWriteResourceLogs(ref buffer, writePosition, sdkLimitOptions, experimentalOptions, resource, ScopeLogsList); - ProtobufSerializer.WriteReservedLength(buffer, logsDataLengthPosition, writePosition - (logsDataLengthPosition + ReserveSizeForLength)); ReturnLogRecordListToPool(); return writePosition; @@ -56,12 +51,21 @@ internal static int WriteLogsData(ref byte[] buffer, int writePosition, SdkLimit internal static int TryWriteResourceLogs(ref byte[] buffer, int writePosition, SdkLimitOptions sdkLimitOptions, ExperimentalOptions experimentalOptions, Resources.Resource? resource, Dictionary> scopeLogs) { + int entryWritePosition = writePosition; + try { + writePosition = ProtobufSerializer.WriteTag(buffer, writePosition, ProtobufOtlpLogFieldNumberConstants.LogsData_Resource_Logs, ProtobufWireType.LEN); + int logsDataLengthPosition = writePosition; + writePosition += ReserveSizeForLength; + writePosition = WriteResourceLogs(buffer, writePosition, sdkLimitOptions, experimentalOptions, resource, scopeLogs); + + ProtobufSerializer.WriteReservedLength(buffer, logsDataLengthPosition, writePosition - (logsDataLengthPosition + ReserveSizeForLength)); } catch (Exception ex) when (ex is IndexOutOfRangeException || ex is ArgumentException) { + writePosition = entryWritePosition; if (!ProtobufSerializer.IncreaseBufferSize(ref buffer, OtlpSignalType.Logs)) { throw; diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpMetricSerializer.cs b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpMetricSerializer.cs index 68d5c5fa115..b1fe3984755 100644 --- a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpMetricSerializer.cs +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpMetricSerializer.cs @@ -19,10 +19,6 @@ internal static class ProtobufOtlpMetricSerializer internal static int WriteMetricsData(ref byte[] buffer, int writePosition, Resources.Resource? resource, in Batch batch) { - writePosition = ProtobufSerializer.WriteTag(buffer, writePosition, ProtobufOtlpMetricFieldNumberConstants.MetricsData_Resource_Metrics, ProtobufWireType.LEN); - int mericsDataLengthPosition = writePosition; - writePosition += ReserveSizeForLength; - foreach (var metric in batch) { var metricName = metric.MeterName; @@ -36,7 +32,6 @@ internal static int WriteMetricsData(ref byte[] buffer, int writePosition, Resou } writePosition = TryWriteResourceMetrics(ref buffer, writePosition, resource, ScopeMetricsList); - ProtobufSerializer.WriteReservedLength(buffer, mericsDataLengthPosition, writePosition - (mericsDataLengthPosition + ReserveSizeForLength)); ReturnMetricListToPool(); return writePosition; @@ -44,12 +39,21 @@ internal static int WriteMetricsData(ref byte[] buffer, int writePosition, Resou internal static int TryWriteResourceMetrics(ref byte[] buffer, int writePosition, Resources.Resource? resource, Dictionary> scopeMetrics) { + int entryWritePosition = writePosition; + try { + writePosition = ProtobufSerializer.WriteTag(buffer, writePosition, ProtobufOtlpMetricFieldNumberConstants.MetricsData_Resource_Metrics, ProtobufWireType.LEN); + int mericsDataLengthPosition = writePosition; + writePosition += ReserveSizeForLength; + writePosition = WriteResourceMetrics(buffer, writePosition, resource, scopeMetrics); + + ProtobufSerializer.WriteReservedLength(buffer, mericsDataLengthPosition, writePosition - (mericsDataLengthPosition + ReserveSizeForLength)); } catch (Exception ex) when (ex is IndexOutOfRangeException || ex is ArgumentException) { + writePosition = entryWritePosition; if (!ProtobufSerializer.IncreaseBufferSize(ref buffer, OtlpSignalType.Metrics)) { throw; diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpTraceSerializer.cs b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpTraceSerializer.cs index 91201113897..de184e8c622 100644 --- a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpTraceSerializer.cs +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpTraceSerializer.cs @@ -20,10 +20,6 @@ internal static class ProtobufOtlpTraceSerializer internal static int WriteTraceData(ref byte[] buffer, int writePosition, SdkLimitOptions sdkLimitOptions, Resources.Resource? resource, in Batch batch) { - writePosition = ProtobufSerializer.WriteTag(buffer, writePosition, ProtobufOtlpTraceFieldNumberConstants.TracesData_Resource_Spans, ProtobufWireType.LEN); - int resourceSpansScopeSpansLengthPosition = writePosition; - writePosition += ReserveSizeForLength; - foreach (var activity in batch) { var sourceName = activity.Source.Name; @@ -38,19 +34,28 @@ internal static int WriteTraceData(ref byte[] buffer, int writePosition, SdkLimi writePosition = TryWriteResourceSpans(ref buffer, writePosition, sdkLimitOptions, resource); ReturnActivityListToPool(); - ProtobufSerializer.WriteReservedLength(buffer, resourceSpansScopeSpansLengthPosition, writePosition - (resourceSpansScopeSpansLengthPosition + ReserveSizeForLength)); return writePosition; } internal static int TryWriteResourceSpans(ref byte[] buffer, int writePosition, SdkLimitOptions sdkLimitOptions, Resources.Resource? resource) { + int entryWritePosition = writePosition; + try { + writePosition = ProtobufSerializer.WriteTag(buffer, writePosition, ProtobufOtlpTraceFieldNumberConstants.TracesData_Resource_Spans, ProtobufWireType.LEN); + int resourceSpansScopeSpansLengthPosition = writePosition; + writePosition += ReserveSizeForLength; + writePosition = WriteResourceSpans(buffer, writePosition, sdkLimitOptions, resource); + + ProtobufSerializer.WriteReservedLength(buffer, resourceSpansScopeSpansLengthPosition, writePosition - (resourceSpansScopeSpansLengthPosition + ReserveSizeForLength)); } catch (Exception ex) when (ex is IndexOutOfRangeException || ex is ArgumentException) { + writePosition = entryWritePosition; + // Attempt to increase the buffer size if (!ProtobufSerializer.IncreaseBufferSize(ref buffer, OtlpSignalType.Traces)) { diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufSerializer.cs b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufSerializer.cs index b4f3ad7131c..a74ec097299 100644 --- a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufSerializer.cs +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufSerializer.cs @@ -359,9 +359,7 @@ internal static bool IncreaseBufferSize(ref byte[] buffer, OtlpSignalType otlpSi try { var newBufferSize = buffer.Length * 2; - var newBuffer = new byte[newBufferSize]; - buffer.CopyTo(newBuffer, 0); - buffer = newBuffer; + buffer = new byte[newBufferSize]; return true; } catch (OutOfMemoryException) From 80287c061e0e6bbb15d33433bfb8e4d448c351f0 Mon Sep 17 00:00:00 2001 From: Rajkumar Rangaraj Date: Wed, 11 Dec 2024 14:08:10 -0800 Subject: [PATCH 2/3] [otlp] Enable OTLP exporter for multiple registrations (#6020) --- .../Serializer/ProtobufOtlpLogSerializer.cs | 25 ++++++++++------- .../ProtobufOtlpMetricSerializer.cs | 25 ++++++++++------- .../Serializer/ProtobufOtlpTraceSerializer.cs | 27 +++++++++++-------- 3 files changed, 46 insertions(+), 31 deletions(-) diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpLogSerializer.cs b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpLogSerializer.cs index 3aaa423e76a..e95ef92812c 100644 --- a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpLogSerializer.cs +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpLogSerializer.cs @@ -14,21 +14,26 @@ internal static class ProtobufOtlpLogSerializer private const int TraceIdSize = 16; private const int SpanIdSize = 8; - private static readonly Stack> LogsListPool = []; - private static readonly Dictionary> ScopeLogsList = []; + [ThreadStatic] + private static Stack>? logsListPool; + [ThreadStatic] + private static Dictionary>? scopeLogsList; [ThreadStatic] private static SerializationState? threadSerializationState; internal static int WriteLogsData(ref byte[] buffer, int writePosition, SdkLimitOptions sdkLimitOptions, ExperimentalOptions experimentalOptions, Resources.Resource? resource, in Batch logRecordBatch) { + logsListPool ??= []; + scopeLogsList ??= []; + foreach (var logRecord in logRecordBatch) { var scopeName = logRecord.Logger.Name; - if (!ScopeLogsList.TryGetValue(scopeName, out var logRecords)) + if (!scopeLogsList.TryGetValue(scopeName, out var logRecords)) { - logRecords = LogsListPool.Count > 0 ? LogsListPool.Pop() : []; - ScopeLogsList[scopeName] = logRecords; + logRecords = logsListPool.Count > 0 ? logsListPool.Pop() : []; + scopeLogsList[scopeName] = logRecords; } if (logRecord.Source == LogRecord.LogRecordSource.FromSharedPool) @@ -43,7 +48,7 @@ internal static int WriteLogsData(ref byte[] buffer, int writePosition, SdkLimit logRecords.Add(logRecord); } - writePosition = TryWriteResourceLogs(ref buffer, writePosition, sdkLimitOptions, experimentalOptions, resource, ScopeLogsList); + writePosition = TryWriteResourceLogs(ref buffer, writePosition, sdkLimitOptions, experimentalOptions, resource, scopeLogsList); ReturnLogRecordListToPool(); return writePosition; @@ -79,9 +84,9 @@ internal static int TryWriteResourceLogs(ref byte[] buffer, int writePosition, S internal static void ReturnLogRecordListToPool() { - if (ScopeLogsList.Count != 0) + if (scopeLogsList?.Count != 0) { - foreach (var entry in ScopeLogsList) + foreach (var entry in scopeLogsList!) { foreach (var logRecord in entry.Value) { @@ -96,10 +101,10 @@ internal static void ReturnLogRecordListToPool() } entry.Value.Clear(); - LogsListPool.Push(entry.Value); + logsListPool?.Push(entry.Value); } - ScopeLogsList.Clear(); + scopeLogsList.Clear(); } } diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpMetricSerializer.cs b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpMetricSerializer.cs index b1fe3984755..5064e9cd122 100644 --- a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpMetricSerializer.cs +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpMetricSerializer.cs @@ -12,26 +12,31 @@ internal static class ProtobufOtlpMetricSerializer private const int TraceIdSize = 16; private const int SpanIdSize = 8; - private static readonly Stack> MetricListPool = []; - private static readonly Dictionary> ScopeMetricsList = []; + [ThreadStatic] + private static Stack>? metricListPool; + [ThreadStatic] + private static Dictionary>? scopeMetricsList; private delegate int WriteExemplarFunc(byte[] buffer, int writePosition, in Exemplar exemplar); internal static int WriteMetricsData(ref byte[] buffer, int writePosition, Resources.Resource? resource, in Batch batch) { + metricListPool ??= []; + scopeMetricsList ??= []; + foreach (var metric in batch) { var metricName = metric.MeterName; - if (!ScopeMetricsList.TryGetValue(metricName, out var metrics)) + if (!scopeMetricsList.TryGetValue(metricName, out var metrics)) { - metrics = MetricListPool.Count > 0 ? MetricListPool.Pop() : new List(); - ScopeMetricsList[metricName] = metrics; + metrics = metricListPool.Count > 0 ? metricListPool.Pop() : new List(); + scopeMetricsList[metricName] = metrics; } metrics.Add(metric); } - writePosition = TryWriteResourceMetrics(ref buffer, writePosition, resource, ScopeMetricsList); + writePosition = TryWriteResourceMetrics(ref buffer, writePosition, resource, scopeMetricsList); ReturnMetricListToPool(); return writePosition; @@ -67,15 +72,15 @@ internal static int TryWriteResourceMetrics(ref byte[] buffer, int writePosition private static void ReturnMetricListToPool() { - if (ScopeMetricsList.Count != 0) + if (scopeMetricsList?.Count != 0) { - foreach (var entry in ScopeMetricsList) + foreach (var entry in scopeMetricsList!) { entry.Value.Clear(); - MetricListPool.Push(entry.Value); + metricListPool?.Push(entry.Value); } - ScopeMetricsList.Clear(); + scopeMetricsList.Clear(); } } diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpTraceSerializer.cs b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpTraceSerializer.cs index de184e8c622..a8e0609f8d0 100644 --- a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpTraceSerializer.cs +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/Implementation/Serializer/ProtobufOtlpTraceSerializer.cs @@ -15,18 +15,23 @@ internal static class ProtobufOtlpTraceSerializer private const int TraceIdSize = 16; private const int SpanIdSize = 8; - private static readonly Stack> ActivityListPool = []; - private static readonly Dictionary> ScopeTracesList = []; + [ThreadStatic] + private static Stack>? activityListPool; + [ThreadStatic] + private static Dictionary>? scopeTracesList; internal static int WriteTraceData(ref byte[] buffer, int writePosition, SdkLimitOptions sdkLimitOptions, Resources.Resource? resource, in Batch batch) { + activityListPool ??= []; + scopeTracesList ??= []; + foreach (var activity in batch) { var sourceName = activity.Source.Name; - if (!ScopeTracesList.TryGetValue(sourceName, out var activities)) + if (!scopeTracesList.TryGetValue(sourceName, out var activities)) { - activities = ActivityListPool.Count > 0 ? ActivityListPool.Pop() : []; - ScopeTracesList[sourceName] = activities; + activities = activityListPool.Count > 0 ? activityListPool.Pop() : []; + scopeTracesList[sourceName] = activities; } activities.Add(activity); @@ -74,15 +79,15 @@ internal static int TryWriteResourceSpans(ref byte[] buffer, int writePosition, internal static void ReturnActivityListToPool() { - if (ScopeTracesList.Count != 0) + if (scopeTracesList?.Count != 0) { - foreach (var entry in ScopeTracesList) + foreach (var entry in scopeTracesList!) { entry.Value.Clear(); - ActivityListPool.Push(entry.Value); + activityListPool?.Push(entry.Value); } - ScopeTracesList.Clear(); + scopeTracesList.Clear(); } } @@ -96,9 +101,9 @@ internal static int WriteResourceSpans(byte[] buffer, int writePosition, SdkLimi internal static int WriteScopeSpans(byte[] buffer, int writePosition, SdkLimitOptions sdkLimitOptions) { - if (ScopeTracesList != null) + if (scopeTracesList != null) { - foreach (KeyValuePair> entry in ScopeTracesList) + foreach (KeyValuePair> entry in scopeTracesList) { writePosition = ProtobufSerializer.WriteTag(buffer, writePosition, ProtobufOtlpTraceFieldNumberConstants.ResourceSpans_Scope_Spans, ProtobufWireType.LEN); int resourceSpansScopeSpansLengthPosition = writePosition; From a6582704cd0701054f4c4cfd6d16f6925fb79144 Mon Sep 17 00:00:00 2001 From: OpenTelemetry Bot <107717825+opentelemetrybot@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:55:15 -0600 Subject: [PATCH 3/3] [release] Prepare release core-1.11.0-rc.1 (#6021) --- src/OpenTelemetry.Api.ProviderBuilderExtensions/CHANGELOG.md | 4 ++++ src/OpenTelemetry.Api/CHANGELOG.md | 4 ++++ src/OpenTelemetry.Exporter.Console/CHANGELOG.md | 4 ++++ src/OpenTelemetry.Exporter.InMemory/CHANGELOG.md | 4 ++++ src/OpenTelemetry.Exporter.OpenTelemetryProtocol/CHANGELOG.md | 4 ++++ src/OpenTelemetry.Exporter.Zipkin/CHANGELOG.md | 4 ++++ src/OpenTelemetry.Extensions.Hosting/CHANGELOG.md | 4 ++++ src/OpenTelemetry.Extensions.Propagators/CHANGELOG.md | 4 ++++ src/OpenTelemetry/CHANGELOG.md | 4 ++++ 9 files changed, 36 insertions(+) diff --git a/src/OpenTelemetry.Api.ProviderBuilderExtensions/CHANGELOG.md b/src/OpenTelemetry.Api.ProviderBuilderExtensions/CHANGELOG.md index 76ddf2d1f90..788a08541ba 100644 --- a/src/OpenTelemetry.Api.ProviderBuilderExtensions/CHANGELOG.md +++ b/src/OpenTelemetry.Api.ProviderBuilderExtensions/CHANGELOG.md @@ -7,6 +7,10 @@ Notes](../../RELEASENOTES.md). ## Unreleased +## 1.11.0-rc.1 + +Released 2024-Dec-11 + ## 1.10.0 Released 2024-Nov-12 diff --git a/src/OpenTelemetry.Api/CHANGELOG.md b/src/OpenTelemetry.Api/CHANGELOG.md index 4281ee825e0..f2de47ed256 100644 --- a/src/OpenTelemetry.Api/CHANGELOG.md +++ b/src/OpenTelemetry.Api/CHANGELOG.md @@ -6,6 +6,10 @@ Notes](../../RELEASENOTES.md). ## Unreleased +## 1.11.0-rc.1 + +Released 2024-Dec-11 + ## 1.10.0 Released 2024-Nov-12 diff --git a/src/OpenTelemetry.Exporter.Console/CHANGELOG.md b/src/OpenTelemetry.Exporter.Console/CHANGELOG.md index eaf25e40b32..0a687822794 100644 --- a/src/OpenTelemetry.Exporter.Console/CHANGELOG.md +++ b/src/OpenTelemetry.Exporter.Console/CHANGELOG.md @@ -6,6 +6,10 @@ Notes](../../RELEASENOTES.md). ## Unreleased +## 1.11.0-rc.1 + +Released 2024-Dec-11 + ## 1.10.0 Released 2024-Nov-12 diff --git a/src/OpenTelemetry.Exporter.InMemory/CHANGELOG.md b/src/OpenTelemetry.Exporter.InMemory/CHANGELOG.md index f7763c6ea09..87b7279cc32 100644 --- a/src/OpenTelemetry.Exporter.InMemory/CHANGELOG.md +++ b/src/OpenTelemetry.Exporter.InMemory/CHANGELOG.md @@ -6,6 +6,10 @@ Notes](../../RELEASENOTES.md). ## Unreleased +## 1.11.0-rc.1 + +Released 2024-Dec-11 + ## 1.10.0 Released 2024-Nov-12 diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/CHANGELOG.md b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/CHANGELOG.md index d2b643ddbea..aeed88cc1c0 100644 --- a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/CHANGELOG.md +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/CHANGELOG.md @@ -7,6 +7,10 @@ Notes](../../RELEASENOTES.md). ## Unreleased +## 1.11.0-rc.1 + +Released 2024-Dec-11 + * Removed the following package references: * `Google.Protobuf` diff --git a/src/OpenTelemetry.Exporter.Zipkin/CHANGELOG.md b/src/OpenTelemetry.Exporter.Zipkin/CHANGELOG.md index 1ba4565beb6..8bfd3be9011 100644 --- a/src/OpenTelemetry.Exporter.Zipkin/CHANGELOG.md +++ b/src/OpenTelemetry.Exporter.Zipkin/CHANGELOG.md @@ -6,6 +6,10 @@ Notes](../../RELEASENOTES.md). ## Unreleased +## 1.11.0-rc.1 + +Released 2024-Dec-11 + ## 1.10.0 Released 2024-Nov-12 diff --git a/src/OpenTelemetry.Extensions.Hosting/CHANGELOG.md b/src/OpenTelemetry.Extensions.Hosting/CHANGELOG.md index b06be6a42b0..c519f781c8b 100644 --- a/src/OpenTelemetry.Extensions.Hosting/CHANGELOG.md +++ b/src/OpenTelemetry.Extensions.Hosting/CHANGELOG.md @@ -6,6 +6,10 @@ Notes](../../RELEASENOTES.md). ## Unreleased +## 1.11.0-rc.1 + +Released 2024-Dec-11 + ## 1.10.0 Released 2024-Nov-12 diff --git a/src/OpenTelemetry.Extensions.Propagators/CHANGELOG.md b/src/OpenTelemetry.Extensions.Propagators/CHANGELOG.md index cccc960f322..fb3e95f91e9 100644 --- a/src/OpenTelemetry.Extensions.Propagators/CHANGELOG.md +++ b/src/OpenTelemetry.Extensions.Propagators/CHANGELOG.md @@ -6,6 +6,10 @@ covering all components see: [Release Notes](../../RELEASENOTES.md). ## Unreleased +## 1.11.0-rc.1 + +Released 2024-Dec-11 + ## 1.10.0 Released 2024-Nov-12 diff --git a/src/OpenTelemetry/CHANGELOG.md b/src/OpenTelemetry/CHANGELOG.md index bb9a8c4cd97..489b074663d 100644 --- a/src/OpenTelemetry/CHANGELOG.md +++ b/src/OpenTelemetry/CHANGELOG.md @@ -6,6 +6,10 @@ Notes](../../RELEASENOTES.md). ## Unreleased +## 1.11.0-rc.1 + +Released 2024-Dec-11 + ## 1.10.0 Released 2024-Nov-12