From 3503d72e7f5d404281a192ee801b7d17fdf69111 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Mon, 2 Mar 2020 23:25:43 -0800 Subject: [PATCH 01/17] Start Recorder api --- sdk/src/{opentelemetry => }/context/TBD | 0 .../distributedcontext/TBD | 0 sdk/src/{opentelemetry => }/internal/TBD | 0 sdk/src/{opentelemetry => }/logs/TBD | 0 sdk/src/{opentelemetry => }/metrics/TBD | 0 sdk/src/opentelemetry/trace/tracer_handle.h | 27 ----------------- sdk/src/{opentelemetry => }/resource/TBD | 0 sdk/src/trace/BUILD | 24 +++++++++++++++ sdk/src/trace/recordable.h | 29 +++++++++++++++++++ sdk/src/trace/recorder.h | 22 ++++++++++++++ sdk/src/trace/span.cc | 19 ++++++++++++ sdk/src/trace/span.h | 25 ++++++++++++++++ sdk/src/trace/tracer.cc | 19 ++++++++++++ sdk/src/trace/tracer.h | 28 ++++++++++++++++++ 14 files changed, 166 insertions(+), 27 deletions(-) rename sdk/src/{opentelemetry => }/context/TBD (100%) rename sdk/src/{opentelemetry => }/distributedcontext/TBD (100%) rename sdk/src/{opentelemetry => }/internal/TBD (100%) rename sdk/src/{opentelemetry => }/logs/TBD (100%) rename sdk/src/{opentelemetry => }/metrics/TBD (100%) delete mode 100644 sdk/src/opentelemetry/trace/tracer_handle.h rename sdk/src/{opentelemetry => }/resource/TBD (100%) create mode 100644 sdk/src/trace/BUILD create mode 100644 sdk/src/trace/recordable.h create mode 100644 sdk/src/trace/recorder.h create mode 100644 sdk/src/trace/span.cc create mode 100644 sdk/src/trace/span.h create mode 100644 sdk/src/trace/tracer.cc create mode 100644 sdk/src/trace/tracer.h diff --git a/sdk/src/opentelemetry/context/TBD b/sdk/src/context/TBD similarity index 100% rename from sdk/src/opentelemetry/context/TBD rename to sdk/src/context/TBD diff --git a/sdk/src/opentelemetry/distributedcontext/TBD b/sdk/src/distributedcontext/TBD similarity index 100% rename from sdk/src/opentelemetry/distributedcontext/TBD rename to sdk/src/distributedcontext/TBD diff --git a/sdk/src/opentelemetry/internal/TBD b/sdk/src/internal/TBD similarity index 100% rename from sdk/src/opentelemetry/internal/TBD rename to sdk/src/internal/TBD diff --git a/sdk/src/opentelemetry/logs/TBD b/sdk/src/logs/TBD similarity index 100% rename from sdk/src/opentelemetry/logs/TBD rename to sdk/src/logs/TBD diff --git a/sdk/src/opentelemetry/metrics/TBD b/sdk/src/metrics/TBD similarity index 100% rename from sdk/src/opentelemetry/metrics/TBD rename to sdk/src/metrics/TBD diff --git a/sdk/src/opentelemetry/trace/tracer_handle.h b/sdk/src/opentelemetry/trace/tracer_handle.h deleted file mode 100644 index 15d5a29953..0000000000 --- a/sdk/src/opentelemetry/trace/tracer_handle.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "opentelemetry/plugin/tracer_handle.h" - -namespace opentelemetry -{ -namespace sdk -{ -namespace trace -{ -namespace api = opentelemetry::trace; - -class TracerHandle final : public plugin::TracerHandle -{ -public: - explicit TracerHandle(std::shared_ptr tracer) noexcept : tracer_{std::move(tracer)} - {} - - // opentelemetry::plugin::TracerHandle - api::Tracer &tracer() const noexcept override { return tracer_; } - -private: - std::shared_ptr tracer_; -}; -} // namespace trace -} // namespace sdk -} // namespace opentelemetry diff --git a/sdk/src/opentelemetry/resource/TBD b/sdk/src/resource/TBD similarity index 100% rename from sdk/src/opentelemetry/resource/TBD rename to sdk/src/resource/TBD diff --git a/sdk/src/trace/BUILD b/sdk/src/trace/BUILD new file mode 100644 index 0000000000..997958e41e --- /dev/null +++ b/sdk/src/trace/BUILD @@ -0,0 +1,24 @@ +# Copyright 2019, OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +package(default_visibility = ["//visibility:public"]) + +cc_library( + name = "trace", + hdrs = glob(["**/*.h"]), + srcs = glob(["**/*.cc"]), + deps = [ + "//api", + ], +) diff --git a/sdk/src/trace/recordable.h b/sdk/src/trace/recordable.h new file mode 100644 index 0000000000..25a1f4ca1c --- /dev/null +++ b/sdk/src/trace/recordable.h @@ -0,0 +1,29 @@ +#pragma once + +#include "opentelemetry/core/timestamp.h" +#include "opentelemetry/nostd/string_view.h" +#include "opentelemetry/trace/canonical_code.h" + +namespace opentelemetry +{ +namespace sdk { +namespace trace +{ +namespace trace_api = opentelemetry::trace; + +class Recordable +{ +public: + virtual ~Recordable() = default; + + virtual void AddEvent(nostd::string_view name, + std::chrono::nanoseconds time_since_epoch) noexcept = 0; + + virtual void SetStatus(trace_api::CanonicalCode code, + nostd::string_view description) noexcept = 0; + + virtual void SetName(nostd::string_view name) noexcept = 0; +}; +} // namespace trace +} // namespace sdk +} // namespace opentelemetry diff --git a/sdk/src/trace/recorder.h b/sdk/src/trace/recorder.h new file mode 100644 index 0000000000..9823257bea --- /dev/null +++ b/sdk/src/trace/recorder.h @@ -0,0 +1,22 @@ +#pragma once + +#include "opentelemetry/trace/trace_id.h" +#include "opentelemetry/trace/span_id.h" +#include "sdk/src/trace/recordable.h" + +namespace opentelemetry +{ +namespace sdk { +namespace trace +{ +class Recorder { + public: + virtual ~Recorder() = default; + + virtual std::unique_ptr MakeRecordable() noexcept = 0; + + virtual void Record(std::unique_ptr&& recordable) noexcept = 0; +}; +} // namespace trace +} // namespace sdk +} // namespace opentelemetry diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc new file mode 100644 index 0000000000..85254ff27e --- /dev/null +++ b/sdk/src/trace/span.cc @@ -0,0 +1,19 @@ +#include "sdk/src/trace/span.h" + +namespace opentelemetry +{ +namespace sdk +{ +namespace trace +{ +Span::Span(std::shared_ptr &&tracer, + nostd::string_view name, + const trace_api::StartSpanOptions &options) noexcept + : tracer_{std::move(tracer)}, recordable_{tracer_->recorder().MakeRecordable()} +{ + (void)name; + (void)options; +} +} // namespace trace +} // namespace sdk +} // namespace opentelemetry diff --git a/sdk/src/trace/span.h b/sdk/src/trace/span.h new file mode 100644 index 0000000000..3ffc97e608 --- /dev/null +++ b/sdk/src/trace/span.h @@ -0,0 +1,25 @@ +#pragma once + +#include "sdk/src/trace/tracer.h" + +#include + +namespace opentelemetry { +namespace sdk { +namespace trace { +namespace trace_api = opentelemetry::trace; + +class Span final : public trace_api::Span { + public: + explicit Span(std::shared_ptr &&tracer, + nostd::string_view name, + const trace_api::StartSpanOptions &options) noexcept; + + private: + std::shared_ptr tracer_; + std::mutex mutex_; + std::unique_ptr recordable_; +}; +} // namespace trace +} // namespace sdk +} // namespace opentelemetry diff --git a/sdk/src/trace/tracer.cc b/sdk/src/trace/tracer.cc new file mode 100644 index 0000000000..18808f19d2 --- /dev/null +++ b/sdk/src/trace/tracer.cc @@ -0,0 +1,19 @@ +#include "sdk/src/trace/tracer.h" + +namespace opentelemetry +{ +namespace sdk +{ +namespace trace +{ +nostd::unique_ptr Tracer::StartSpan( + nostd::string_view name, + const trace_api::StartSpanOptions &options) noexcept +{ + (void)name; + (void)options; + return nullptr; +} +} // namespace trace +} // namespace sdk +} // namespace opentelemetry diff --git a/sdk/src/trace/tracer.h b/sdk/src/trace/tracer.h new file mode 100644 index 0000000000..aee93ab45f --- /dev/null +++ b/sdk/src/trace/tracer.h @@ -0,0 +1,28 @@ +#pragma once + +#include "opentelemetry/trace/tracer.h" +#include "sdk/src/trace/recorder.h" + +#include + +namespace opentelemetry { +namespace sdk { +namespace trace { +class Tracer final : public trace_api::Tracer, public std::enable_shared_from_this +{ +public: + explicit Tracer(std::unique_ptr &&recorder) noexcept : recorder_{std::move(recorder)} {} + + Recorder &recorder() const noexcept { return *recorder_; } + + // trace_api::Tracer + nostd::unique_ptr StartSpan( + nostd::string_view name, + const trace_api::StartSpanOptions &options = {}) noexcept override; + +private: + std::unique_ptr recorder_; +}; +} // namespace trace +} // namespace sdk +} // namespace opentelemetry From 79b4f1d5cf546312090f734835b6a623f0d7759d Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Mon, 2 Mar 2020 23:43:52 -0800 Subject: [PATCH 02/17] Fill out Span api --- sdk/src/trace/span.cc | 35 +++++++++++++++++++++++++++++++ sdk/src/trace/span.h | 49 ++++++++++++++++++++++++++++++------------- 2 files changed, 69 insertions(+), 15 deletions(-) diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index 85254ff27e..533745e56b 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -14,6 +14,41 @@ Span::Span(std::shared_ptr &&tracer, (void)name; (void)options; } + +void Span::AddEvent(nostd::string_view name) noexcept +{ + (void)name; +} + +void Span::AddEvent(nostd::string_view name, core::SystemTimestamp timestamp) noexcept +{ + (void)name; + (void)timestamp; +} + +void Span::AddEvent(nostd::string_view name, core::SteadyTimestamp timestamp) noexcept +{ + (void)name; + (void)timestamp; +} + +void Span::SetStatus(trace_api::CanonicalCode code, nostd::string_view description) noexcept +{ + (void)code; + (void)description; +} + +void Span::UpdateName(nostd::string_view name) noexcept +{ + (void)name; +} + +void Span::End() noexcept {} + +bool Span::IsRecording() const noexcept +{ + return true; +} } // namespace trace } // namespace sdk } // namespace opentelemetry diff --git a/sdk/src/trace/span.h b/sdk/src/trace/span.h index 3ffc97e608..5240562c3b 100644 --- a/sdk/src/trace/span.h +++ b/sdk/src/trace/span.h @@ -4,22 +4,41 @@ #include -namespace opentelemetry { -namespace sdk { -namespace trace { +namespace opentelemetry +{ +namespace sdk +{ +namespace trace +{ namespace trace_api = opentelemetry::trace; -class Span final : public trace_api::Span { - public: - explicit Span(std::shared_ptr &&tracer, - nostd::string_view name, - const trace_api::StartSpanOptions &options) noexcept; +class Span final : public trace_api::Span +{ +public: + explicit Span(std::shared_ptr &&tracer, + nostd::string_view name, + const trace_api::StartSpanOptions &options) noexcept; - private: - std::shared_ptr tracer_; - std::mutex mutex_; - std::unique_ptr recordable_; + void AddEvent(nostd::string_view name) noexcept override; + + void AddEvent(nostd::string_view name, core::SystemTimestamp timestamp) noexcept override; + void AddEvent(nostd::string_view name, core::SteadyTimestamp timestamp) noexcept override; + + void SetStatus(trace_api::CanonicalCode code, nostd::string_view description) noexcept override; + + void UpdateName(nostd::string_view name) noexcept override; + + void End() noexcept override; + + bool IsRecording() const noexcept override; + + trace_api::Tracer &tracer() const noexcept override { return *tracer_; } + +private: + std::shared_ptr tracer_; + std::mutex mutex_; + std::unique_ptr recordable_; }; -} // namespace trace -} // namespace sdk -} // namespace opentelemetry +} // namespace trace +} // namespace sdk +} // namespace opentelemetry From 8bcff6e424025cc910bca24234a174c57cee2040 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Tue, 3 Mar 2020 00:06:29 -0800 Subject: [PATCH 03/17] Reformat --- sdk/src/trace/span.cc | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index 533745e56b..8fd220e773 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -11,8 +11,11 @@ Span::Span(std::shared_ptr &&tracer, const trace_api::StartSpanOptions &options) noexcept : tracer_{std::move(tracer)}, recordable_{tracer_->recorder().MakeRecordable()} { - (void)name; (void)options; + if (recordable_ == nullptr) { + return; + } + recordable_->SetName(name); } void Span::AddEvent(nostd::string_view name) noexcept @@ -40,10 +43,24 @@ void Span::SetStatus(trace_api::CanonicalCode code, nostd::string_view descripti void Span::UpdateName(nostd::string_view name) noexcept { - (void)name; + std::lock_guard lock_guard{mutex_}; + if (recordable_ == nullptr) + { + return; + } + recordable_->SetName(name); } -void Span::End() noexcept {} +void Span::End() noexcept +{ + std::lock_guard lock_guard{mutex_}; + if (recordable_ == nullptr) + { + return; + } + tracer_->recorder().Record(std::move(recordable_)); + recordable_.reset(); +} bool Span::IsRecording() const noexcept { From c5e9a9e53357a0282edf3752a0624a5e5c8129d8 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Tue, 3 Mar 2020 13:43:27 -0800 Subject: [PATCH 04/17] Fill out Tracer class --- sdk/src/trace/span.cc | 12 ++++++++++-- sdk/src/trace/span.h | 2 ++ sdk/src/trace/tracer.cc | 7 ++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index 8fd220e773..726d63c7f5 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -18,6 +18,10 @@ Span::Span(std::shared_ptr &&tracer, recordable_->SetName(name); } +Span::~Span() { + End(); +} + void Span::AddEvent(nostd::string_view name) noexcept { (void)name; @@ -37,8 +41,12 @@ void Span::AddEvent(nostd::string_view name, core::SteadyTimestamp timestamp) no void Span::SetStatus(trace_api::CanonicalCode code, nostd::string_view description) noexcept { - (void)code; - (void)description; + std::lock_guard lock_guard{mutex_}; + if (recordable_ == nullptr) + { + return; + } + recordable_->SetStatus(code, description); } void Span::UpdateName(nostd::string_view name) noexcept diff --git a/sdk/src/trace/span.h b/sdk/src/trace/span.h index 5240562c3b..8eb6fb178b 100644 --- a/sdk/src/trace/span.h +++ b/sdk/src/trace/span.h @@ -19,6 +19,8 @@ class Span final : public trace_api::Span nostd::string_view name, const trace_api::StartSpanOptions &options) noexcept; + ~Span() override; + void AddEvent(nostd::string_view name) noexcept override; void AddEvent(nostd::string_view name, core::SystemTimestamp timestamp) noexcept override; diff --git a/sdk/src/trace/tracer.cc b/sdk/src/trace/tracer.cc index 18808f19d2..a923f17133 100644 --- a/sdk/src/trace/tracer.cc +++ b/sdk/src/trace/tracer.cc @@ -1,5 +1,7 @@ #include "sdk/src/trace/tracer.h" +#include "sdk/src/trace/span.h" + namespace opentelemetry { namespace sdk @@ -10,9 +12,8 @@ nostd::unique_ptr Tracer::StartSpan( nostd::string_view name, const trace_api::StartSpanOptions &options) noexcept { - (void)name; - (void)options; - return nullptr; + return nostd::unique_ptr{new (std::nothrow) + Span{this->shared_from_this(), name, options}}; } } // namespace trace } // namespace sdk From a69206f70c1dd33bfc2cc3c71ecb0e901a870729 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Tue, 3 Mar 2020 16:58:34 -0800 Subject: [PATCH 05/17] Add cmake build --- CMakeLists.txt | 3 +++ sdk/src/trace/BUILD | 1 + sdk/src/trace/CMakeLists.txt | 3 +++ sdk/src/trace/recorder.h | 2 +- sdk/src/trace/span.cc | 2 +- sdk/src/trace/span.h | 2 +- sdk/src/trace/tracer.cc | 4 ++-- sdk/src/trace/tracer.h | 2 +- 8 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 sdk/src/trace/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index c34736db49..c10f92d39d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,4 +20,7 @@ endif() include_directories(api/include) add_subdirectory(api) +include_directories(sdk/include) +include_directories(sdk) +add_subdirectory(sdk) add_subdirectory(examples) diff --git a/sdk/src/trace/BUILD b/sdk/src/trace/BUILD index 997958e41e..540fc8fccb 100644 --- a/sdk/src/trace/BUILD +++ b/sdk/src/trace/BUILD @@ -21,4 +21,5 @@ cc_library( deps = [ "//api", ], + include_prefix = "src/trace", ) diff --git a/sdk/src/trace/CMakeLists.txt b/sdk/src/trace/CMakeLists.txt new file mode 100644 index 0000000000..e2ec1f99cb --- /dev/null +++ b/sdk/src/trace/CMakeLists.txt @@ -0,0 +1,3 @@ +add_library(opentelemetry_trace + tracer.cc + span.cc) diff --git a/sdk/src/trace/recorder.h b/sdk/src/trace/recorder.h index 9823257bea..c22f443c0a 100644 --- a/sdk/src/trace/recorder.h +++ b/sdk/src/trace/recorder.h @@ -2,7 +2,7 @@ #include "opentelemetry/trace/trace_id.h" #include "opentelemetry/trace/span_id.h" -#include "sdk/src/trace/recordable.h" +#include "src/trace/recordable.h" namespace opentelemetry { diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index 726d63c7f5..3711ef5c90 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -1,4 +1,4 @@ -#include "sdk/src/trace/span.h" +#include "src/trace/span.h" namespace opentelemetry { diff --git a/sdk/src/trace/span.h b/sdk/src/trace/span.h index 8eb6fb178b..8978cd3f83 100644 --- a/sdk/src/trace/span.h +++ b/sdk/src/trace/span.h @@ -1,6 +1,6 @@ #pragma once -#include "sdk/src/trace/tracer.h" +#include "src/trace/tracer.h" #include diff --git a/sdk/src/trace/tracer.cc b/sdk/src/trace/tracer.cc index a923f17133..824c560cfe 100644 --- a/sdk/src/trace/tracer.cc +++ b/sdk/src/trace/tracer.cc @@ -1,6 +1,6 @@ -#include "sdk/src/trace/tracer.h" +#include "src/trace/tracer.h" -#include "sdk/src/trace/span.h" +#include "src/trace/span.h" namespace opentelemetry { diff --git a/sdk/src/trace/tracer.h b/sdk/src/trace/tracer.h index aee93ab45f..1f542770d6 100644 --- a/sdk/src/trace/tracer.h +++ b/sdk/src/trace/tracer.h @@ -1,7 +1,7 @@ #pragma once #include "opentelemetry/trace/tracer.h" -#include "sdk/src/trace/recorder.h" +#include "src/trace/recorder.h" #include From 87170e32f734bb1dfc62c06048c143f92023de02 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Tue, 3 Mar 2020 17:14:54 -0800 Subject: [PATCH 06/17] Add commenting --- sdk/CMakeLists.txt | 1 + sdk/src/CMakeLists.txt | 1 + sdk/src/trace/recordable.h | 22 ++++++++++++++++++++-- sdk/src/trace/recorder.h | 25 +++++++++++++++++-------- 4 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 sdk/CMakeLists.txt create mode 100644 sdk/src/CMakeLists.txt diff --git a/sdk/CMakeLists.txt b/sdk/CMakeLists.txt new file mode 100644 index 0000000000..febd4f0ab6 --- /dev/null +++ b/sdk/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(src) diff --git a/sdk/src/CMakeLists.txt b/sdk/src/CMakeLists.txt new file mode 100644 index 0000000000..2cea47fa7b --- /dev/null +++ b/sdk/src/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(trace) diff --git a/sdk/src/trace/recordable.h b/sdk/src/trace/recordable.h index 25a1f4ca1c..a1dd5bd7c0 100644 --- a/sdk/src/trace/recordable.h +++ b/sdk/src/trace/recordable.h @@ -6,24 +6,42 @@ namespace opentelemetry { -namespace sdk { +namespace sdk +{ namespace trace { namespace trace_api = opentelemetry::trace; +/** + * Maintains a representation of a span in a format that can be processed by a recroder. + */ class Recordable { public: virtual ~Recordable() = default; + /** + * Add an event to a span. + * @param name the name of the event + * @param time_since_epoch the timestamp of the event + */ virtual void AddEvent(nostd::string_view name, std::chrono::nanoseconds time_since_epoch) noexcept = 0; + /** + * Set the status of the span. + * @param code the status code + * @param description a description of the status + */ virtual void SetStatus(trace_api::CanonicalCode code, nostd::string_view description) noexcept = 0; + /** + * Set the name of the span. + * @param name the name to set + */ virtual void SetName(nostd::string_view name) noexcept = 0; }; } // namespace trace -} // namespace sdk +} // namespace sdk } // namespace opentelemetry diff --git a/sdk/src/trace/recorder.h b/sdk/src/trace/recorder.h index c22f443c0a..c228453769 100644 --- a/sdk/src/trace/recorder.h +++ b/sdk/src/trace/recorder.h @@ -1,22 +1,31 @@ #pragma once -#include "opentelemetry/trace/trace_id.h" #include "opentelemetry/trace/span_id.h" +#include "opentelemetry/trace/trace_id.h" #include "src/trace/recordable.h" namespace opentelemetry { -namespace sdk { +namespace sdk +{ namespace trace { -class Recorder { - public: - virtual ~Recorder() = default; +class Recorder +{ +public: + virtual ~Recorder() = default; - virtual std::unique_ptr MakeRecordable() noexcept = 0; + /** + * @return a Recordable object to maintain a data representation of a span. + */ + virtual std::unique_ptr MakeRecordable() noexcept = 0; - virtual void Record(std::unique_ptr&& recordable) noexcept = 0; + /** + * Record a span. + * @param recordable the data representation of the span. + */ + virtual void Record(std::unique_ptr &&recordable) noexcept = 0; }; } // namespace trace -} // namespace sdk +} // namespace sdk } // namespace opentelemetry From 320add049b1d4efef0af833e14b1e10038dfdb95 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Tue, 3 Mar 2020 17:55:08 -0800 Subject: [PATCH 07/17] Fix formatting --- api/include/opentelemetry/plugin/detail/utility.h | 2 +- api/test/nostd/unique_ptr_test.cc | 3 +-- sdk/src/trace/BUILD | 4 ++-- sdk/src/trace/CMakeLists.txt | 4 +--- sdk/src/trace/span.cc | 6 ++++-- sdk/src/trace/tracer.h | 15 +++++++++------ 6 files changed, 18 insertions(+), 16 deletions(-) diff --git a/api/include/opentelemetry/plugin/detail/utility.h b/api/include/opentelemetry/plugin/detail/utility.h index 5d85f182ec..743ca54f6b 100644 --- a/api/include/opentelemetry/plugin/detail/utility.h +++ b/api/include/opentelemetry/plugin/detail/utility.h @@ -13,7 +13,7 @@ namespace detail { inline void CopyErrorMessage(const char *source, std::string &destination) noexcept #if __EXCEPTIONS -try + try #endif { if (source == nullptr) diff --git a/api/test/nostd/unique_ptr_test.cc b/api/test/nostd/unique_ptr_test.cc index ee1ae17f4a..521e8e16dc 100644 --- a/api/test/nostd/unique_ptr_test.cc +++ b/api/test/nostd/unique_ptr_test.cc @@ -108,8 +108,7 @@ TEST(UniquePtrTest, PointerOperators) unique_ptr ptr1{value}; EXPECT_EQ(&*ptr1, value); - EXPECT_EQ( - unique_ptr {}->f(), 123); + EXPECT_EQ(unique_ptr {}->f(), 123); } TEST(UniquePtrTest, Reset) diff --git a/sdk/src/trace/BUILD b/sdk/src/trace/BUILD index 540fc8fccb..3db5430e49 100644 --- a/sdk/src/trace/BUILD +++ b/sdk/src/trace/BUILD @@ -16,10 +16,10 @@ package(default_visibility = ["//visibility:public"]) cc_library( name = "trace", - hdrs = glob(["**/*.h"]), srcs = glob(["**/*.cc"]), + hdrs = glob(["**/*.h"]), + include_prefix = "src/trace", deps = [ "//api", ], - include_prefix = "src/trace", ) diff --git a/sdk/src/trace/CMakeLists.txt b/sdk/src/trace/CMakeLists.txt index e2ec1f99cb..62a2187c46 100644 --- a/sdk/src/trace/CMakeLists.txt +++ b/sdk/src/trace/CMakeLists.txt @@ -1,3 +1 @@ -add_library(opentelemetry_trace - tracer.cc - span.cc) +add_library(opentelemetry_trace tracer.cc span.cc) diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index 3711ef5c90..5ba7dc5275 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -12,13 +12,15 @@ Span::Span(std::shared_ptr &&tracer, : tracer_{std::move(tracer)}, recordable_{tracer_->recorder().MakeRecordable()} { (void)options; - if (recordable_ == nullptr) { + if (recordable_ == nullptr) + { return; } recordable_->SetName(name); } -Span::~Span() { +Span::~Span() +{ End(); } diff --git a/sdk/src/trace/tracer.h b/sdk/src/trace/tracer.h index 1f542770d6..2540c35647 100644 --- a/sdk/src/trace/tracer.h +++ b/sdk/src/trace/tracer.h @@ -5,9 +5,12 @@ #include -namespace opentelemetry { -namespace sdk { -namespace trace { +namespace opentelemetry +{ +namespace sdk +{ +namespace trace +{ class Tracer final : public trace_api::Tracer, public std::enable_shared_from_this { public: @@ -23,6 +26,6 @@ class Tracer final : public trace_api::Tracer, public std::enable_shared_from_th private: std::unique_ptr recorder_; }; -} // namespace trace -} // namespace sdk -} // namespace opentelemetry +} // namespace trace +} // namespace sdk +} // namespace opentelemetry From 1a3761e4187aadcda2679a3d480604deb661edc4 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Tue, 3 Mar 2020 17:59:03 -0800 Subject: [PATCH 08/17] Reformat --- api/include/opentelemetry/plugin/detail/utility.h | 2 +- api/test/nostd/unique_ptr_test.cc | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/api/include/opentelemetry/plugin/detail/utility.h b/api/include/opentelemetry/plugin/detail/utility.h index 743ca54f6b..5d85f182ec 100644 --- a/api/include/opentelemetry/plugin/detail/utility.h +++ b/api/include/opentelemetry/plugin/detail/utility.h @@ -13,7 +13,7 @@ namespace detail { inline void CopyErrorMessage(const char *source, std::string &destination) noexcept #if __EXCEPTIONS - try +try #endif { if (source == nullptr) diff --git a/api/test/nostd/unique_ptr_test.cc b/api/test/nostd/unique_ptr_test.cc index 521e8e16dc..ee1ae17f4a 100644 --- a/api/test/nostd/unique_ptr_test.cc +++ b/api/test/nostd/unique_ptr_test.cc @@ -108,7 +108,8 @@ TEST(UniquePtrTest, PointerOperators) unique_ptr ptr1{value}; EXPECT_EQ(&*ptr1, value); - EXPECT_EQ(unique_ptr {}->f(), 123); + EXPECT_EQ( + unique_ptr {}->f(), 123); } TEST(UniquePtrTest, Reset) From 597f0f37c1be91d73bcfe4e77949c30ff00c0217 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Tue, 3 Mar 2020 18:29:00 -0800 Subject: [PATCH 09/17] Fix date --- sdk/src/trace/BUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/src/trace/BUILD b/sdk/src/trace/BUILD index 3db5430e49..f990c57425 100644 --- a/sdk/src/trace/BUILD +++ b/sdk/src/trace/BUILD @@ -1,4 +1,4 @@ -# Copyright 2019, OpenTelemetry Authors +# Copyright 2020, OpenTelemetry Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. From 0d8649f74c5a5d89e3e86cd4cd29e603ca1fe592 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Tue, 3 Mar 2020 18:29:11 -0800 Subject: [PATCH 10/17] Make mutex mutable --- sdk/src/trace/span.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/src/trace/span.h b/sdk/src/trace/span.h index 8978cd3f83..470406b410 100644 --- a/sdk/src/trace/span.h +++ b/sdk/src/trace/span.h @@ -38,7 +38,7 @@ class Span final : public trace_api::Span private: std::shared_ptr tracer_; - std::mutex mutex_; + mutable std::mutex mutex_; std::unique_ptr recordable_; }; } // namespace trace From c15286ecc4ded4657c42d9cc08eaea23e7659c5a Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Tue, 3 Mar 2020 19:01:48 -0800 Subject: [PATCH 11/17] s/mutex_/mu_/ --- sdk/src/trace/span.cc | 6 +++--- sdk/src/trace/span.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index 5ba7dc5275..7009a964a8 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -43,7 +43,7 @@ void Span::AddEvent(nostd::string_view name, core::SteadyTimestamp timestamp) no void Span::SetStatus(trace_api::CanonicalCode code, nostd::string_view description) noexcept { - std::lock_guard lock_guard{mutex_}; + std::lock_guard lock_guard{mu_}; if (recordable_ == nullptr) { return; @@ -53,7 +53,7 @@ void Span::SetStatus(trace_api::CanonicalCode code, nostd::string_view descripti void Span::UpdateName(nostd::string_view name) noexcept { - std::lock_guard lock_guard{mutex_}; + std::lock_guard lock_guard{mu_}; if (recordable_ == nullptr) { return; @@ -63,7 +63,7 @@ void Span::UpdateName(nostd::string_view name) noexcept void Span::End() noexcept { - std::lock_guard lock_guard{mutex_}; + std::lock_guard lock_guard{mu_}; if (recordable_ == nullptr) { return; diff --git a/sdk/src/trace/span.h b/sdk/src/trace/span.h index 470406b410..f70d7d5e98 100644 --- a/sdk/src/trace/span.h +++ b/sdk/src/trace/span.h @@ -38,7 +38,7 @@ class Span final : public trace_api::Span private: std::shared_ptr tracer_; - mutable std::mutex mutex_; + mutable std::mutex mu_; std::unique_ptr recordable_; }; } // namespace trace From 3c6fbb060a55ae6ac2b074d3bc3d3b9d8ec48b55 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Thu, 5 Mar 2020 15:10:10 -0800 Subject: [PATCH 12/17] Remove AddEvent with steady timestamp --- api/include/opentelemetry/plugin/tracer.h | 4 ---- api/include/opentelemetry/trace/noop.h | 1 - api/include/opentelemetry/trace/span.h | 1 - examples/plugin/plugin/tracer.cc | 2 -- sdk/src/trace/recordable.h | 5 ++--- sdk/src/trace/span.cc | 6 ------ sdk/src/trace/span.h | 1 - 7 files changed, 2 insertions(+), 18 deletions(-) diff --git a/api/include/opentelemetry/plugin/tracer.h b/api/include/opentelemetry/plugin/tracer.h index d9a68800df..76cd8249c8 100644 --- a/api/include/opentelemetry/plugin/tracer.h +++ b/api/include/opentelemetry/plugin/tracer.h @@ -24,10 +24,6 @@ class Span final : public trace::Span { span_->AddEvent(name, timestamp); } - void AddEvent(nostd::string_view name, core::SteadyTimestamp timestamp) noexcept override - { - span_->AddEvent(name, timestamp); - } void SetStatus(trace::CanonicalCode code, nostd::string_view description) noexcept override { diff --git a/api/include/opentelemetry/trace/noop.h b/api/include/opentelemetry/trace/noop.h index 60deddbf93..bef4cf8fc8 100644 --- a/api/include/opentelemetry/trace/noop.h +++ b/api/include/opentelemetry/trace/noop.h @@ -26,7 +26,6 @@ class NoopSpan final : public Span void AddEvent(nostd::string_view name) noexcept override {} void AddEvent(nostd::string_view name, core::SystemTimestamp timestamp) noexcept override {} - void AddEvent(nostd::string_view name, core::SteadyTimestamp timestamp) noexcept override {} void SetStatus(CanonicalCode code, nostd::string_view description) noexcept override {} diff --git a/api/include/opentelemetry/trace/span.h b/api/include/opentelemetry/trace/span.h index 300ec0478d..79d31d0cec 100644 --- a/api/include/opentelemetry/trace/span.h +++ b/api/include/opentelemetry/trace/span.h @@ -76,7 +76,6 @@ class Span // Adds an event to the Span, with a custom timestamp. virtual void AddEvent(nostd::string_view name, core::SystemTimestamp timestamp) noexcept = 0; - virtual void AddEvent(nostd::string_view name, core::SteadyTimestamp timestamp) noexcept = 0; // TODO // Adds an event to the Span, with a custom timestamp, and attributes. diff --git a/examples/plugin/plugin/tracer.cc b/examples/plugin/plugin/tracer.cc index 02a828e0fa..5a0c861ea6 100644 --- a/examples/plugin/plugin/tracer.cc +++ b/examples/plugin/plugin/tracer.cc @@ -26,8 +26,6 @@ class Span final : public trace::Span void AddEvent(nostd::string_view /*name*/, core::SystemTimestamp /*timestamp*/) noexcept override {} - void AddEvent(nostd::string_view /*name*/, core::SteadyTimestamp /*timestamp*/) noexcept override - {} void SetStatus(trace::CanonicalCode /*code*/, nostd::string_view /*description*/) noexcept override diff --git a/sdk/src/trace/recordable.h b/sdk/src/trace/recordable.h index a1dd5bd7c0..7335315a80 100644 --- a/sdk/src/trace/recordable.h +++ b/sdk/src/trace/recordable.h @@ -23,10 +23,9 @@ class Recordable /** * Add an event to a span. * @param name the name of the event - * @param time_since_epoch the timestamp of the event + * @param timestamp the timestamp of the event */ - virtual void AddEvent(nostd::string_view name, - std::chrono::nanoseconds time_since_epoch) noexcept = 0; + virtual void AddEvent(nostd::string_view name, core::SystemTimestamp timestamp) noexcept = 0; /** * Set the status of the span. diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index 7009a964a8..82be75d51e 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -35,12 +35,6 @@ void Span::AddEvent(nostd::string_view name, core::SystemTimestamp timestamp) no (void)timestamp; } -void Span::AddEvent(nostd::string_view name, core::SteadyTimestamp timestamp) noexcept -{ - (void)name; - (void)timestamp; -} - void Span::SetStatus(trace_api::CanonicalCode code, nostd::string_view description) noexcept { std::lock_guard lock_guard{mu_}; diff --git a/sdk/src/trace/span.h b/sdk/src/trace/span.h index f70d7d5e98..eccfd2a912 100644 --- a/sdk/src/trace/span.h +++ b/sdk/src/trace/span.h @@ -24,7 +24,6 @@ class Span final : public trace_api::Span void AddEvent(nostd::string_view name) noexcept override; void AddEvent(nostd::string_view name, core::SystemTimestamp timestamp) noexcept override; - void AddEvent(nostd::string_view name, core::SteadyTimestamp timestamp) noexcept override; void SetStatus(trace_api::CanonicalCode code, nostd::string_view description) noexcept override; From b0d1548688d148b79ae8582e251c845b9b169771 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Thu, 5 Mar 2020 21:53:31 -0800 Subject: [PATCH 13/17] Fix typo --- sdk/src/trace/recordable.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/src/trace/recordable.h b/sdk/src/trace/recordable.h index 7335315a80..c342a63e18 100644 --- a/sdk/src/trace/recordable.h +++ b/sdk/src/trace/recordable.h @@ -13,7 +13,7 @@ namespace trace namespace trace_api = opentelemetry::trace; /** - * Maintains a representation of a span in a format that can be processed by a recroder. + * Maintains a representation of a span in a format that can be processed by a recorder. */ class Recordable { From 6210da020953b7b542076240baf02de462cc1806 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Thu, 5 Mar 2020 21:55:10 -0800 Subject: [PATCH 14/17] Fill in IsRecordable --- sdk/src/trace/span.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index 82be75d51e..df869640e0 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -68,7 +68,8 @@ void Span::End() noexcept bool Span::IsRecording() const noexcept { - return true; + std::lock_guard lock_guard{mu_}; + return recordable_ != nullptr; } } // namespace trace } // namespace sdk From 36748e44a06a5b19d1d7956d4292c2c84a050f57 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Thu, 12 Mar 2020 15:51:47 -0700 Subject: [PATCH 15/17] Use namespace macros --- sdk/src/trace/recordable.h | 6 +++--- sdk/src/trace/recorder.h | 6 +++--- sdk/src/trace/span.cc | 7 ++++--- sdk/src/trace/span.h | 6 +++--- sdk/src/trace/tracer.cc | 6 +++--- sdk/src/trace/tracer.h | 6 +++--- 6 files changed, 19 insertions(+), 18 deletions(-) diff --git a/sdk/src/trace/recordable.h b/sdk/src/trace/recordable.h index c342a63e18..8bca640c91 100644 --- a/sdk/src/trace/recordable.h +++ b/sdk/src/trace/recordable.h @@ -3,9 +3,9 @@ #include "opentelemetry/core/timestamp.h" #include "opentelemetry/nostd/string_view.h" #include "opentelemetry/trace/canonical_code.h" +#include "opentelemetry/version.h" -namespace opentelemetry -{ +OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { namespace trace @@ -43,4 +43,4 @@ class Recordable }; } // namespace trace } // namespace sdk -} // namespace opentelemetry +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/trace/recorder.h b/sdk/src/trace/recorder.h index c228453769..b701c113d6 100644 --- a/sdk/src/trace/recorder.h +++ b/sdk/src/trace/recorder.h @@ -2,10 +2,10 @@ #include "opentelemetry/trace/span_id.h" #include "opentelemetry/trace/trace_id.h" +#include "opentelemetry/version.h" #include "src/trace/recordable.h" -namespace opentelemetry -{ +OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { namespace trace @@ -28,4 +28,4 @@ class Recorder }; } // namespace trace } // namespace sdk -} // namespace opentelemetry +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index df869640e0..54fde5d81d 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -1,7 +1,8 @@ #include "src/trace/span.h" -namespace opentelemetry -{ +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { namespace trace @@ -73,4 +74,4 @@ bool Span::IsRecording() const noexcept } } // namespace trace } // namespace sdk -} // namespace opentelemetry +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/trace/span.h b/sdk/src/trace/span.h index eccfd2a912..6d40019882 100644 --- a/sdk/src/trace/span.h +++ b/sdk/src/trace/span.h @@ -1,11 +1,11 @@ #pragma once +#include "opentelemetry/version.h" #include "src/trace/tracer.h" #include -namespace opentelemetry -{ +OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { namespace trace @@ -42,4 +42,4 @@ class Span final : public trace_api::Span }; } // namespace trace } // namespace sdk -} // namespace opentelemetry +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/trace/tracer.cc b/sdk/src/trace/tracer.cc index 824c560cfe..4a4c484bc9 100644 --- a/sdk/src/trace/tracer.cc +++ b/sdk/src/trace/tracer.cc @@ -1,9 +1,9 @@ #include "src/trace/tracer.h" +#include "opentelemetry/version.h" #include "src/trace/span.h" -namespace opentelemetry -{ +OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { namespace trace @@ -17,4 +17,4 @@ nostd::unique_ptr Tracer::StartSpan( } } // namespace trace } // namespace sdk -} // namespace opentelemetry +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/trace/tracer.h b/sdk/src/trace/tracer.h index 2540c35647..feaf32f479 100644 --- a/sdk/src/trace/tracer.h +++ b/sdk/src/trace/tracer.h @@ -1,12 +1,12 @@ #pragma once #include "opentelemetry/trace/tracer.h" +#include "opentelemetry/version.h" #include "src/trace/recorder.h" #include -namespace opentelemetry -{ +OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { namespace trace @@ -28,4 +28,4 @@ class Tracer final : public trace_api::Tracer, public std::enable_shared_from_th }; } // namespace trace } // namespace sdk -} // namespace opentelemetry +OPENTELEMETRY_END_NAMESPACE From 6118363675298b1fa1ae7d085861402715034406 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Thu, 12 Mar 2020 15:55:09 -0700 Subject: [PATCH 16/17] Add thread-compatible note --- sdk/src/trace/recordable.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/src/trace/recordable.h b/sdk/src/trace/recordable.h index 8bca640c91..a7298200a5 100644 --- a/sdk/src/trace/recordable.h +++ b/sdk/src/trace/recordable.h @@ -14,6 +14,8 @@ namespace trace_api = opentelemetry::trace; /** * Maintains a representation of a span in a format that can be processed by a recorder. + * + * This class is thread-compatible. */ class Recordable { From 94b6089e9ac2b4d89c5936b237e19e73cd175afa Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Thu, 12 Mar 2020 16:29:25 -0700 Subject: [PATCH 17/17] Add commenting --- sdk/src/trace/span.h | 1 + sdk/src/trace/tracer.h | 1 + 2 files changed, 2 insertions(+) diff --git a/sdk/src/trace/span.h b/sdk/src/trace/span.h index 6d40019882..f4f924aa33 100644 --- a/sdk/src/trace/span.h +++ b/sdk/src/trace/span.h @@ -21,6 +21,7 @@ class Span final : public trace_api::Span ~Span() override; + // trace_api::Span void AddEvent(nostd::string_view name) noexcept override; void AddEvent(nostd::string_view name, core::SystemTimestamp timestamp) noexcept override; diff --git a/sdk/src/trace/tracer.h b/sdk/src/trace/tracer.h index feaf32f479..c242b3c3a7 100644 --- a/sdk/src/trace/tracer.h +++ b/sdk/src/trace/tracer.h @@ -14,6 +14,7 @@ namespace trace class Tracer final : public trace_api::Tracer, public std::enable_shared_from_this { public: + // Note: recorder must be non-null explicit Tracer(std::unique_ptr &&recorder) noexcept : recorder_{std::move(recorder)} {} Recorder &recorder() const noexcept { return *recorder_; }