Skip to content

Conversation

@scotthart
Copy link
Member

@scotthart scotthart commented Dec 3, 2025

  • This PR bumps the version of OTel used in most CMake builds to v1.24.0.
  • Bazel builds using bzlmod are using the latest OTel module available, which is v1.22.0
  • Bazel builds using WORKSPACE files are using v1.20.0
  • The version used in the oldest-deps build is set to v1.20.0 and requires a new vcpkg overlay to build OTel with the C++ STL.
  • As v3 requires C++17, we can use the STL for std::variant and cease trying to get OTel to work with Abseil, it's cleaner this way.
  • Semantic conventions used in the Cloud C++ SDK have been updated to use the new semantic conventions defined in OTel as the old ones have been removed.
  • ABI dumps were regenerated to reflect the types used by OTel.

@codecov
Copy link

codecov bot commented Dec 3, 2025

Codecov Report

❌ Patch coverage is 94.33962% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 92.94%. Comparing base (f714f9a) to head (07b9899).
⚠️ Report is 1 commits behind head on prepare-for-v3.0.0.

Files with missing lines Patch % Lines
...oud/bigtable/internal/operation_context_factory.cc 0.00% 5 Missing ⚠️
...torage/internal/async/reader_connection_tracing.cc 66.66% 1 Missing ⚠️
Additional details and impacted files
@@                  Coverage Diff                   @@
##           prepare-for-v3.0.0   #15812      +/-   ##
======================================================
- Coverage               92.95%   92.94%   -0.02%     
======================================================
  Files                    2451     2451              
  Lines                  226936   226936              
======================================================
- Hits                   210954   210926      -28     
- Misses                  15982    16010      +28     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@scotthart scotthart marked this pull request as ready for review December 8, 2025 15:50
@scotthart scotthart requested review from a team as code owners December 8, 2025 15:50
bazel_dep(name = "nlohmann_json", version = "3.11.3")
bazel_dep(name = "curl", version = "8.8.0.bcr.3")
bazel_dep(name = "crc32c", version = "1.1.0")
bazel_dep(name = "opentelemetry-cpp", version = "1.19.0")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For my understanding - what results in the abi-dumps changes? Additionally, what is the purpose of abi.dump.gz files?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The change from using absl variant related types to using std variant types in both the Cloud C++ SDK and the OpenTelemetry library were the source of the changes. We use the abi dumps to help monitor API changes in our public types. While the dumps also contain ABI information, we do not make any ABI guarantees.

bazel_dep(name = "curl", version = "8.8.0.bcr.3")
bazel_dep(name = "crc32c", version = "1.1.0")
bazel_dep(name = "opentelemetry-cpp", version = "1.19.0")
bazel_dep(name = "opentelemetry-cpp", version = "1.22.0")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you also provide additional context into why we want to use 1.22.0 here but 1.24.0 in other places?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are limited by the modules available in the bazel central registry. There is not a v1.24.0 version of the otel module currently available in the bazel central registry.

-DBUILD_SHARED_LIBS=yes \
-DWITH_EXAMPLES=OFF \
-DWITH_STL=CXX14 \
-DWITH_ABSEIL=ON \
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm assuming this is related to the point about ceasing trying to get OTel to work with Abseil as described in the PR description. Out of curiosity, was the historical context for the compatibility between otel and abseil?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So OTel strives to work across several C++ standards, Abseil is one way to get variant related types when using C++14 or earlier. OTel also provides its own implementations of STL types in its nostd namespace. As I understand it, the nostd types in OTel are aimed at providing lightweight alternatives to STL types for applications in resource contrained environments. OTel's nostd is the default, so in order to use the STL we need to build it with the appropriate CMake flag. Enabling both WITH_STL and WITH_ABSEIL was a bad idea, we needed to choose one or the other.

@scotthart scotthart merged commit 8170800 into googleapis:prepare-for-v3.0.0 Dec 8, 2025
59 of 60 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants