Skip to content

Commit aa821dc

Browse files
committed
Merge remote-tracking branch 'github/main' into fix_lifetime_in_log_record
# Conflicts: # exporters/ostream/test/ostream_log_test.cc
2 parents fabc4a0 + 3ca3c76 commit aa821dc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+823
-188
lines changed

CHANGELOG.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,28 @@ Increment the:
1818
* [SDK] Add tracer scope configurator
1919
[#3137](https://github.com/open-telemetry/opentelemetry-cpp/pull/3137)
2020

21+
* [SDK] Support OTEL_SDK_DISABLED environment variable
22+
[#3245](https://github.com/open-telemetry/opentelemetry-cpp/pull/3245)
23+
24+
Important changes:
25+
26+
* [SDK] Support OTEL_SDK_DISABLED environment variable
27+
[#3245](https://github.com/open-telemetry/opentelemetry-cpp/pull/3245)
28+
29+
* The SDK now exposes the following new methods:
30+
31+
* opentelemetry::sdk::trace::Provider::SetTracerProvider()
32+
* opentelemetry::sdk::metrics::Provider::SetMeterProvider()
33+
* opentelemetry::sdk::logs::Provider::SetLoggerProvider()
34+
35+
* These methods do support the `OTEL_SDK_DISABLED` environment variable,
36+
unlike the corresponding existing API Provider classes.
37+
38+
* Applications are encouraged to migrate from the API to the SDK
39+
`Provider` classes, to benefit from this feature.
40+
41+
* All the example code has been updated to reflect the new usage.
42+
2143
## [1.19 2025-01-22]
2244

2345
* [PROMETHEUS_EXPORTER] Fix default for emitting otel_scope attributes

api/include/opentelemetry/metrics/provider.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
#include <mutex>
77

8-
#include "opentelemetry/common/macros.h"
98
#include "opentelemetry/common/spin_lock_mutex.h"
9+
#include "opentelemetry/metrics/meter_provider.h"
1010
#include "opentelemetry/metrics/noop.h"
1111
#include "opentelemetry/nostd/shared_ptr.h"
1212
#include "opentelemetry/version.h"
@@ -15,8 +15,6 @@ OPENTELEMETRY_BEGIN_NAMESPACE
1515
namespace metrics
1616
{
1717

18-
class MeterProvider;
19-
2018
/**
2119
* Stores the singleton global MeterProvider.
2220
*/

api/test/metrics/meter_provider_test.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <gtest/gtest.h>
55

6+
#include "opentelemetry/metrics/meter_provider.h"
67
#include "opentelemetry/metrics/noop.h"
78
#include "opentelemetry/metrics/provider.h"
89
#include "opentelemetry/nostd/shared_ptr.h"

ci/do_ci.ps1

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ if (!(test-path plugin)) {
2525
}
2626
$PLUGIN_DIR = Join-Path "$SRC_DIR" "plugin"
2727

28-
$VCPKG_DIR = Join-Path "$SRC_DIR" "tools" "vcpkg"
28+
$VCPKG_DIR = Join-Path "$SRC_DIR" "tools/vcpkg"
2929

3030
$Env:CTEST_OUTPUT_ON_FAILURE = "1"
3131

@@ -135,6 +135,9 @@ switch ($action) {
135135
"cmake.maintainer.test" {
136136
cd "$BUILD_DIR"
137137
cmake $SRC_DIR `
138+
-DWITH_OTLP_GRPC=ON `
139+
-DWITH_OTLP_HTTP=ON `
140+
-DWITH_OTLP_RETRY_PREVIEW=ON `
138141
-DOTELCPP_MAINTAINER_MODE=ON `
139142
-DWITH_NO_DEPRECATED_CODE=ON `
140143
-DVCPKG_TARGET_TRIPLET=x64-windows `
@@ -159,6 +162,9 @@ switch ($action) {
159162
cmake $SRC_DIR `
160163
-DWITH_STL=CXX20 `
161164
-DCMAKE_CXX_STANDARD=20 `
165+
-DWITH_OTLP_GRPC=ON `
166+
-DWITH_OTLP_HTTP=ON `
167+
-DWITH_OTLP_RETRY_PREVIEW=ON `
162168
-DOTELCPP_MAINTAINER_MODE=ON `
163169
-DWITH_NO_DEPRECATED_CODE=ON `
164170
-DVCPKG_TARGET_TRIPLET=x64-windows `
@@ -203,6 +209,9 @@ switch ($action) {
203209
cd "$BUILD_DIR"
204210
cmake $SRC_DIR `
205211
-DVCPKG_TARGET_TRIPLET=x64-windows `
212+
-DWITH_OTLP_GRPC=ON `
213+
-DWITH_OTLP_HTTP=ON `
214+
-DWITH_OTLP_RETRY_PREVIEW=ON `
206215
-DWITH_OTPROTCOL=ON `
207216
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
208217
$exit = $LASTEXITCODE

ci/setup_windows_ci_environment.ps1

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,10 @@ $VCPKG_DIR = (Get-Item -Path ".\").FullName
1919
# nlohmann-json
2020
./vcpkg "--vcpkg-root=$VCPKG_DIR" install nlohmann-json:x64-windows
2121

22+
# grpc
23+
./vcpkg "--vcpkg-root=$VCPKG_DIR" install grpc:x64-windows
24+
25+
# curl
26+
./vcpkg "--vcpkg-root=$VCPKG_DIR" install curl:x64-windows
27+
2228
Pop-Location

docs/cpp-sdk-factory-design.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,50 @@ This property makes it possible to:
9494
- deploy a new SDK shared library
9595
- keep the application unchanged
9696
97+
### Case study, using Factory and shared gRPC client between OTLP gRPC exporters
98+
99+
To reduce the cost of gRPC, the SDK allow users to share gRPC clients between
100+
OTLP gRPC exporters when these exporters have the same settings. This can be
101+
used as follows from the application code:
102+
103+
```cpp
104+
// Include following headers
105+
#include "opentelemetry/exporters/otlp/otlp_grpc_client_factory.h"
106+
#include "opentelemetry/exporters/otlp/otlp_grpc_exporter_factory.h"
107+
#include "opentelemetry/exporters/otlp/otlp_grpc_exporter_options.h"
108+
#include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_factory.h"
109+
#include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_options.h"
110+
111+
// Create exporters with shared gRPC Client
112+
namespace otlp = opentelemetry::exporter::otlp;
113+
114+
void SetupOtlp() {
115+
otlp::OtlpGrpcClientOptions client_opts;
116+
otlp::OtlpGrpcExporterOptions trace_opts;
117+
otlp::OtlpGrpcLogRecordExporterOptions log_opts;
118+
119+
// Setting client_opts, trace_opts and log_opts
120+
// client_opts.endpoint = "localhost:1234";
121+
// Or we can use client_opts = trace_opts; to copy options from environment of
122+
// trace OTLP exporter.
123+
124+
std::shared_ptr<otlp::OtlpGrpcClient> shared_client =
125+
otlp::OtlpGrpcClientFactory::Create(client_opts);
126+
127+
// Create exporters
128+
auto trace_exporter =
129+
otlp::OtlpGrpcExporterFactory::Create(trace_opts, shared_client);
130+
auto log_exporter =
131+
otlp::OtlpGrpcLogRecordExporterFactory::Create(log_opts, shared_client);
132+
133+
// Other initialization codes ...
134+
}
135+
```
136+
137+
Be careful, create OTLP exporters with an existing `OtlpGrpcClient` will ignore
138+
the options of gRPC when passing the `OtlpGrpcExporterOptions` or other option
139+
object.
140+
97141
## SDK extension
98142

99143
Applications owners who want to extend existing SDK classes are expected

examples/batch/main.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "opentelemetry/sdk/trace/batch_span_processor_options.h"
1717
#include "opentelemetry/sdk/trace/exporter.h"
1818
#include "opentelemetry/sdk/trace/processor.h"
19+
#include "opentelemetry/sdk/trace/provider.h"
1920
#include "opentelemetry/sdk/trace/tracer_provider.h"
2021
#include "opentelemetry/sdk/trace/tracer_provider_factory.h"
2122
#include "opentelemetry/trace/provider.h"
@@ -56,13 +57,13 @@ void InitTracer()
5657
trace_sdk::TracerProviderFactory::Create(std::move(processor), resource);
5758

5859
// Set the global trace provider.
59-
trace_api::Provider::SetTracerProvider(provider);
60+
trace_sdk::Provider::SetTracerProvider(provider);
6061
}
6162

6263
void CleanupTracer()
6364
{
6465
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
65-
trace_api::Provider::SetTracerProvider(none);
66+
trace_sdk::Provider::SetTracerProvider(none);
6667
}
6768

6869
opentelemetry::nostd::shared_ptr<trace_api::Tracer> get_tracer()

examples/grpc/tracer_common.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "opentelemetry/nostd/shared_ptr.h"
1010
#include "opentelemetry/sdk/trace/exporter.h"
1111
#include "opentelemetry/sdk/trace/processor.h"
12+
#include "opentelemetry/sdk/trace/provider.h"
1213
#include "opentelemetry/sdk/trace/simple_processor_factory.h"
1314
#include "opentelemetry/sdk/trace/tracer_context.h"
1415
#include "opentelemetry/sdk/trace/tracer_context_factory.h"
@@ -85,7 +86,7 @@ void InitTracer()
8586
std::shared_ptr<opentelemetry::trace::TracerProvider> provider =
8687
opentelemetry::sdk::trace::TracerProviderFactory::Create(std::move(context));
8788
// Set the global trace provider
88-
opentelemetry::trace::Provider::SetTracerProvider(provider);
89+
opentelemetry::sdk::trace::Provider::SetTracerProvider(provider);
8990

9091
// set global propagator
9192
opentelemetry::context::propagation::GlobalTextMapPropagator::SetGlobalPropagator(
@@ -96,7 +97,7 @@ void InitTracer()
9697
void CleanupTracer()
9798
{
9899
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
99-
opentelemetry::trace::Provider::SetTracerProvider(none);
100+
opentelemetry::sdk::trace::Provider::SetTracerProvider(none);
100101
}
101102

102103
opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> get_tracer(std::string tracer_name)

examples/http/tracer_common.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,24 @@
33

44
#pragma once
55

6+
#include <cstring>
7+
#include <iostream>
8+
#include <vector>
9+
10+
#include "opentelemetry/context/propagation/global_propagator.h"
11+
#include "opentelemetry/context/propagation/text_map_propagator.h"
612
#include "opentelemetry/exporters/ostream/span_exporter_factory.h"
13+
#include "opentelemetry/ext/http/client/http_client.h"
14+
#include "opentelemetry/nostd/shared_ptr.h"
715
#include "opentelemetry/sdk/trace/exporter.h"
816
#include "opentelemetry/sdk/trace/processor.h"
17+
#include "opentelemetry/sdk/trace/provider.h"
918
#include "opentelemetry/sdk/trace/simple_processor_factory.h"
1019
#include "opentelemetry/sdk/trace/tracer_context.h"
1120
#include "opentelemetry/sdk/trace/tracer_context_factory.h"
1221
#include "opentelemetry/sdk/trace/tracer_provider_factory.h"
13-
#include "opentelemetry/trace/provider.h"
14-
15-
#include "opentelemetry/context/propagation/global_propagator.h"
16-
#include "opentelemetry/context/propagation/text_map_propagator.h"
1722
#include "opentelemetry/trace/propagation/http_trace_context.h"
18-
19-
#include <cstring>
20-
#include <iostream>
21-
#include <vector>
22-
#include "opentelemetry/ext/http/client/http_client.h"
23-
#include "opentelemetry/nostd/shared_ptr.h"
23+
#include "opentelemetry/trace/provider.h"
2424

2525
namespace
2626
{
@@ -75,7 +75,7 @@ void InitTracer()
7575
std::shared_ptr<opentelemetry::trace::TracerProvider> provider =
7676
opentelemetry::sdk::trace::TracerProviderFactory::Create(std::move(context));
7777
// Set the global trace provider
78-
opentelemetry::trace::Provider::SetTracerProvider(provider);
78+
opentelemetry::sdk::trace::Provider::SetTracerProvider(provider);
7979

8080
// set global propagator
8181
opentelemetry::context::propagation::GlobalTextMapPropagator::SetGlobalPropagator(
@@ -86,7 +86,7 @@ void InitTracer()
8686
void CleanupTracer()
8787
{
8888
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
89-
opentelemetry::trace::Provider::SetTracerProvider(none);
89+
opentelemetry::sdk::trace::Provider::SetTracerProvider(none);
9090
}
9191

9292
opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> get_tracer(std::string tracer_name)

examples/logs_simple/main.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,18 @@
77
#include "opentelemetry/exporters/ostream/log_record_exporter.h"
88
#include "opentelemetry/exporters/ostream/span_exporter_factory.h"
99
#include "opentelemetry/logs/logger_provider.h"
10-
#include "opentelemetry/logs/provider.h"
1110
#include "opentelemetry/sdk/logs/exporter.h"
1211
#include "opentelemetry/sdk/logs/logger_provider.h"
1312
#include "opentelemetry/sdk/logs/logger_provider_factory.h"
1413
#include "opentelemetry/sdk/logs/processor.h"
14+
#include "opentelemetry/sdk/logs/provider.h"
1515
#include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h"
1616
#include "opentelemetry/sdk/trace/exporter.h"
1717
#include "opentelemetry/sdk/trace/processor.h"
18+
#include "opentelemetry/sdk/trace/provider.h"
1819
#include "opentelemetry/sdk/trace/simple_processor_factory.h"
1920
#include "opentelemetry/sdk/trace/tracer_provider.h"
2021
#include "opentelemetry/sdk/trace/tracer_provider_factory.h"
21-
#include "opentelemetry/trace/provider.h"
2222
#include "opentelemetry/trace/tracer_provider.h"
2323

2424
#ifdef BAZEL_BUILD
@@ -48,13 +48,13 @@ void InitTracer()
4848

4949
// Set the global trace provider
5050
const std::shared_ptr<trace_api::TracerProvider> &api_provider = sdk_provider;
51-
trace_api::Provider::SetTracerProvider(api_provider);
51+
trace_sdk::Provider::SetTracerProvider(api_provider);
5252
}
5353

5454
void CleanupTracer()
5555
{
5656
std::shared_ptr<trace_api::TracerProvider> noop;
57-
trace_api::Provider::SetTracerProvider(noop);
57+
trace_sdk::Provider::SetTracerProvider(noop);
5858
}
5959

6060
void InitLogger()
@@ -69,13 +69,13 @@ void InitLogger()
6969

7070
// Set the global logger provider
7171
const std::shared_ptr<logs_api::LoggerProvider> &api_provider = sdk_provider;
72-
logs_api::Provider::SetLoggerProvider(api_provider);
72+
logs_sdk::Provider::SetLoggerProvider(api_provider);
7373
}
7474

7575
void CleanupLogger()
7676
{
7777
std::shared_ptr<logs_api::LoggerProvider> noop;
78-
logs_api::Provider::SetLoggerProvider(noop);
78+
logs_sdk::Provider::SetLoggerProvider(noop);
7979
}
8080

8181
} // namespace

0 commit comments

Comments
 (0)