Skip to content

Commit

Permalink
zPages: Switching from using SpanData to custom recordable created fo…
Browse files Browse the repository at this point in the history
…r zPages (open-telemetry#220)
  • Loading branch information
kmanghat committed Aug 4, 2020
1 parent f0789be commit 8a02381
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 16 deletions.
9 changes: 4 additions & 5 deletions ext/include/opentelemetry/ext/zpages/tracez_processor.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
#include <utility>
#include <vector>

#include "opentelemetry/ext/zpages/threadsafe_span_data.h"
#include "opentelemetry/sdk/trace/processor.h"
#include "opentelemetry/sdk/trace/recordable.h"
#include "opentelemetry/sdk/trace/span_data.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace ext
Expand All @@ -25,8 +25,8 @@ class TracezSpanProcessor : public opentelemetry::sdk::trace::SpanProcessor
public:
struct CollectedSpans
{
std::unordered_set<opentelemetry::sdk::trace::SpanData *> running;
std::vector<std::unique_ptr<opentelemetry::sdk::trace::SpanData>> completed;
std::unordered_set<ThreadsafeSpanData *> running;
std::vector<std::unique_ptr<ThreadsafeSpanData>> completed;
};

/*
Expand All @@ -40,8 +40,7 @@ class TracezSpanProcessor : public opentelemetry::sdk::trace::SpanProcessor
*/
std::unique_ptr<opentelemetry::sdk::trace::Recordable> MakeRecordable() noexcept override
{
return std::unique_ptr<opentelemetry::sdk::trace::Recordable>(
new opentelemetry::sdk::trace::SpanData);
return std::unique_ptr<opentelemetry::sdk::trace::Recordable>(new ThreadsafeSpanData);
}

/*
Expand Down
8 changes: 4 additions & 4 deletions ext/src/zpages/tracez_processor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,22 @@ namespace zpages
void TracezSpanProcessor::OnStart(opentelemetry::sdk::trace::Recordable &span) noexcept
{
std::lock_guard<std::mutex> lock(mtx_);
spans_.running.insert(static_cast<opentelemetry::sdk::trace::SpanData *>(&span));
spans_.running.insert(static_cast<ThreadsafeSpanData *>(&span));
}

void TracezSpanProcessor::OnEnd(
std::unique_ptr<opentelemetry::sdk::trace::Recordable> &&span) noexcept
{
if (span == nullptr)
return;
auto span_raw = static_cast<opentelemetry::sdk::trace::SpanData *>(span.get());
auto span_raw = static_cast<ThreadsafeSpanData *>(span.get());
std::lock_guard<std::mutex> lock(mtx_);
auto span_it = spans_.running.find(span_raw);
if (span_it != spans_.running.end())
{
spans_.running.erase(span_it);
spans_.completed.push_back(std::unique_ptr<opentelemetry::sdk::trace::SpanData>(
static_cast<opentelemetry::sdk::trace::SpanData *>(span.release())));
spans_.completed.push_back(
std::unique_ptr<ThreadsafeSpanData>(static_cast<ThreadsafeSpanData *>(span.release())));
}
}

Expand Down
14 changes: 7 additions & 7 deletions ext/test/zpages/tracez_processor_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

#include <thread>

#include "opentelemetry/ext/zpages/threadsafe_span_data.h"
#include "opentelemetry/nostd/span.h"
#include "opentelemetry/sdk/trace/span_data.h"
#include "opentelemetry/sdk/trace/tracer.h"

using namespace opentelemetry::sdk::trace;
Expand All @@ -18,8 +18,8 @@ using namespace opentelemetry::ext::zpages;
* and running_spans. completed_spans contains all spans (cumulative), unless marked otherwise
*/
void UpdateSpans(std::shared_ptr<TracezSpanProcessor> &processor,
std::vector<std::unique_ptr<opentelemetry::sdk::trace::SpanData>> &completed,
std::unordered_set<opentelemetry::sdk::trace::SpanData *> &running,
std::vector<std::unique_ptr<ThreadsafeSpanData>> &completed,
std::unordered_set<ThreadsafeSpanData *> &running,
bool store_only_new_completed = false)
{
auto spans = processor->GetSpanSnapshot();
Expand Down Expand Up @@ -47,7 +47,7 @@ void UpdateSpans(std::shared_ptr<TracezSpanProcessor> &processor,
* no more or less
*/
bool ContainsNames(const std::vector<std::string> &names,
std::unordered_set<opentelemetry::sdk::trace::SpanData *> &running,
std::unordered_set<ThreadsafeSpanData *> &running,
unsigned int name_start = 0,
unsigned int name_end = 0,
bool one_to_one_correspondence = false)
Expand Down Expand Up @@ -95,7 +95,7 @@ bool ContainsNames(const std::vector<std::string> &names,
* no more or less
*/
bool ContainsNames(const std::vector<std::string> &names,
std::vector<std::unique_ptr<opentelemetry::sdk::trace::SpanData>> &completed,
std::vector<std::unique_ptr<ThreadsafeSpanData>> &completed,
unsigned int name_start = 0,
unsigned int name_end = 0,
bool one_to_one_correspondence = false)
Expand Down Expand Up @@ -186,8 +186,8 @@ class TracezProcessor : public ::testing::Test
std::shared_ptr<TracezSpanProcessor> processor;
std::shared_ptr<opentelemetry::trace::Tracer> tracer;

std::unordered_set<opentelemetry::sdk::trace::SpanData *> running;
std::vector<std::unique_ptr<opentelemetry::sdk::trace::SpanData>> completed;
std::unordered_set<ThreadsafeSpanData *> running;
std::vector<std::unique_ptr<ThreadsafeSpanData>> completed;

std::vector<std::string> span_names;
std::vector<opentelemetry::nostd::unique_ptr<opentelemetry::trace::Span>> span_vars;
Expand Down

0 comments on commit 8a02381

Please sign in to comment.