Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
WIP
  • Loading branch information
marcalff committed May 8, 2024
commit 88abccae3921f29ace34efa4f17073d6841f4ef0
4 changes: 4 additions & 0 deletions api/include/opentelemetry/plugin/tracer.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ class Tracer final : public trace::Tracer, public std::enable_shared_from_this<T
return nostd::shared_ptr<trace::Span>{new (std::nothrow) Span{this->shared_from_this(), span}};
}

#if OPENTELEMETRY_ABI_VERSION_NO == 1

void ForceFlushWithMicroseconds(uint64_t timeout) noexcept override
{
tracer_handle_->tracer().ForceFlushWithMicroseconds(timeout);
Expand All @@ -114,6 +116,8 @@ class Tracer final : public trace::Tracer, public std::enable_shared_from_this<T
tracer_handle_->tracer().CloseWithMicroseconds(timeout);
}

#endif /* OPENTELEMETRY_ABI_VERSION_NO */

private:
// Note: The order is important here.
//
Expand Down
4 changes: 4 additions & 0 deletions api/include/opentelemetry/trace/noop.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,13 @@ class OPENTELEMETRY_EXPORT NoopTracer final : public Tracer,
return noop_span;
}

#if OPENTELEMETRY_ABI_VERSION_NO == 1

void ForceFlushWithMicroseconds(uint64_t /*timeout*/) noexcept override {}

void CloseWithMicroseconds(uint64_t /*timeout*/) noexcept override {}

#endif /* OPENTELEMETRY_ABI_VERSION_NO */
};

/**
Expand Down
9 changes: 9 additions & 0 deletions api/include/opentelemetry/trace/tracer.h
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,13 @@ class Tracer
}
}

#if OPENTELEMETRY_ABI_VERSION_NO == 1

/*
* The following is removed from the API in ABI version 2.
* It belongs to the SDK.
*/

/**
* Force any buffered spans to flush.
* @param timeout to complete the flush
Expand All @@ -188,6 +195,8 @@ class Tracer
}

virtual void CloseWithMicroseconds(uint64_t timeout) noexcept = 0;

#endif /* OPENTELEMETRY_ABI_VERSION_NO */
};
} // namespace trace
OPENTELEMETRY_END_NAMESPACE
4 changes: 4 additions & 0 deletions api/test/singleton/singleton_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -250,9 +250,13 @@ class MyTracer : public trace::Tracer
return result;
}

#if OPENTELEMETRY_ABI_VERSION_NO == 1

void ForceFlushWithMicroseconds(uint64_t /* timeout */) noexcept override {}

void CloseWithMicroseconds(uint64_t /* timeout */) noexcept override {}

#endif /* OPENTELEMETRY_ABI_VERSION_NO */
};

