[otel] Return absl::Status as a return from BuildAndRegisterGlobal (#35659)

Just to be future-proof, I'm amending the `void` return status of `BuildAndRegisterGlobal` in `OpenTelemetryPluginBuilder` to absl::Status.

This will be backported to 1.61 as well.

Closes #35659

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35659 from yashykt:UpdateOtelApiToAddStatus 07d3f41b8a
PiperOrigin-RevId: 601458408
pull/35648/head
Yash Tibrewal 1 year ago committed by Copybara-Service
parent 19ad49d169
commit 76c45b98d1
  1. 3
      include/grpcpp/ext/otel_plugin.h
  2. 5
      src/cpp/ext/csm/csm_observability.cc
  3. 9
      src/cpp/ext/otel/otel_plugin.cc
  4. 2
      src/cpp/ext/otel/otel_plugin.h
  5. 12
      test/cpp/ext/csm/csm_observability_test.cc
  6. 2
      test/cpp/ext/otel/otel_test_library.cc
  7. 2
      test/cpp/interop/observability_client.cc
  8. 10
      test/cpp/interop/xds_interop_client.cc
  9. 10
      test/cpp/interop/xds_interop_server.cc

@ -27,6 +27,7 @@
#include <memory>
#include "absl/functional/any_invocable.h"
#include "absl/status/status.h"
#include "absl/strings/string_view.h"
#include "opentelemetry/metrics/meter_provider.h"
@ -107,7 +108,7 @@ class OpenTelemetryPluginBuilder {
std::unique_ptr<OpenTelemetryPluginOption> option);
/// Registers a global plugin that acts on all channels and servers running on
/// the process.
void BuildAndRegisterGlobal();
absl::Status BuildAndRegisterGlobal();
private:
std::unique_ptr<internal::OpenTelemetryPluginBuilderImpl> impl_;

@ -137,7 +137,10 @@ absl::StatusOr<CsmObservability> CsmObservabilityBuilder::BuildAndRegister() {
google::cloud::otel::MakeResourceDetector()
->Detect()
.GetAttributes()));
builder_->BuildAndRegisterGlobal();
auto status = builder_->BuildAndRegisterGlobal();
if (!status.ok()) {
return status;
}
return CsmObservability();
}

@ -163,13 +163,13 @@ OpenTelemetryPluginBuilderImpl& OpenTelemetryPluginBuilderImpl::AddPluginOption(
return *this;
}
void OpenTelemetryPluginBuilderImpl::BuildAndRegisterGlobal() {
absl::Status OpenTelemetryPluginBuilderImpl::BuildAndRegisterGlobal() {
opentelemetry::nostd::shared_ptr<opentelemetry::metrics::MeterProvider>
meter_provider = meter_provider_;
delete g_otel_plugin_state_;
g_otel_plugin_state_ = new struct OpenTelemetryPluginState;
if (meter_provider == nullptr) {
return;
return absl::OkStatus();
}
auto meter = meter_provider->GetMeter("grpc-c++", GRPC_CPP_VERSION_STRING);
if (metrics_.contains(grpc::OpenTelemetryPluginBuilder::
@ -269,6 +269,7 @@ void OpenTelemetryPluginBuilderImpl::BuildAndRegisterGlobal() {
args.GetString(GRPC_ARG_SERVER_URI).value_or(""));
});
});
return absl::OkStatus();
}
} // namespace internal
@ -331,8 +332,8 @@ OpenTelemetryPluginBuilder& OpenTelemetryPluginBuilder::AddPluginOption(
return *this;
}
void OpenTelemetryPluginBuilder::BuildAndRegisterGlobal() {
impl_->BuildAndRegisterGlobal();
absl::Status OpenTelemetryPluginBuilder::BuildAndRegisterGlobal() {
return impl_->BuildAndRegisterGlobal();
}
} // namespace grpc

