Browse Source

Intermediate changes

robot-piglet 1 year ago
parent
commit
fc6e7dcd6b

+ 6 - 0
.mapping.json

@@ -12082,6 +12082,12 @@
   "yt/yt/library/tvm/CMakeLists.linux-x86_64.txt":"",
   "yt/yt/library/tvm/CMakeLists.txt":"",
   "yt/yt/library/tvm/CMakeLists.windows-x86_64.txt":"",
+  "yt/yt/library/tvm/service/CMakeLists.darwin-arm64.txt":"",
+  "yt/yt/library/tvm/service/CMakeLists.darwin-x86_64.txt":"",
+  "yt/yt/library/tvm/service/CMakeLists.linux-aarch64.txt":"",
+  "yt/yt/library/tvm/service/CMakeLists.linux-x86_64.txt":"",
+  "yt/yt/library/tvm/service/CMakeLists.txt":"",
+  "yt/yt/library/tvm/service/CMakeLists.windows-x86_64.txt":"",
   "yt/yt/library/undumpable/CMakeLists.darwin-arm64.txt":"",
   "yt/yt/library/undumpable/CMakeLists.darwin-x86_64.txt":"",
   "yt/yt/library/undumpable/CMakeLists.linux-aarch64.txt":"",

+ 35 - 2
yt/yt/library/tracing/example/main.cpp

@@ -6,6 +6,8 @@
 
 #include <yt/yt/library/tracing/jaeger/tracer.h>
 
+#include <util/system/env.h>
+
 using namespace NYT;
 using namespace NYT::NTracing;
 
@@ -53,21 +55,52 @@ void DelayedSamplingExample(std::optional<TString> endpoint)
     traceContext->Finish();
 }
 
