Skip to content
Merged
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,9 @@ Increment the:
* [CODE HEALTH] Fix clang-tidy misc-override-with-different-visibility warnings
[#4215](https://github.com/open-telemetry/opentelemetry-cpp/pull/4215)

* [CODE HEALTH] Fix clang-tidy `bugprone-throwing-static-initialization` warnings
[#4206](https://github.com/open-telemetry/opentelemetry-cpp/pull/4206)

## [1.27.0] 2026-05-13

* [RELEASE] Bump main branch to 1.27.0-dev
Expand Down
2 changes: 1 addition & 1 deletion api/include/opentelemetry/baggage/baggage_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ OPENTELEMETRY_BEGIN_NAMESPACE
namespace baggage
{

static const std::string kBaggageHeader = "baggage";
constexpr char kBaggageHeader[] = "baggage";

inline nostd::shared_ptr<Baggage> GetBaggage(const context::Context &context) noexcept
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ std::false_type is_key_value_iterable_impl(...);
template <class T>
struct is_key_value_iterable
{
static const bool value = decltype(detail::is_key_value_iterable_impl(std::declval<T>()))::value;
static constexpr bool value =
decltype(detail::is_key_value_iterable_impl(std::declval<T>()))::value;
};
} // namespace detail

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ std::false_type is_span_context_kv_iterable_impl(...);
template <class T>
struct is_span_context_kv_iterable
{
static const bool value =
static constexpr bool value =
decltype(detail::is_span_context_kv_iterable_impl(std::declval<T>()))::value;
};
} // namespace detail
Expand Down
22 changes: 11 additions & 11 deletions api/test/baggage/propagation/baggage_propagator_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -77,21 +77,21 @@ TEST(BaggagePropagatorTest, ExtractAndInjectBaggage)
for (const auto &baggage : baggages)
{
BaggageCarrierTest carrier1;
carrier1.headers_[baggage::kBaggageHeader.data()] = baggage.first;
context::Context ctx1 = context::Context{};
context::Context ctx2 = format.Extract(carrier1, ctx1);
carrier1.headers_[baggage::kBaggageHeader] = baggage.first;
context::Context ctx1 = context::Context{};
context::Context ctx2 = format.Extract(carrier1, ctx1);

BaggageCarrierTest carrier2;
format.Inject(carrier2, ctx2);
EXPECT_EQ(carrier2.headers_[baggage::kBaggageHeader.data()], baggage.second);
EXPECT_EQ(carrier2.headers_[baggage::kBaggageHeader], baggage.second);

std::vector<std::string> fields;
format.Fields([&fields](nostd::string_view field) {
fields.push_back(field.data());
return true;
});
EXPECT_EQ(fields.size(), 1);
EXPECT_EQ(fields[0], baggage::kBaggageHeader.data());
EXPECT_EQ(fields[0], baggage::kBaggageHeader);
}
}

