Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify the strategy to avoid conflict between two different versions of Abseil #883

Merged
merged 11 commits into from
Jun 30, 2021
Merged
15 changes: 15 additions & 0 deletions examples/otlp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,18 @@ default. This can be changed with first argument from command-line, for example:
Once you have the Collector running, see
[CONTRIBUTING.md](../../CONTRIBUTING.md) for instructions on building and
running the example.

## Additional notes regarding Abseil library

gRPC internally uses a different version of Abseil than OpenTelemetry C++ SDK.

One option to optimize your code is to build the SDK with system-provided
Abseil library. If you are using CMake, then `-DWITH_ABSEIL=ON` may be passed
during the build of SDK to reuse the same Abseil library as gRPC.

If you do not want to pursue the above option, and in case if you run into
conflict between Abseil library and OpenTelemetry C++ `absl::variant`
implementation, please include either `grpcpp/grpcpp.h` or
`opentelemetry/exporters/otlp/otlp_grpc_exporter.h` BEFORE any other API
headers. This approach efficiently avoids the conflict between the two different
versions of Abseil.
3 changes: 3 additions & 0 deletions examples/otlp/grpc_main.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

// Make sure to include GRPC exporter first because otherwise Abseil may create
// ambiguity with `nostd::variant`. See issue:
// https:/open-telemetry/opentelemetry-cpp/issues/880
#include "opentelemetry/exporters/otlp/otlp_grpc_exporter.h"
#include "opentelemetry/sdk/trace/simple_processor.h"
#include "opentelemetry/sdk/trace/tracer_provider.h"
Expand Down