+NAuth::TTvmServiceConfigPtr GetTvmMockConfig() {
+    auto config = New<NAuth::TTvmServiceConfig>();
+    config->EnableMock = true;
+    config->ClientSelfSecret = "TestSecret-0";
+    config->ClientDstMap["tracing"] = 10;
+    config->ClientEnableServiceTicketFetching = true;
+
+    return config;
+}
+
+NAuth::TTvmServiceConfigPtr GetTvmConfig() {
+    auto config = New<NAuth::TTvmServiceConfig>();
+    config->ClientSelfId = FromString<NAuth::TTvmId>(GetEnv("TVM_ID"));
+    config->ClientSelfSecretEnv = "TVM_SECRET";
+    config->ClientDstMap["tracing"] = FromString<NAuth::TTvmId>(GetEnv("TRACING_TVM_ID"));
+    config->ClientEnableServiceTicketFetching = true;
+
+    return config;
+}
+
 int main(int argc, char* argv[])
 {
     try {
+
+        bool test = false;
+        auto usage = Format("usage: %v [--test] COLLECTOR_ENDPOINTS", argv[0]);
+
+        if (argc >= 2 && argv[1] == TString("--test")) {
+            test = true;
+            argv++;
+            argc--;
+        }
+
         if (argc < 2) {
-            throw yexception() << "usage: " << argv[0] << " COLLECTOR_ENDPOINTS";
+            throw yexception() << usage;
         }
 
         auto config = New<NTracing::TJaegerTracerConfig>();
         config->CollectorChannelConfig = New<NRpc::NGrpc::TChannelConfig>();
         config->CollectorChannelConfig->Address = argv[1];
 
-        config->FlushPeriod = TDuration::MilliSeconds(100);
+        config->FlushPeriod = TDuration::MilliSeconds(test ? 100 : 1000);
 
         config->ServiceName = "example";
         config->ProcessTags["host"] = "prime-dev.qyp.yandex-team.ru";
+        config->TvmService = test ? GetTvmMockConfig() : GetTvmConfig();
 
         auto jaeger = New<NTracing::TJaegerTracer>(config);
         SetGlobalTracer(jaeger);

+ 2 - 0
yt/yt/library/tracing/jaeger/CMakeLists.darwin-arm64.txt

@@ -27,6 +27,7 @@ target_link_libraries(library-tracing-jaeger PUBLIC
   contrib-libs-cxxsupp
   yutil
   yt-library-tracing
+  library-tvm-service
   core-rpc-grpc
   contrib-libs-protobuf
 )
@@ -59,6 +60,7 @@ target_link_libraries(library-tracing-jaeger.global PUBLIC
   contrib-libs-cxxsupp
   yutil
   yt-library-tracing
+  library-tvm-service
   core-rpc-grpc
   contrib-libs-protobuf
 )

+ 2 - 0
yt/yt/library/tracing/jaeger/CMakeLists.darwin-x86_64.txt

@@ -27,6 +27,7 @@ target_link_libraries(library-tracing-jaeger PUBLIC
   contrib-libs-cxxsupp
   yutil
   yt-library-tracing
+  library-tvm-service
   core-rpc-grpc
   contrib-libs-protobuf
 )
@@ -59,6 +60,7 @@ target_link_libraries(library-tracing-jaeger.global PUBLIC
   contrib-libs-cxxsupp
   yutil
   yt-library-tracing
+  library-tvm-service
   core-rpc-grpc
   contrib-libs-protobuf
 )

+ 2 - 0
yt/yt/library/tracing/jaeger/CMakeLists.linux-aarch64.txt

@@ -28,6 +28,7 @@ target_link_libraries(library-tracing-jaeger PUBLIC
   contrib-libs-cxxsupp
   yutil
   yt-library-tracing
+  library-tvm-service
   core-rpc-grpc
   contrib-libs-protobuf
 )
@@ -61,6 +62,7 @@ target_link_libraries(library-tracing-jaeger.global PUBLIC
   contrib-libs-cxxsupp
   yutil
   yt-library-tracing
+  library-tvm-service
   core-rpc-grpc
   contrib-libs-protobuf
 )

+ 2 - 0
yt/yt/library/tracing/jaeger/CMakeLists.linux-x86_64.txt

@@ -28,6 +28,7 @@ target_link_libraries(library-tracing-jaeger PUBLIC
   contrib-libs-cxxsupp
   yutil
   yt-library-tracing
+  library-tvm-service
   core-rpc-grpc
   contrib-libs-protobuf
 )
@@ -61,6 +62,7 @@ target_link_libraries(library-tracing-jaeger.global PUBLIC
   contrib-libs-cxxsupp
   yutil
   yt-library-tracing
+  library-tvm-service
   core-rpc-grpc
   contrib-libs-protobuf
 )

+ 2 - 0
yt/yt/library/tracing/jaeger/CMakeLists.windows-x86_64.txt

@@ -24,6 +24,7 @@ target_link_libraries(library-tracing-jaeger PUBLIC
   contrib-libs-cxxsupp
   yutil
   yt-library-tracing
+  library-tvm-service
   core-rpc-grpc
   contrib-libs-protobuf
 )
@@ -53,6 +54,7 @@ target_link_libraries(library-tracing-jaeger.global PUBLIC
   contrib-libs-cxxsupp
   yutil
   yt-library-tracing
+  library-tvm-service
   core-rpc-grpc
   contrib-libs-protobuf
 )

+ 24 - 4
yt/yt/library/tracing/jaeger/tracer.cpp

@@ -4,6 +4,8 @@
 
 #include <yt/yt/library/profiling/sensor.h>
 
+#include <yt/yt/library/tvm/service/tvm_service.h>
+
 #include <yt/yt/core/rpc/grpc/channel.h>
 
 #include <yt/yt/core/concurrency/action_queue.h>
@@ -27,11 +29,14 @@ using namespace NRpc;
 using namespace NConcurrency;
 using namespace NProfiling;
 using namespace NYTree;
+using namespace NAuth;
 
 ////////////////////////////////////////////////////////////////////////////////
 
 static const NLogging::TLogger Logger{"Jaeger"};
 static const NProfiling::TProfiler Profiler{"/tracing"};
+static const TString ServiceTicketMetadataName = "x-ya-service-ticket";
+static const TString TracingServiceAlias = "tracing";
 
 ////////////////////////////////////////////////////////////////////////////////
 
@@ -85,6 +90,9 @@ void TJaegerTracerConfig::Register(TRegistrar registrar)
         .Default();
     registrar.Parameter("enable_pid_tag", &TThis::EnablePidTag)
         .Default(false);
+
+    registrar.Parameter("tvm_service", &TThis::TvmService)
+        .Optional();
 }
 
 TJaegerTracerConfigPtr TJaegerTracerConfig::ApplyDynamic(const TJaegerTracerDynamicConfigPtr& dynamicConfig) const
@@ -108,6 +116,7 @@ TJaegerTracerConfigPtr TJaegerTracerConfig::ApplyDynamic(const TJaegerTracerDyna
     config->ServiceName = ServiceName;
     config->ProcessTags = ProcessTags;
     config->EnablePidTag = EnablePidTag;
+    config->TvmService = TvmService;
 
     config->Postprocess();
     return config;
@@ -287,8 +296,12 @@ TJaegerChannelManager::TJaegerChannelManager()
     , RpcTimeout_()
 { }
 
-TJaegerChannelManager::TJaegerChannelManager(const TIntrusivePtr<TJaegerTracerConfig>& config, const TString& endpoint)
-    : Endpoint_(endpoint)
+TJaegerChannelManager::TJaegerChannelManager(
+    const TIntrusivePtr<TJaegerTracerConfig>& config,
+    const TString& endpoint,
+    const ITvmServicePtr& tvmService)
+    : TvmService_(tvmService)
+    , Endpoint_(endpoint)
     , ReopenTime_(TInstant::Now() + config->ReconnectPeriod + RandomDuration(config->ReconnectPeriod))
     , RpcTimeout_(config->RpcTimeout)
     , PushedBytes_(Profiler.WithTag("endpoint", endpoint).Counter("/pushed_bytes"))
@@ -312,6 +325,12 @@ bool TJaegerChannelManager::Push(const std::vector<TSharedRef>& batches, int spa
         req->SetEnableLegacyRpcCodecs(false);
         req->set_batch(MergeRefsToString(batches));
 
+        if (TvmService_) {
+            auto* ticketExt = req->Header().MutableExtension(NRpc::NProto::TCustomMetadataExt::custom_metadata_ext);
+            ticketExt->mutable_entries()->insert(
+                {ServiceTicketMetadataName, TvmService_->GetServiceTicket(TracingServiceAlias)});
+        }
+
         YT_LOG_DEBUG("Sending spans (SpanCount: %v, PayloadSize: %v, Endpoint: %v)",
             spanCount,
             req->batch().size(),
@@ -359,6 +378,7 @@ TJaegerTracer::TJaegerTracer(
         BIND(&TJaegerTracer::Flush, MakeStrong(this)),
         config->FlushPeriod))
     , Config_(config)
+    , TvmService_(config->TvmService ? CreateTvmService(config->TvmService) : nullptr)
 {
     Profiler.AddFuncGauge("/enabled", MakeStrong(this), [this] {
         return Config_.Acquire()->IsEnabled();
@@ -563,13 +583,13 @@ void TJaegerTracer::Flush()
 
         auto it = CollectorChannels_.find(endpoint);
         if (it == CollectorChannels_.end()) {
-            it = CollectorChannels_.insert({endpoint, TJaegerChannelManager(config, endpoint)}).first;
+            it = CollectorChannels_.emplace(endpoint, TJaegerChannelManager(config, endpoint, TvmService_)).first;
         }
 
         auto& channel = it->second;
 
         if (channel.NeedsReopen(flushStartTime)) {
-            channel = TJaegerChannelManager(config, endpoint);
+            channel = TJaegerChannelManager(config, endpoint, TvmService_);
         }
 
         if (channel.Push(batches, spanCount)) {

+ 11 - 1
yt/yt/library/tracing/jaeger/tracer.h

@@ -5,6 +5,8 @@
 #include <yt/yt/library/tracing/tracer.h>
 
 #include <yt/yt/library/profiling/sensor.h>
+#include <yt/yt/library/tvm/service/config.h>
+#include <yt/yt/library/tvm/service/public.h>
 
 #include <yt/yt/core/misc/mpsc_stack.h>
 #include <yt/yt/core/misc/atomic_object.h>
@@ -77,6 +79,8 @@ public:
 
     bool EnablePidTag;
 
+    NAuth::TTvmServiceConfigPtr TvmService;
+
     TJaegerTracerConfigPtr ApplyDynamic(const TJaegerTracerDynamicConfigPtr& dynamicConfig) const;
 
     bool IsEnabled() const;
@@ -120,7 +124,10 @@ class TJaegerChannelManager
 {
 public:
     TJaegerChannelManager();
-    TJaegerChannelManager(const TIntrusivePtr<TJaegerTracerConfig>& config, const TString& endpoint);
+    TJaegerChannelManager(
+        const TIntrusivePtr<TJaegerTracerConfig>& config,
+        const TString& endpoint,
+        const NAuth::ITvmServicePtr& tvmService);
 
     bool Push(const std::vector<TSharedRef>& batches, int spanCount);
     bool NeedsReopen(TInstant currentTime);
@@ -130,6 +137,7 @@ public:
 
 private:
     NRpc::IChannelPtr Channel_;
+    NAuth::ITvmServicePtr TvmService_;
 
     TString Endpoint_;
 
@@ -175,6 +183,8 @@ private:
     THashMap<TString, TJaegerChannelManager> CollectorChannels_;
     NRpc::NGrpc::TChannelConfigPtr OpenChannelConfig_;
 
+    NAuth::ITvmServicePtr TvmService_;
+
     void Flush();
     void DequeueAll(const TJaegerTracerConfigPtr& config);
     void NotifyEmptyQueue();

+ 1 - 0
yt/yt/library/tracing/jaeger/ya.make

@@ -4,6 +4,7 @@ INCLUDE(${ARCADIA_ROOT}/yt/ya_cpp.make.inc)
 
 PEERDIR(
     yt/yt/library/tracing
+    yt/yt/library/tvm/service
     yt/yt/core/rpc/grpc
 )
 

Some files were not shown because too many files changed in this diff