Skip to content

Commit f56de22

Browse files
authored
Merge 7c1a82a into e838a62
2 parents e838a62 + 7c1a82a commit f56de22

File tree

9 files changed

+200
-93
lines changed

9 files changed

+200
-93
lines changed

ydb/core/cms/console/jaeger_tracing_configurator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ TSettings<double, TWithTag<TThrottlingSettings>> TJaegerTracingConfigurator::Get
140140
if (fraction < 0 || fraction > 1) {
141141
ALOG_ERROR(NKikimrServices::CMS_CONFIGS, "provided fraction " << fraction
142142
<< " violated range [0; 1]. Clamping it to the range");
143-
fraction = std::min(1.0, std::max(0.0, fraction));
143+
fraction = std::clamp(fraction, 0.0, 1.0);
144144
}
145145

146146
TSamplingRule<double, TWithTag<TThrottlingSettings>> rule {

ydb/core/grpc_services/base/base.h

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -732,10 +732,10 @@ inline TString MakeAuthError(const TString& in, NYql::TIssueManager& issues) {
732732
return out.Str();
733733
}
734734

735-
template <ui32 TRpcId, typename TReq, typename TResp, TRateLimiterMode RlMode = TRateLimiterMode::Off>
735+
template <ui32 TRpcId, typename TReq, typename TResp>
736736
class TGRpcRequestBiStreamWrapper
737737
: public IRequestProxyCtx
738-
, public TEventLocal<TGRpcRequestBiStreamWrapper<TRpcId, TReq, TResp, RlMode>, TRpcId>
738+
, public TEventLocal<TGRpcRequestBiStreamWrapper<TRpcId, TReq, TResp>, TRpcId>
739739
{
740740
private:
741741
void ReplyWithYdbStatus(Ydb::StatusIds::StatusCode status) override {
@@ -748,12 +748,11 @@ class TGRpcRequestBiStreamWrapper
748748
using TRequest = TReq;
749749
using TResponse = TResp;
750750
using IStreamCtx = NGRpcServer::IGRpcStreamingContext<TRequest, TResponse>;
751-
static constexpr TRateLimiterMode RateLimitMode = RlMode;
752751

753-
TGRpcRequestBiStreamWrapper(TIntrusivePtr<IStreamCtx> ctx, bool rlAllowed = true)
752+
TGRpcRequestBiStreamWrapper(TIntrusivePtr<IStreamCtx> ctx, TRequestAuxSettings auxSettings = {})
754753
: Ctx_(ctx)
755-
, RlAllowed_(rlAllowed)
756754
, TraceId(GetPeerMetaValues(NYdb::YDB_TRACE_ID_HEADER))
755+
, AuxSettings(std::move(auxSettings))
757756
{
758757
if (!TraceId) {
759758
TraceId = UlidGen.Next().ToString();
@@ -766,11 +765,29 @@ class TGRpcRequestBiStreamWrapper
766765
}
767766

768767
TRateLimiterMode GetRlMode() const override {
769-
return RlAllowed_ ? RateLimitMode : TRateLimiterMode::Off;
768+
return AuxSettings.RlMode;
770769
}
771770

772-
bool TryCustomAttributeProcess(const NKikimrScheme::TEvDescribeSchemeResult&, ICheckerIface*) override {
773-
return false;
771+
bool TryCustomAttributeProcess(const NKikimrScheme::TEvDescribeSchemeResult& schemeData,
772+
ICheckerIface* iface) override
773+
{
774+
if (!AuxSettings.CustomAttributeProcessor) {
775+
return false;
776+
} else {
777+
AuxSettings.CustomAttributeProcessor(schemeData, iface);
778+
return true;
779+
}
780+
}
781+
782+
NJaegerTracing::TRequestDiscriminator GetRequestDiscriminator() const override {
783+
return {
784+
.RequestType = AuxSettings.RequestType,
785+
.Database = GetDatabaseName(),
786+
};
787+
}
788+
789+
bool IsAuditable() const override {
790+
return (AuxSettings.AuditMode == TAuditMode::Auditable) && !this->IsInternalCall();
774791
}
775792

776793
const TMaybe<TString> GetYdbToken() const override {
@@ -933,12 +950,12 @@ class TGRpcRequestBiStreamWrapper
933950
inline static const TString EmptySerializedTokenMessage_;
934951
NYql::TIssueManager IssueManager_;
935952
TMaybe<NRpcService::TRlPath> RlPath_;
936-
bool RlAllowed_;
937953
IGRpcProxyCounters::TPtr Counters_;
938954
NWilson::TSpan Span_;
939955
bool IsTracingDecided_ = false;
940956
TULIDGenerator UlidGen;
941957
TMaybe<TString> TraceId;
958+
const TRequestAuxSettings AuxSettings;
942959
};
943960

944961
template <typename TDerived>

ydb/core/grpc_services/rpc_calls.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ using TEvListEndpointsRequest = TGRpcRequestWrapper<TRpcServices::EvListEndpoint
5050
using TEvBiStreamPingRequest = TGRpcRequestBiStreamWrapper<TRpcServices::EvBiStreamPing, Draft::Dummy::PingRequest, Draft::Dummy::PingResponse>;
5151
using TEvStreamPQWriteRequest = TGRpcRequestBiStreamWrapper<TRpcServices::EvStreamPQWrite, Ydb::PersQueue::V1::StreamingWriteClientMessage, Ydb::PersQueue::V1::StreamingWriteServerMessage>;
5252
using TEvStreamPQMigrationReadRequest = TGRpcRequestBiStreamWrapper<TRpcServices::EvStreamPQMigrationRead, Ydb::PersQueue::V1::MigrationStreamingReadClientMessage, Ydb::PersQueue::V1::MigrationStreamingReadServerMessage>;
53-
using TEvStreamTopicWriteRequest = TGRpcRequestBiStreamWrapper<TRpcServices::EvStreamTopicWrite, Ydb::Topic::StreamWriteMessage::FromClient, Ydb::Topic::StreamWriteMessage::FromServer, TRateLimiterMode::RuManual>;
54-
using TEvStreamTopicReadRequest = TGRpcRequestBiStreamWrapper<TRpcServices::EvStreamTopicRead, Ydb::Topic::StreamReadMessage::FromClient, Ydb::Topic::StreamReadMessage::FromServer, TRateLimiterMode::RuManual>;
55-
using TEvStreamTopicDirectReadRequest = TGRpcRequestBiStreamWrapper<TRpcServices::EvStreamTopicDirectRead, Ydb::Topic::StreamDirectReadMessage::FromClient, Ydb::Topic::StreamDirectReadMessage::FromServer, TRateLimiterMode::RuManual>;
53+
using TEvStreamTopicWriteRequest = TGRpcRequestBiStreamWrapper<TRpcServices::EvStreamTopicWrite, Ydb::Topic::StreamWriteMessage::FromClient, Ydb::Topic::StreamWriteMessage::FromServer>;
54+
using TEvStreamTopicReadRequest = TGRpcRequestBiStreamWrapper<TRpcServices::EvStreamTopicRead, Ydb::Topic::StreamReadMessage::FromClient, Ydb::Topic::StreamReadMessage::FromServer>;
55+
using TEvStreamTopicDirectReadRequest = TGRpcRequestBiStreamWrapper<TRpcServices::EvStreamTopicDirectRead, Ydb::Topic::StreamDirectReadMessage::FromClient, Ydb::Topic::StreamDirectReadMessage::FromServer>;
5656
using TEvCommitOffsetRequest = TGRpcRequestWrapper<TRpcServices::EvTopicCommitOffset, Ydb::Topic::CommitOffsetRequest, Ydb::Topic::CommitOffsetResponse, true>;
5757
using TEvPQReadInfoRequest = TGRpcRequestWrapper<TRpcServices::EvPQReadInfo, Ydb::PersQueue::V1::ReadInfoRequest, Ydb::PersQueue::V1::ReadInfoResponse, true>;
5858
//TODO: Change this to runtime dispatching!
@@ -121,8 +121,8 @@ void RefreshTokenSendRequest(const TActorContext& ctx, IEventBase* refreshTokenR
121121
void RefreshTokenReplyUnauthenticated(TActorId recipient, TActorId sender, NYql::TIssues&& issues);
122122
void RefreshTokenReplyUnavailable(TActorId recipient, NYql::TIssues&& issues);
123123

124-
template <ui32 TRpcId, typename TReq, typename TResp, TRateLimiterMode RlMode>
125-
void TGRpcRequestBiStreamWrapper<TRpcId, TReq, TResp, RlMode>::RefreshToken(const TString& token, const TActorContext& ctx, TActorId id) {
124+
template <ui32 TRpcId, typename TReq, typename TResp>
125+
void TGRpcRequestBiStreamWrapper<TRpcId, TReq, TResp>::RefreshToken(const TString& token, const TActorContext& ctx, TActorId id) {
126126
using TSelf = typename std::remove_pointer<decltype(this)>::type;
127127
using TRefreshToken = typename TRefreshTokenTypeForRequest<TSelf>::type;
128128
RefreshTokenSendRequest(ctx, new TRefreshToken(token, GetDatabaseName().GetOrElse(""), id));

ydb/core/jaeger_tracing/request_discriminator.cpp

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,97 @@ const TRequestDiscriminator TRequestDiscriminator::EMPTY {
77
.Database = NothingObject,
88
};
99

10+
extern const THashMap<TStringBuf, ERequestType> NameToRequestType = {
11+
{"KeyValue.CreateVolume", ERequestType::KEYVALUE_CREATEVOLUME},
12+
{"KeyValue.DropVolume", ERequestType::KEYVALUE_DROPVOLUME},
13+
{"KeyValue.AlterVolume", ERequestType::KEYVALUE_ALTERVOLUME},
14+
{"KeyValue.DescribeVolume", ERequestType::KEYVALUE_DESCRIBEVOLUME},
15+
{"KeyValue.ListLocalPartitions", ERequestType::KEYVALUE_LISTLOCALPARTITIONS},
16+
{"KeyValue.AcquireLock", ERequestType::KEYVALUE_ACQUIRELOCK},
17+
{"KeyValue.ExecuteTransaction", ERequestType::KEYVALUE_EXECUTETRANSACTION},
18+
{"KeyValue.Read", ERequestType::KEYVALUE_READ},
19+
{"KeyValue.ReadRange", ERequestType::KEYVALUE_READRANGE},
20+
{"KeyValue.ListRange", ERequestType::KEYVALUE_LISTRANGE},
21+
{"KeyValue.GetStorageChannelStatus", ERequestType::KEYVALUE_GETSTORAGECHANNELSTATUS},
22+
23+
{"Table.CreateSession", ERequestType::TABLE_CREATESESSION},
24+
{"Table.KeepAlive", ERequestType::TABLE_KEEPALIVE},
25+
{"Table.AlterTable", ERequestType::TABLE_ALTERTABLE},
26+
{"Table.CreateTable", ERequestType::TABLE_CREATETABLE},
27+
{"Table.DropTable", ERequestType::TABLE_DROPTABLE},
28+
{"Table.DescribeTable", ERequestType::TABLE_DESCRIBETABLE},
29+
{"Table.CopyTable", ERequestType::TABLE_COPYTABLE},
30+
{"Table.CopyTables", ERequestType::TABLE_COPYTABLES},
31+
{"Table.RenameTables", ERequestType::TABLE_RENAMETABLES},
32+
{"Table.ExplainDataQuery", ERequestType::TABLE_EXPLAINDATAQUERY},
33+
{"Table.ExecuteSchemeQuery", ERequestType::TABLE_EXECUTESCHEMEQUERY},
34+
{"Table.BeginTransaction", ERequestType::TABLE_BEGINTRANSACTION},
35+
{"Table.DescribeTableOptions", ERequestType::TABLE_DESCRIBETABLEOPTIONS},
36+
{"Table.DeleteSession", ERequestType::TABLE_DELETESESSION},
37+
{"Table.CommitTransaction", ERequestType::TABLE_COMMITTRANSACTION},
38+
{"Table.RollbackTransaction", ERequestType::TABLE_ROLLBACKTRANSACTION},
39+
{"Table.PrepareDataQuery", ERequestType::TABLE_PREPAREDATAQUERY},
40+
{"Table.ExecuteDataQuery", ERequestType::TABLE_EXECUTEDATAQUERY},
41+
{"Table.BulkUpsert", ERequestType::TABLE_BULKUPSERT},
42+
{"Table.StreamExecuteScanQuery", ERequestType::TABLE_STREAMEXECUTESCANQUERY},
43+
{"Table.StreamReadTable", ERequestType::TABLE_STREAMREADTABLE},
44+
{"Table.ReadRows", ERequestType::TABLE_READROWS},
45+
46+
{"Query.ExecuteQuery", ERequestType::QUERY_EXECUTEQUERY},
47+
{"Query.ExecuteScript", ERequestType::QUERY_EXECUTESCRIPT},
48+
{"Query.FetchScriptResults", ERequestType::QUERY_FETCHSCRIPTRESULTS},
49+
{"Query.CreateSession", ERequestType::QUERY_CREATESESSION},
50+
{"Query.DeleteSession", ERequestType::QUERY_DELETESESSION},
51+
{"Query.AttachSession", ERequestType::QUERY_ATTACHSESSION},
52+
{"Query.BeginTransaction", ERequestType::QUERY_BEGINTRANSACTION},
53+
{"Query.CommitTransaction", ERequestType::QUERY_COMMITTRANSACTION},
54+
{"Query.RollbackTransaction", ERequestType::QUERY_ROLLBACKTRANSACTION},
55+
56+
{"Discovery.WhoAmI", ERequestType::DISCOVERY_WHOAMI},
57+
{"Discovery.NodeRegistration", ERequestType::DISCOVERY_NODEREGISTRATION},
58+
{"Discovery.ListEndpoints", ERequestType::DISCOVERY_LISTENDPOINTS},
59+
60+
{"RateLimiter.CreateResource", ERequestType::RATELIMITER_CREATE_RESOURCE},
61+
{"RateLimiter.AlterResource", ERequestType::RATELIMITER_ALTER_RESOURCE},
62+
{"RateLimiter.DropResource", ERequestType::RATELIMITER_DROP_RESOURCE},
63+
{"RateLimiter.ListResources", ERequestType::RATELIMITER_LIST_RESOURCES},
64+
{"RateLimiter.DescribeResource", ERequestType::RATELIMITER_DESCRIBE_RESOURCE},
65+
{"RateLimiter.AcquireResource", ERequestType::RATELIMITER_ACQUIRE_RESOURCE},
66+
67+
{"BSConfig.ReplaceStorageConfig", ERequestType::BSCONFIG_REPLACESTORAGECONFIG},
68+
{"BSConfig.FetchStorageConfig", ERequestType::BSCONFIG_FETCHSTORAGECONFIG},
69+
70+
{"Topic.StreamWrite", ERequestType::TOPIC_STREAMWRITE},
71+
{"Topic.StreamWrite.Init", ERequestType::TOPIC_STREAMWRITE_INIT},
72+
{"Topic.StreamWrite.Write", ERequestType::TOPIC_STREAMWRITE_WRITE},
73+
{"Topic.StreamWrite.UpdateToken", ERequestType::TOPIC_STREAMWRITE_UPDATE_TOKEN},
74+
{"Topic.StreamRead", ERequestType::TOPIC_STREAMREAD},
75+
{"Topic.StreamRead.Init", ERequestType::TOPIC_STREAMREAD_INIT},
76+
{"Topic.StreamRead.Read", ERequestType::TOPIC_STREAMREAD_READ},
77+
{"Topic.StreamRead.CommitOffset", ERequestType::TOPIC_STREAMREAD_COMMIT_OFFSET},
78+
{"Topic.StreamRead.PartitionSessionStatus", ERequestType::TOPIC_STREAMREAD_PARTITION_SESSION_STATUS},
79+
{"Topic.StreamRead.UpdateToken", ERequestType::TOPIC_STREAMREAD_UPDATE_TOKEN},
80+
{"Topic.StreamRead.DirectReadAck", ERequestType::TOPIC_STREAMREAD_DIRECT_READ_ACK},
81+
{"Topic.StreamRead.StartPartitionSession", ERequestType::TOPIC_STREAMREAD_START_PARTITION_SESSION},
82+
{"Topic.StreamRead.StopPartitionSession", ERequestType::TOPIC_STREAMREAD_STOP_PARTITION_SESSION},
83+
{"Topic.StreamDirectRead", ERequestType::TOPIC_STREAMDIRECTREAD},
84+
{"Topic.StreamDirectRead.Init", ERequestType::TOPIC_STREAMDIRECTREAD_INIT},
85+
{"Topic.StreamDirectRead.StartDirectReadPartitionSession", ERequestType::TOPIC_STREAMDIRECTREAD_START_DIRECT_READ_PARTITION_SESSION},
86+
{"Topic.StreamDirectRead.UpdateToken", ERequestType::TOPIC_STREAMDIRECTREAD_UPDATE_TOKEN},
87+
{"Topic.CommitOffset", ERequestType::TOPIC_COMMITOFFSET},
88+
{"Topic.UpdateOffsetsInTransaction", ERequestType::TOPIC_UPDATEOFFSETSINTRANSACTION},
89+
{"Topic.CreateTopic", ERequestType::TOPIC_CREATETOPIC},
90+
{"Topic.DescribeTopic", ERequestType::TOPIC_DESCRIBETOPIC},
91+
{"Topic.DescribePartition", ERequestType::TOPIC_DESCRIBEPARTITION},
92+
{"Topic.DescribeConsumer", ERequestType::TOPIC_DESCRIBECONSUMER},
93+
{"Topic.AlterTopic", ERequestType::TOPIC_ALTERTOPIC},
94+
{"Topic.DropTopic", ERequestType::TOPIC_DROPTOPIC},
95+
};
96+
97+
extern const THashSet<ERequestType> NoDefaultSamplingRequestTypes = {
98+
ERequestType::TOPIC_STREAMWRITE,
99+
ERequestType::TOPIC_STREAMREAD,
100+
ERequestType::TOPIC_STREAMDIRECTREAD,
101+
};
102+
10103
} // namespace NKikimr::NJaegerTracing

ydb/core/jaeger_tracing/request_discriminator.h

Lines changed: 37 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <cstddef>
44

55
#include <util/generic/hash.h>
6+
#include <util/generic/hash_set.h>
67
#include <util/generic/maybe.h>
78
#include <util/generic/strbuf.h>
89
#include <util/generic/string.h>
@@ -77,71 +78,47 @@ enum class ERequestType: size_t {
7778
PING_SCHEME_CACHE,
7879
PING_TX_PROXY,
7980

81+
// Requests inside write session
82+
TOPIC_STREAMWRITE,
83+
TOPIC_STREAMWRITE_INIT,
84+
TOPIC_STREAMWRITE_WRITE,
85+
TOPIC_STREAMWRITE_UPDATE_TOKEN,
86+
// Requests inside read session
87+
TOPIC_STREAMREAD,
88+
TOPIC_STREAMREAD_INIT,
89+
TOPIC_STREAMREAD_READ,
90+
TOPIC_STREAMREAD_COMMIT_OFFSET,
91+
TOPIC_STREAMREAD_PARTITION_SESSION_STATUS,
92+
TOPIC_STREAMREAD_UPDATE_TOKEN,
93+
TOPIC_STREAMREAD_DIRECT_READ_ACK,
94+
TOPIC_STREAMREAD_START_PARTITION_SESSION,
95+
TOPIC_STREAMREAD_STOP_PARTITION_SESSION,
96+
// Requests inside direct read session
97+
TOPIC_STREAMDIRECTREAD,
98+
TOPIC_STREAMDIRECTREAD_INIT,
99+
TOPIC_STREAMDIRECTREAD_START_DIRECT_READ_PARTITION_SESSION,
100+
TOPIC_STREAMDIRECTREAD_UPDATE_TOKEN,
101+
// Single requests
102+
TOPIC_COMMITOFFSET,
103+
TOPIC_UPDATEOFFSETSINTRANSACTION,
104+
TOPIC_CREATETOPIC,
105+
TOPIC_DESCRIBETOPIC,
106+
TOPIC_DESCRIBEPARTITION,
107+
TOPIC_DESCRIBECONSUMER,
108+
TOPIC_ALTERTOPIC,
109+
TOPIC_DROPTOPIC,
110+
80111
REQUEST_TYPES_CNT, // Add new types above this line
81112
};
82113

83114
static constexpr size_t kRequestTypesCnt = static_cast<size_t>(ERequestType::REQUEST_TYPES_CNT);
84115

85-
static const THashMap<TStringBuf, ERequestType> NameToRequestType = {
86-
{"KeyValue.CreateVolume", ERequestType::KEYVALUE_CREATEVOLUME},
87-
{"KeyValue.DropVolume", ERequestType::KEYVALUE_DROPVOLUME},
88-
{"KeyValue.AlterVolume", ERequestType::KEYVALUE_ALTERVOLUME},
89-
{"KeyValue.DescribeVolume", ERequestType::KEYVALUE_DESCRIBEVOLUME},
90-
{"KeyValue.ListLocalPartitions", ERequestType::KEYVALUE_LISTLOCALPARTITIONS},
91-
{"KeyValue.AcquireLock", ERequestType::KEYVALUE_ACQUIRELOCK},
92-
{"KeyValue.ExecuteTransaction", ERequestType::KEYVALUE_EXECUTETRANSACTION},
93-
{"KeyValue.Read", ERequestType::KEYVALUE_READ},
94-
{"KeyValue.ReadRange", ERequestType::KEYVALUE_READRANGE},
95-
{"KeyValue.ListRange", ERequestType::KEYVALUE_LISTRANGE},
96-
{"KeyValue.GetStorageChannelStatus", ERequestType::KEYVALUE_GETSTORAGECHANNELSTATUS},
97-
98-
{"Table.CreateSession", ERequestType::TABLE_CREATESESSION},
99-
{"Table.KeepAlive", ERequestType::TABLE_KEEPALIVE},
100-
{"Table.AlterTable", ERequestType::TABLE_ALTERTABLE},
101-
{"Table.CreateTable", ERequestType::TABLE_CREATETABLE},
102-
{"Table.DropTable", ERequestType::TABLE_DROPTABLE},
103-
{"Table.DescribeTable", ERequestType::TABLE_DESCRIBETABLE},
104-
{"Table.CopyTable", ERequestType::TABLE_COPYTABLE},
105-
{"Table.CopyTables", ERequestType::TABLE_COPYTABLES},
106-
{"Table.RenameTables", ERequestType::TABLE_RENAMETABLES},
107-
{"Table.ExplainDataQuery", ERequestType::TABLE_EXPLAINDATAQUERY},
108-
{"Table.ExecuteSchemeQuery", ERequestType::TABLE_EXECUTESCHEMEQUERY},
109-
{"Table.BeginTransaction", ERequestType::TABLE_BEGINTRANSACTION},
110-
{"Table.DescribeTableOptions", ERequestType::TABLE_DESCRIBETABLEOPTIONS},
111-
{"Table.DeleteSession", ERequestType::TABLE_DELETESESSION},
112-
{"Table.CommitTransaction", ERequestType::TABLE_COMMITTRANSACTION},
113-
{"Table.RollbackTransaction", ERequestType::TABLE_ROLLBACKTRANSACTION},
114-
{"Table.PrepareDataQuery", ERequestType::TABLE_PREPAREDATAQUERY},
115-
{"Table.ExecuteDataQuery", ERequestType::TABLE_EXECUTEDATAQUERY},
116-
{"Table.BulkUpsert", ERequestType::TABLE_BULKUPSERT},
117-
{"Table.StreamExecuteScanQuery", ERequestType::TABLE_STREAMEXECUTESCANQUERY},
118-
{"Table.StreamReadTable", ERequestType::TABLE_STREAMREADTABLE},
119-
{"Table.ReadRows", ERequestType::TABLE_READROWS},
120-
121-
{"Query.ExecuteQuery", ERequestType::QUERY_EXECUTEQUERY},
122-
{"Query.ExecuteScript", ERequestType::QUERY_EXECUTESCRIPT},
123-
{"Query.FetchScriptResults", ERequestType::QUERY_FETCHSCRIPTRESULTS},
124-
{"Query.CreateSession", ERequestType::QUERY_CREATESESSION},
125-
{"Query.DeleteSession", ERequestType::QUERY_DELETESESSION},
126-
{"Query.AttachSession", ERequestType::QUERY_ATTACHSESSION},
127-
{"Query.BeginTransaction", ERequestType::QUERY_BEGINTRANSACTION},
128-
{"Query.CommitTransaction", ERequestType::QUERY_COMMITTRANSACTION},
129-
{"Query.RollbackTransaction", ERequestType::QUERY_ROLLBACKTRANSACTION},
130-
131-
{"Discovery.WhoAmI", ERequestType::DISCOVERY_WHOAMI},
132-
{"Discovery.NodeRegistration", ERequestType::DISCOVERY_NODEREGISTRATION},
133-
{"Discovery.ListEndpoints", ERequestType::DISCOVERY_LISTENDPOINTS},
134-
135-
{"RateLimiter.CreateResource", ERequestType::RATELIMITER_CREATE_RESOURCE},
136-
{"RateLimiter.AlterResource", ERequestType::RATELIMITER_ALTER_RESOURCE},
137-
{"RateLimiter.DropResource", ERequestType::RATELIMITER_DROP_RESOURCE},
138-
{"RateLimiter.ListResources", ERequestType::RATELIMITER_LIST_RESOURCES},
139-
{"RateLimiter.DescribeResource", ERequestType::RATELIMITER_DESCRIBE_RESOURCE},
140-
{"RateLimiter.AcquireResource", ERequestType::RATELIMITER_ACQUIRE_RESOURCE},
141-
142-
{"BSConfig.ReplaceStorageConfig", ERequestType::BSCONFIG_REPLACESTORAGECONFIG},
143-
{"BSConfig.FetchStorageConfig", ERequestType::BSCONFIG_FETCHSTORAGECONFIG},
144-
};
116+
// Name to request map
117+
extern const THashMap<TStringBuf, ERequestType> NameToRequestType;
118+
119+
// Request types that don't inherit default sampling rules for UNSPECIFIED request type.
120+
// Actually it is the set of long session requests that generate their own sampled requests.
121+
extern const THashSet<ERequestType> NoDefaultSamplingRequestTypes;
145122

146123
struct TRequestDiscriminator {
147124
ERequestType RequestType = ERequestType::UNSPECIFIED;

ydb/core/jaeger_tracing/sampling_throttling_configurator.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ namespace NKikimr::NJaegerTracing {
1212
namespace {
1313

1414
template<class T>
15-
void PropagateUnspecifiedRequest(TRulesContainer<T>& rules) {
15+
void PropagateUnspecifiedRequest(TRulesContainer<T>& rules, const THashSet<ERequestType>& noDefaultRequestTypes = {}) {
1616
constexpr auto unspecifiedRequestType = static_cast<size_t>(ERequestType::UNSPECIFIED);
1717
const auto& unspecifiedRequestTypeRules = rules[unspecifiedRequestType];
1818

1919
for (size_t requestType = 0; requestType < kRequestTypesCnt; ++requestType) {
20-
if (requestType == unspecifiedRequestType) {
20+
if (requestType == unspecifiedRequestType || noDefaultRequestTypes.contains(static_cast<ERequestType>(requestType))) {
2121
continue;
2222
}
2323

@@ -53,7 +53,7 @@ TIntrusivePtr<TSamplingThrottlingControl> TSamplingThrottlingConfigurator::GetCo
5353

5454
void TSamplingThrottlingConfigurator::UpdateSettings(TSettings<double, TWithTag<TThrottlingSettings>> settings) {
5555
auto enrichedSettings = GenerateThrottlers(std::move(settings));
56-
PropagateUnspecifiedRequest(enrichedSettings.SamplingRules);
56+
PropagateUnspecifiedRequest(enrichedSettings.SamplingRules, NoDefaultSamplingRequestTypes);
5757
PropagateUnspecifiedRequest(enrichedSettings.ExternalThrottlingRules);
5858
CurrentSettings = std::move(enrichedSettings);
5959

0 commit comments

Comments
 (0)