class MyTracerProvider : public trace::TracerProvider
Expand Down
14 changes: 7 additions & 7 deletions examples/otlp/file_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,25 +28,25 @@ namespace otlp = opentelemetry::exporter::otlp;
namespace
{
opentelemetry::exporter::otlp::OtlpFileExporterOptions opts;

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

void InitTracer()
{
// Create OTLP exporter instance
auto exporter = otlp::OtlpFileExporterFactory::Create(opts);
auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
std::shared_ptr<opentelemetry::trace::TracerProvider> provider =
trace_sdk::TracerProviderFactory::Create(std::move(processor));
sdk_provider = trace_sdk::TracerProviderFactory::Create(std::move(processor));
// Set the global trace provider
trace::Provider::SetTracerProvider(provider);
trace::Provider::SetTracerProvider(sdk_provider);
}

void CleanupTracer()
{
// We call ForceFlush to prevent to cancel running exportings, It's optional.
opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider> provider =
trace::Provider::GetTracerProvider();
if (provider)
if (sdk_provider)
{
static_cast<trace_sdk::TracerProvider *>(provider.get())->ForceFlush();
sdk_provider->ForceFlush(std::chrono::milliseconds(10000));
}

std::shared_ptr<opentelemetry::trace::TracerProvider> none;
Expand Down
19 changes: 13 additions & 6 deletions examples/otlp/grpc_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
#include "opentelemetry/sdk/trace/processor.h"
#include "opentelemetry/sdk/trace/simple_processor_factory.h"
#include "opentelemetry/sdk/trace/tracer_provider_factory.h"
#include "opentelemetry/sdk/trace/tracer_provider.h"
#include "opentelemetry/trace/tracer_provider.h"
#include "opentelemetry/trace/provider.h"
#include "opentelemetry/nostd/shared_ptr.h"

// sdk::TracerProvider is just used to call ForceFlush and prevent to cancel running exportings when
// destroy and shutdown exporters.It's optional to users.
Expand All @@ -24,25 +27,29 @@ namespace otlp = opentelemetry::exporter::otlp;
namespace
{
opentelemetry::exporter::otlp::OtlpGrpcExporterOptions opts;

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

void InitTracer()
{
// Create OTLP exporter instance
auto exporter = otlp::OtlpGrpcExporterFactory::Create(opts);
auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
std::shared_ptr<opentelemetry::trace::TracerProvider> provider =
sdk_provider =
trace_sdk::TracerProviderFactory::Create(std::move(processor));

std::shared_ptr<opentelemetry::trace::TracerProvider> api_provider ( sdk_provider );
// Set the global trace provider
trace::Provider::SetTracerProvider(provider);
trace::Provider::SetTracerProvider(api_provider);
}

void CleanupTracer()
{
// We call ForceFlush to prevent to cancel running exportings, It's optional.
opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider> provider =
trace::Provider::GetTracerProvider();
if (provider)
if (sdk_provider)
{
static_cast<trace_sdk::TracerProvider *>(provider.get())->ForceFlush();
sdk_provider->ForceFlush();
sdk_provider = nullptr;
}

std::shared_ptr<opentelemetry::trace::TracerProvider> none;
Expand Down
4 changes: 4 additions & 0 deletions examples/plugin/plugin/tracer.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@ class Tracer final : public opentelemetry::trace::Tracer,
const opentelemetry::trace::SpanContextKeyValueIterable & /*links*/,
const opentelemetry::trace::StartSpanOptions & /*options */) noexcept override;

#if OPENTELEMETRY_ABI_VERSION_NO == 1

void ForceFlushWithMicroseconds(uint64_t /*timeout*/) noexcept override {}

void CloseWithMicroseconds(uint64_t /*timeout*/) noexcept override {}

#endif /* OPENTELEMETRY_ABI_VERSION_NO */
};
2 changes: 1 addition & 1 deletion exporters/otlp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ if(BUILD_TESTING)
target_link_libraries(
otlp_file_client_test ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}
${GMOCK_LIB} opentelemetry_exporter_otlp_file
opentelemetry_otlp_recordable)
opentelemetry_otlp_recordable nlohmann_json::nlohmann_json)
gtest_add_tests(
TARGET otlp_file_client_test
TEST_PREFIX exporter.otlp.
Expand Down
4 changes: 2 additions & 2 deletions exporters/otlp/test/otlp_file_exporter_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ class OtlpFileExporterTestPeer : public ::testing::Test

auto processor = std::unique_ptr<sdk::trace::SpanProcessor>(
new sdk::trace::BatchSpanProcessor(std::move(exporter), processor_opts));
auto provider = nostd::shared_ptr<trace::TracerProvider>(
auto provider = nostd::shared_ptr<sdk::trace::TracerProvider>(
new sdk::trace::TracerProvider(std::move(processor), resource));

std::string report_trace_id;
Expand All @@ -110,7 +110,7 @@ class OtlpFileExporterTestPeer : public ::testing::Test
child_span->End();
parent_span->End();

static_cast<sdk::trace::TracerProvider *>(provider.get())->ForceFlush();
provider->ForceFlush();

{
auto check_json = nlohmann::json::parse(output.str(), nullptr, false);
Expand Down
4 changes: 2 additions & 2 deletions exporters/otlp/test/otlp_grpc_log_record_exporter_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ TEST_F(OtlpGrpcLogRecordExporterTestPeer, ExportIntegrationTest)
std::unique_ptr<proto::collector::trace::v1::TraceService::StubInterface> trace_stub_interface(
trace_mock_stub);

auto trace_provider = opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider>(
auto trace_provider = opentelemetry::nostd::shared_ptr<opentelemetry::sdk::trace::TracerProvider>(
opentelemetry::sdk::trace::TracerProviderFactory::Create(
opentelemetry::sdk::trace::SimpleSpanProcessorFactory::Create(
GetExporter(trace_stub_interface))));
Expand Down Expand Up @@ -331,7 +331,7 @@ TEST_F(OtlpGrpcLogRecordExporterTestPeer, ExportIntegrationTest)
opentelemetry::trace::Provider::SetTracerProvider(
opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider>(
new opentelemetry::trace::NoopTracerProvider()));
trace_provider = opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider>();
trace_provider = opentelemetry::nostd::shared_ptr<opentelemetry::sdk::trace::TracerProvider>();
}

} // namespace otlp
Expand Down
16 changes: 8 additions & 8 deletions exporters/otlp/test/otlp_http_exporter_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ class OtlpHttpExporterTestPeer : public ::testing::Test

auto processor = std::unique_ptr<sdk::trace::SpanProcessor>(
new sdk::trace::BatchSpanProcessor(std::move(exporter), processor_opts));
auto provider = nostd::shared_ptr<trace::TracerProvider>(
auto provider = nostd::shared_ptr<sdk::trace::TracerProvider>(
new sdk::trace::TracerProvider(std::move(processor), resource));

std::string report_trace_id;
Expand Down Expand Up @@ -190,7 +190,7 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
child_span->End();
parent_span->End();

static_cast<sdk::trace::TracerProvider *>(provider.get())->ForceFlush();
provider->ForceFlush();
}

# ifdef ENABLE_ASYNC_EXPORT
Expand Down Expand Up @@ -226,7 +226,7 @@ class OtlpHttpExporterTestPeer : public ::testing::Test

auto processor = std::unique_ptr<sdk::trace::SpanProcessor>(
new sdk::trace::BatchSpanProcessor(std::move(exporter), processor_opts));
auto provider = nostd::shared_ptr<trace::TracerProvider>(
auto provider = nostd::shared_ptr<sdk::trace::TracerProvider>(
new sdk::trace::TracerProvider(std::move(processor), resource));

std::string report_trace_id;
Expand Down Expand Up @@ -285,7 +285,7 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
child_span->End();
parent_span->End();

static_cast<sdk::trace::TracerProvider *>(provider.get())->ForceFlush();
provider->ForceFlush();
}
# endif

Expand Down Expand Up @@ -321,7 +321,7 @@ class OtlpHttpExporterTestPeer : public ::testing::Test

auto processor = std::unique_ptr<sdk::trace::SpanProcessor>(
new sdk::trace::BatchSpanProcessor(std::move(exporter), processor_opts));
auto provider = nostd::shared_ptr<trace::TracerProvider>(
auto provider = nostd::shared_ptr<sdk::trace::TracerProvider>(
new sdk::trace::TracerProvider(std::move(processor), resource));

std::string report_trace_id;
Expand Down Expand Up @@ -366,7 +366,7 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
child_span->End();
parent_span->End();

static_cast<sdk::trace::TracerProvider *>(provider.get())->ForceFlush();
provider->ForceFlush();
}

# ifdef ENABLE_ASYNC_EXPORT
Expand Down Expand Up @@ -402,7 +402,7 @@ class OtlpHttpExporterTestPeer : public ::testing::Test

auto processor = std::unique_ptr<sdk::trace::SpanProcessor>(
new sdk::trace::BatchSpanProcessor(std::move(exporter), processor_opts));
auto provider = nostd::shared_ptr<trace::TracerProvider>(
auto provider = nostd::shared_ptr<sdk::trace::TracerProvider>(
new sdk::trace::TracerProvider(std::move(processor), resource));

std::string report_trace_id;
Expand Down Expand Up @@ -452,7 +452,7 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
child_span->End();
parent_span->End();

static_cast<sdk::trace::TracerProvider *>(provider.get())->ForceFlush();
provider->ForceFlush();
}
# endif
};
Expand Down
2 changes: 0 additions & 2 deletions functional/otlp/func_http_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,6 @@ void payload()
auto span = tracer->StartSpan(k_span_name);
span->SetAttribute(k_attr_test_name, opt_test_name);
span->End();

tracer->ForceFlushWithMicroseconds(1000000);
}