@ -206,7 +206,7 @@ class OpenTelemetryPluginBuilderImpl {
generic_method_attribute_filter);
OpenTelemetryPluginBuilderImpl& AddPluginOption(
std::unique_ptr<InternalOpenTelemetryPluginOption> option);
void BuildAndRegisterGlobal();
absl::Status BuildAndRegisterGlobal();
private:
std::shared_ptr<opentelemetry::metrics::MeterProvider> meter_provider_;

@ -32,8 +32,8 @@ namespace testing {
namespace {
TEST(CsmObservabilityBuilderTest, Basic) {
EXPECT_TRUE(
experimental::CsmObservabilityBuilder().BuildAndRegister().status().ok());
EXPECT_EQ(experimental::CsmObservabilityBuilder().BuildAndRegister().status(),
absl::OkStatus());
}
TEST(GsmDependencyTest, GoogleCloudOpenTelemetryDependency) {
@ -64,9 +64,11 @@ TEST(CsmChannelTargetSelectorTest, XdsTargetsWithTDAuthority) {
}
TEST(CsmPluginOptionTest, Basic) {
OpenTelemetryPluginBuilder()
.AddPluginOption(experimental::MakeCsmOpenTelemetryPluginOption())
.BuildAndRegisterGlobal();
EXPECT_EQ(
OpenTelemetryPluginBuilder()
.AddPluginOption(experimental::MakeCsmOpenTelemetryPluginOption())
.BuildAndRegisterGlobal(),
absl::OkStatus());
}
} // namespace

@ -115,7 +115,7 @@ void OpenTelemetryPluginEnd2EndTest::Init(Options config) {
for (auto& option : config.plugin_options) {
ot_builder.AddPluginOption(std::move(option));
}
ot_builder.BuildAndRegisterGlobal();
ASSERT_EQ(ot_builder.BuildAndRegisterGlobal(), absl::OkStatus());
ChannelArguments channel_args;
if (!config.labels_to_inject.empty()) {
labels_to_inject_ = config.labels_to_inject;

@ -238,7 +238,7 @@ int main(int argc, char** argv) {
meter_provider->AddMetricReader(std::move(prometheus_exporter));
grpc::OpenTelemetryPluginBuilder otel_builder;
otel_builder.SetMeterProvider(std::move(meter_provider));
otel_builder.BuildAndRegisterGlobal();
assert(otel_builder.BuildAndRegisterGlobal().ok());
}
grpc::testing::ChannelCreationFunc channel_creation_func;

@ -403,10 +403,12 @@ void EnableCsmObservability() {
auto meter_provider =
std::make_shared<opentelemetry::sdk::metrics::MeterProvider>();
meter_provider->AddMetricReader(std::move(prometheus_exporter));
grpc::OpenTelemetryPluginBuilder()
.AddPluginOption(grpc::experimental::MakeCsmOpenTelemetryPluginOption())
.SetMeterProvider(std::move(meter_provider))
.BuildAndRegisterGlobal();
assert(grpc::OpenTelemetryPluginBuilder()
.AddPluginOption(
grpc::experimental::MakeCsmOpenTelemetryPluginOption())
.SetMeterProvider(std::move(meter_provider))
.BuildAndRegisterGlobal()
.ok());
}
void RunServer(const int port, StatsWatchers* stats_watchers,

@ -54,10 +54,12 @@ void EnableCsmObservability() {
auto meter_provider =
std::make_shared<opentelemetry::sdk::metrics::MeterProvider>();
meter_provider->AddMetricReader(std::move(prometheus_exporter));
grpc::OpenTelemetryPluginBuilder()
.AddPluginOption(grpc::experimental::MakeCsmOpenTelemetryPluginOption())
.SetMeterProvider(std::move(meter_provider))
.BuildAndRegisterGlobal();
assert(grpc::OpenTelemetryPluginBuilder()
.AddPluginOption(
grpc::experimental::MakeCsmOpenTelemetryPluginOption())
.SetMeterProvider(std::move(meter_provider))
.BuildAndRegisterGlobal()
.ok());
}
int main(int argc, char** argv) {

Loading…
Cancel
Save