envoyproxy / envoy

Cloud-native high-performance edge/middle/service proxy
https://www.envoyproxy.io
Apache License 2.0
24.85k stars 4.78k forks source link

Newer release available `opentelemetry_proto`: v0.19.0 (current: v0.18.0) #22559

Closed github-actions[bot] closed 2 years ago

github-actions[bot] commented 2 years ago

Package Name: opentelemetry_proto@0.18.0 Current Version: v0.18.0@2022-05-17 Available Version: v0.19.0@2022-08-03 Upstream releases: https://github.com/open-telemetry/opentelemetry-proto/releases

moderation commented 2 years ago

@AlexanderEllis I was able to get this otel update working with the following diff after reviewing the deprecation notices and code changes at:

Haven't run tests but can confirm this now sends traces via the 0.58.0-dev otel collector!

diff --git a/api/bazel/repository_locations.bzl b/api/bazel/repository_locations.bzl
index cf6f6f3583..075820eee1 100644
--- a/api/bazel/repository_locations.bzl
+++ b/api/bazel/repository_locations.bzl
@@ -100,9 +100,9 @@ REPOSITORY_LOCATIONS_SPEC = dict(
         project_name = "OpenTelemetry Proto",
         project_desc = "Language Independent Interface Types For OpenTelemetry",
         project_url = "https://github.com/open-telemetry/opentelemetry-proto",
-        version = "0.18.0",
-        sha256 = "134ce87f0a623daac19b9507b92da0d9b82929e3db796bba631e422f6ea8d3b3",
-        release_date = "2022-05-17",
+        version = "0.19.0",
+        sha256 = "464bc2b348e674a1a03142e403cbccb01be8655b6de0f8bfe733ea31fcd421be",
+        release_date = "2022-08-03",
         strip_prefix = "opentelemetry-proto-{version}",
         urls = ["https://github.com/open-telemetry/opentelemetry-proto/archive/v{version}.tar.gz"],
         use_category = ["api"],
diff --git a/source/extensions/access_loggers/open_telemetry/grpc_access_log_impl.cc b/source/extensions/access_loggers/open_telemetry/grpc_access_log_impl.cc
index 7fbb95ae52..5edaffb7e7 100644
--- a/source/extensions/access_loggers/open_telemetry/grpc_access_log_impl.cc
+++ b/source/extensions/access_loggers/open_telemetry/grpc_access_log_impl.cc
@@ -49,7 +49,7 @@ void GrpcAccessLoggerImpl::initMessageRoot(
         config,
     const LocalInfo::LocalInfo& local_info) {
   auto* resource_logs = message_.add_resource_logs();
-  root_ = resource_logs->add_instrumentation_library_logs();
+  root_ = resource_logs->add_scope_logs();
   auto* resource = resource_logs->mutable_resource();
   *resource->add_attributes() = getStringKeyValue("log_name", config.common_config().log_name());
   *resource->add_attributes() = getStringKeyValue("zone_name", local_info.zoneName());
diff --git a/source/extensions/access_loggers/open_telemetry/grpc_access_log_impl.h b/source/extensions/access_loggers/open_telemetry/grpc_access_log_impl.h
index ffaea2ab54..abcf396b16 100644
--- a/source/extensions/access_loggers/open_telemetry/grpc_access_log_impl.h
+++ b/source/extensions/access_loggers/open_telemetry/grpc_access_log_impl.h
@@ -25,7 +25,7 @@ namespace OpenTelemetry {
 // Note: OpenTelemetry protos are extra flexible and used also in the OT collector for batching and
 // so forth. As a result, some fields are repeated, but for our use case we assume the following
 // structure:
-// ExportLogsServiceRequest -> (single) ResourceLogs -> (single) InstrumentationLibraryLogs ->
+// ExportLogsServiceRequest -> (single) ResourceLogs -> (single) ScopeLogs ->
 // (repeated) LogRecord.
 class GrpcAccessLoggerImpl
     : public Common::GrpcAccessLogger<
@@ -55,7 +55,7 @@ private:
   void initMessage() override;
   void clearMessage() override;

-  opentelemetry::proto::logs::v1::InstrumentationLibraryLogs* root_;
+  opentelemetry::proto::logs::v1::ScopeLogs* root_;
 };

 class GrpcAccessLoggerCacheImpl
diff --git a/source/extensions/tracers/opentelemetry/tracer.cc b/source/extensions/tracers/opentelemetry/tracer.cc
index bc5c0f06aa..376c7f69e8 100644
--- a/source/extensions/tracers/opentelemetry/tracer.cc
+++ b/source/extensions/tracers/opentelemetry/tracer.cc
@@ -124,10 +124,10 @@ void Tracer::flushSpans() {
   key_value.set_key(std::string{kServiceNameKey});
   *key_value.mutable_value() = value_proto;
   (*resource_span->mutable_resource()->add_attributes()) = key_value;
-  ::opentelemetry::proto::trace::v1::InstrumentationLibrarySpans* instrumentation_library_span =
-      resource_span->add_instrumentation_library_spans();
+  ::opentelemetry::proto::trace::v1::ScopeSpans* scope_span =
+      resource_span->add_scope_spans();
   for (const auto& pending_span : span_buffer_) {
-    (*instrumentation_library_span->add_spans()) = pending_span;
+    (*scope_span->add_spans()) = pending_span;
   }
   tracing_stats_.spans_sent_.add(span_buffer_.size());
   if (!exporter_->log(request)) {
diff --git a/test/extensions/tracers/opentelemetry/grpc_trace_exporter_test.cc b/test/extensions/tracers/opentelemetry/grpc_trace_exporter_test.cc
index 6d432eb517..f017deb74b 100644
--- a/test/extensions/tracers/opentelemetry/grpc_trace_exporter_test.cc
+++ b/test/extensions/tracers/opentelemetry/grpc_trace_exporter_test.cc
@@ -68,7 +68,7 @@ TEST_F(OpenTelemetryGrpcTraceExporterTest, CreateExporterAndExportSpan) {
   opentelemetry::proto::collector::trace::v1::ExportTraceServiceRequest request;
   opentelemetry::proto::trace::v1::Span span;
   span.set_name("test");
-  *request.add_resource_spans()->add_instrumentation_library_spans()->add_spans() = span;
+  *request.add_resource_spans()->add_instrumentation_scope_spans()->add_spans() = span;
   EXPECT_TRUE(exporter.log(request));
 }

@@ -80,7 +80,7 @@ TEST_F(OpenTelemetryGrpcTraceExporterTest, NoExportWithHighWatermark) {
   opentelemetry::proto::collector::trace::v1::ExportTraceServiceRequest request;
   opentelemetry::proto::trace::v1::Span span;
   span.set_name("tests");
-  *request.add_resource_spans()->add_instrumentation_library_spans()->add_spans() = span;
+  *request.add_resource_spans()->add_instrumentation_scope_spans()->add_spans() = span;
   EXPECT_FALSE(exporter.log(request));
 }

@@ -97,7 +97,7 @@ TEST_F(OpenTelemetryGrpcTraceExporterTest, ExportWithRemoteClose) {
   opentelemetry::proto::collector::trace::v1::ExportTraceServiceRequest request;
   opentelemetry::proto::trace::v1::Span span;
   span.set_name("test");
-  *request.add_resource_spans()->add_instrumentation_library_spans()->add_spans() = span;
+  *request.add_resource_spans()->add_instrumentation_scope_spans()->add_spans() = span;
   EXPECT_TRUE(exporter.log(request));

   // Close the stream, now that we've created it.
@@ -120,7 +120,7 @@ TEST_F(OpenTelemetryGrpcTraceExporterTest, ExportWithNoopCallbacks) {
   opentelemetry::proto::collector::trace::v1::ExportTraceServiceRequest request;
   opentelemetry::proto::trace::v1::Span span;
   span.set_name("test");
-  *request.add_resource_spans()->add_instrumentation_library_spans()->add_spans() = span;
+  *request.add_resource_spans()->add_instrumentation_scope_spans()->add_spans() = span;
   EXPECT_TRUE(exporter.log(request));

   Http::TestRequestHeaderMapImpl metadata;
AlexanderEllis commented 2 years ago

Nice, thanks for digging in! That's great to hear, and I'll scope the tests and float a PR with these changes and the proto upgrade 👍