void cleanup()
Expand Down
29 changes: 29 additions & 0 deletions sdk/include/opentelemetry/sdk/trace/tracer.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,38 @@ class Tracer final : public opentelemetry::trace::Tracer,
const opentelemetry::trace::SpanContextKeyValueIterable &links,
const opentelemetry::trace::StartSpanOptions &options = {}) noexcept override;

#if OPENTELEMETRY_ABI_VERSION_NO >= 2
/**
* Force any buffered spans to flush.
* @param timeout to complete the flush
*/
template <class Rep, class Period>
void ForceFlush(std::chrono::duration<Rep, Period> timeout) noexcept
{
this->ForceFlushWithMicroseconds(static_cast<uint64_t>(
std::chrono::duration_cast<std::chrono::microseconds>(timeout).count()));
}

void ForceFlushWithMicroseconds(uint64_t timeout) noexcept;

/**
* ForceFlush any buffered spans and stop reporting spans.
* @param timeout to complete the flush
*/
template <class Rep, class Period>
void Close(std::chrono::duration<Rep, Period> timeout) noexcept
{
this->CloseWithMicroseconds(static_cast<uint64_t>(
std::chrono::duration_cast<std::chrono::microseconds>(timeout).count()));
}

void CloseWithMicroseconds(uint64_t timeout) noexcept;
#else
/* Exposed in the API in ABI version 1, but does not belong to the API */
void ForceFlushWithMicroseconds(uint64_t timeout) noexcept override;