Expand All @@ -106,18 +106,18 @@ TEST(BaggagePropagatorTest, InjectEmptyHeader)
{
// Test empty baggage in context
BaggageCarrierTest carrier1;
carrier1.headers_[baggage::kBaggageHeader.data()] = "";
context::Context ctx1 = context::Context{};
context::Context ctx2 = format.Extract(carrier1, ctx1);
carrier1.headers_[baggage::kBaggageHeader] = "";
context::Context ctx1 = context::Context{};
context::Context ctx2 = format.Extract(carrier1, ctx1);
format.Inject(carrier, ctx2);
EXPECT_EQ(carrier.headers_.find(baggage::kBaggageHeader), carrier.headers_.end());
}
{
// Invalid baggage in context
BaggageCarrierTest carrier1;
carrier1.headers_[baggage::kBaggageHeader.data()] = "InvalidBaggageData";
context::Context ctx1 = context::Context{};
context::Context ctx2 = format.Extract(carrier1, ctx1);
carrier1.headers_[baggage::kBaggageHeader] = "InvalidBaggageData";
context::Context ctx1 = context::Context{};
context::Context ctx2 = format.Extract(carrier1, ctx1);

format.Inject(carrier, ctx2);
EXPECT_EQ(carrier.headers_.find(baggage::kBaggageHeader), carrier.headers_.end());
Expand Down
10 changes: 5 additions & 5 deletions examples/configuration/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@
# include "opentelemetry/exporters/prometheus/prometheus_pull_builder.h"
#endif

static bool opt_help = false;
static bool opt_debug = false;
static bool opt_test = false;
static bool opt_no_registry = false;
static std::string yaml_file_path = "";
static bool opt_help = false;
static bool opt_debug = false;
static bool opt_test = false;
static bool opt_no_registry = false;
static std::string yaml_file_path;

static std::unique_ptr<opentelemetry::sdk::configuration::ConfiguredSdk> sdk;

Expand Down
13 changes: 6 additions & 7 deletions examples/otlp/file_log_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,10 @@ namespace trace_sdk = opentelemetry::sdk::trace;

namespace
{
opentelemetry::exporter::otlp::OtlpFileExporterOptions opts;
opentelemetry::exporter::otlp::OtlpFileLogRecordExporterOptions log_opts;

std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> tracer_provider;
std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> logger_provider;

void InitTracer()
void InitTracer(const otlp::OtlpFileExporterOptions &opts)
{
// Create OTLP exporter instance
auto exporter = otlp::OtlpFileExporterFactory::Create(opts);
Expand All @@ -72,7 +69,7 @@ void CleanupTracer()
trace_sdk::Provider::SetTracerProvider(none);
}

void InitLogger()
void InitLogger(const otlp::OtlpFileLogRecordExporterOptions &log_opts)
{
// Create OTLP exporter instance
auto exporter = otlp::OtlpFileLogRecordExporterFactory::Create(log_opts);
Expand All @@ -99,6 +96,8 @@ void CleanupLogger()

int main(int argc, char *argv[])
{
otlp::OtlpFileExporterOptions opts;
otlp::OtlpFileLogRecordExporterOptions log_opts;
if (argc > 1)
{
opentelemetry::exporter::otlp::OtlpFileClientFileSystemOptions fs_backend;
Expand All @@ -119,8 +118,8 @@ int main(int argc, char *argv[])
{
opts.backend_options = std::ref(std::cout);
}
InitLogger();
InitTracer();
InitLogger(log_opts);
InitTracer(opts);
foo_library();
CleanupTracer();
CleanupLogger();
Expand Down
7 changes: 3 additions & 4 deletions examples/otlp/file_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,9 @@ namespace otlp = opentelemetry::exporter::otlp;

namespace
{
opentelemetry::exporter::otlp::OtlpFileExporterOptions opts;

std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> provider;

void InitTracer()
void InitTracer(const otlp::OtlpFileExporterOptions &opts)
{
// Create OTLP exporter instance
auto exporter = otlp::OtlpFileExporterFactory::Create(opts);
Expand Down Expand Up @@ -59,14 +57,15 @@ void CleanupTracer()

int main(int argc, char *argv[])
{
otlp::OtlpFileExporterOptions opts;
if (argc > 1)
{
opentelemetry::exporter::otlp::OtlpFileClientFileSystemOptions fs_backend;
fs_backend.file_pattern = argv[1];
opts.backend_options = fs_backend;
}
// Removing this line will leave the default noop TracerProvider in place.
InitTracer();
InitTracer(opts);

foo_library();

Expand Down
7 changes: 3 additions & 4 deletions examples/otlp/file_metric_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,7 @@ namespace otlp_exporter = opentelemetry::exporter::otlp;
namespace
{

otlp_exporter::OtlpFileMetricExporterOptions exporter_options;

void InitMetrics()
void InitMetrics(const otlp_exporter::OtlpFileMetricExporterOptions &exporter_options)
{
auto exporter = otlp_exporter::OtlpFileMetricExporterFactory::Create(exporter_options);

Expand Down Expand Up @@ -66,6 +64,7 @@ void CleanupMetrics()

int main(int argc, char *argv[])
{
otlp_exporter::OtlpFileMetricExporterOptions exporter_options;
std::string example_type;
if (argc > 1)
{
Expand All @@ -78,7 +77,7 @@ int main(int argc, char *argv[])
}
}
// Removing this line will leave the default noop MetricProvider in place.
InitMetrics();
InitMetrics(exporter_options);
std::string name{"otlp_file_metric_example"};

if (example_type == "counter")
Expand Down
15 changes: 8 additions & 7 deletions examples/otlp/grpc_log_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,11 @@ namespace trace_sdk = opentelemetry::sdk::trace;

namespace
{
opentelemetry::exporter::otlp::OtlpGrpcExporterOptions opts;
opentelemetry::exporter::otlp::OtlpGrpcLogRecordExporterOptions log_opts;

std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> tracer_provider;
std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> logger_provider;

void InitTracer(const std::shared_ptr<otlp::OtlpGrpcClient> &shared_client)
void InitTracer(const otlp::OtlpGrpcExporterOptions &opts,
const std::shared_ptr<otlp::OtlpGrpcClient> &shared_client)
{
// Create OTLP exporter instance
auto exporter = otlp::OtlpGrpcExporterFactory::Create(opts, shared_client);
Expand All @@ -70,7 +68,8 @@ void CleanupTracer()
trace_sdk::Provider::SetTracerProvider(none);
}

void InitLogger(const std::shared_ptr<otlp::OtlpGrpcClient> &shared_client)
void InitLogger(const otlp::OtlpGrpcLogRecordExporterOptions &log_opts,
const std::shared_ptr<otlp::OtlpGrpcClient> &shared_client)
{
// Create OTLP exporter instance
auto exporter = otlp::OtlpGrpcLogRecordExporterFactory::Create(log_opts, shared_client);
Expand Down Expand Up @@ -98,6 +97,8 @@ void CleanupLogger()

int main(int argc, char *argv[])
{
otlp::OtlpGrpcExporterOptions opts;
otlp::OtlpGrpcLogRecordExporterOptions log_opts;
if (argc > 1)
{
opts.endpoint = argv[1];
Expand All @@ -113,8 +114,8 @@ int main(int argc, char *argv[])

std::shared_ptr<otlp::OtlpGrpcClient> shared_client = otlp::OtlpGrpcClientFactory::Create(opts);

InitLogger(shared_client);
InitTracer(shared_client);
InitLogger(log_opts, shared_client);
InitTracer(opts, shared_client);
foo_library();
CleanupTracer();
CleanupLogger();
Expand Down
7 changes: 3 additions & 4 deletions examples/otlp/grpc_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,9 @@ namespace otlp = opentelemetry::exporter::otlp;

namespace
{
opentelemetry::exporter::otlp::OtlpGrpcExporterOptions opts;

std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> provider;

void InitTracer()
void InitTracer(const otlp::OtlpGrpcExporterOptions &opts)
{
// Create OTLP exporter instance
auto exporter = otlp::OtlpGrpcExporterFactory::Create(opts);
Expand Down Expand Up @@ -58,6 +56,7 @@ void CleanupTracer()

int main(int argc, char *argv[])
{
otlp::OtlpGrpcExporterOptions opts;
if (argc > 1)
{
opts.endpoint = argv[1];
Expand All @@ -68,7 +67,7 @@ int main(int argc, char *argv[])
}
}
// Removing this line will leave the default noop TracerProvider in place.
InitTracer();
InitTracer(opts);

foo_library();

Expand Down
8 changes: 4 additions & 4 deletions examples/otlp/grpc_metric_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,8 @@ namespace otlp_exporter = opentelemetry::exporter::otlp;
namespace
{

otlp_exporter::OtlpGrpcMetricExporterOptions exporter_options;

void InitMetrics(std::string &name)
void InitMetrics(const otlp_exporter::OtlpGrpcMetricExporterOptions &exporter_options,
std::string &name)
{
auto exporter = otlp_exporter::OtlpGrpcMetricExporterFactory::Create(exporter_options);

Expand Down Expand Up @@ -100,6 +99,7 @@ void CleanupMetrics()

int main(int argc, char *argv[])
{
otlp_exporter::OtlpGrpcMetricExporterOptions exporter_options;
std::string example_type;
if (argc > 1)
{
Expand All @@ -123,7 +123,7 @@ int main(int argc, char *argv[])

std::string name{"otlp_grpc_metric_example"};

InitMetrics(name);
InitMetrics(exporter_options, name);

if (example_type == "counter")
{
Expand Down
19 changes: 9 additions & 10 deletions examples/otlp/http_instrumented_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -152,15 +152,11 @@ class MyThreadInstrumentation : public opentelemetry::sdk::common::ThreadInstrum

#endif /* ENABLE_THREAD_INSTRUMENTATION_PREVIEW */

opentelemetry::exporter::otlp::OtlpHttpExporterOptions tracer_opts;
opentelemetry::exporter::otlp::OtlpHttpMetricExporterOptions meter_opts;
opentelemetry::exporter::otlp::OtlpHttpLogRecordExporterOptions logger_opts;

std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> tracer_provider;
std::shared_ptr<opentelemetry::sdk::metrics::MeterProvider> meter_provider;
std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> logger_provider;

void InitTracer()
void InitTracer(const opentelemetry::exporter::otlp::OtlpHttpExporterOptions &tracer_opts)
{
// Create OTLP exporter instance
opentelemetry::exporter::otlp::OtlpHttpExporterRuntimeOptions exp_rt_opts;
Expand Down Expand Up @@ -205,7 +201,7 @@ void CleanupTracer()
opentelemetry::sdk::trace::Provider::SetTracerProvider(none);
}

void InitMetrics()
void InitMetrics(const opentelemetry::exporter::otlp::OtlpHttpMetricExporterOptions &meter_opts)
{
// Create OTLP exporter instance
opentelemetry::exporter::otlp::OtlpHttpMetricExporterRuntimeOptions exp_rt_opts;
Expand Down Expand Up @@ -254,7 +250,7 @@ void CleanupMetrics()
opentelemetry::sdk::metrics::Provider::SetMeterProvider(none);
}

void InitLogger()
void InitLogger(const opentelemetry::exporter::otlp::OtlpHttpLogRecordExporterOptions &logger_opts)
{
// Create OTLP exporter instance
opentelemetry::exporter::otlp::OtlpHttpLogRecordExporterRuntimeOptions exp_rt_opts;
Expand Down Expand Up @@ -306,6 +302,9 @@ void CleanupLogger()
*/
int main(int argc, char *argv[])
{
opentelemetry::exporter::otlp::OtlpHttpExporterOptions tracer_opts;
opentelemetry::exporter::otlp::OtlpHttpMetricExporterOptions meter_opts;
opentelemetry::exporter::otlp::OtlpHttpLogRecordExporterOptions logger_opts;
if (argc > 1)
{
tracer_opts.url = argv[1];
Expand Down Expand Up @@ -335,9 +334,9 @@ int main(int argc, char *argv[])

std::cout << "Initializing opentelemetry-cpp\n" << std::flush;

InitTracer();
InitMetrics();
InitLogger();
InitTracer(tracer_opts);
InitMetrics(meter_opts);
InitLogger(logger_opts);

std::cout << "Application payload\n" << std::flush;

Expand Down
Loading
Loading