void CloseWithMicroseconds(uint64_t timeout) noexcept override;
#endif

/** Returns the configured span processor. */
SpanProcessor &GetProcessor() noexcept { return context_->GetProcessor(); }
Expand Down
24 changes: 10 additions & 14 deletions sdk/include/opentelemetry/sdk/trace/tracer_provider_factory.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,10 @@
#include <memory>
#include <vector>

#include "opentelemetry/sdk/trace/tracer_provider.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace trace
{
class TracerProvider;
} // namespace trace

namespace sdk
{
namespace resource
Expand All @@ -37,47 +33,47 @@ class OPENTELEMETRY_EXPORT TracerProviderFactory
public:
/* Serie of builders with a single processor. */

static std::unique_ptr<opentelemetry::trace::TracerProvider> Create(
static std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> Create(
std::unique_ptr<SpanProcessor> processor);

static std::unique_ptr<opentelemetry::trace::TracerProvider> Create(
static std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> Create(
std::unique_ptr<SpanProcessor> processor,
const opentelemetry::sdk::resource::Resource &resource);

static std::unique_ptr<opentelemetry::trace::TracerProvider> Create(
static std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> Create(
std::unique_ptr<SpanProcessor> processor,
const opentelemetry::sdk::resource::Resource &resource,
std::unique_ptr<Sampler> sampler);

static std::unique_ptr<opentelemetry::trace::TracerProvider> Create(
static std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> Create(
std::unique_ptr<SpanProcessor> processor,
const opentelemetry::sdk::resource::Resource &resource,
std::unique_ptr<Sampler> sampler,
std::unique_ptr<IdGenerator> id_generator);

/* Serie of builders with a vector of processor. */

static std::unique_ptr<opentelemetry::trace::TracerProvider> Create(
static std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> Create(
std::vector<std::unique_ptr<SpanProcessor>> &&processors);

static std::unique_ptr<opentelemetry::trace::TracerProvider> Create(
static std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> Create(
std::vector<std::unique_ptr<SpanProcessor>> &&processors,
const opentelemetry::sdk::resource::Resource &resource);

static std::unique_ptr<opentelemetry::trace::TracerProvider> Create(
static std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> Create(
std::vector<std::unique_ptr<SpanProcessor>> &&processors,
const opentelemetry::sdk::resource::Resource &resource,
std::unique_ptr<Sampler> sampler);

static std::unique_ptr<opentelemetry::trace::TracerProvider> Create(
static std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> Create(
std::vector<std::unique_ptr<SpanProcessor>> &&processors,
const opentelemetry::sdk::resource::Resource &resource,
std::unique_ptr<Sampler> sampler,
std::unique_ptr<IdGenerator> id_generator);

/* Create with a tracer context. */

static std::unique_ptr<opentelemetry::trace::TracerProvider> Create(
static std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> Create(
std::unique_ptr<TracerContext> context);
};

Expand Down
Loading