Skip to content

Commit 1b3a63f

Browse files
committed
Create separate trace id for BlobStorage requests and link them to original traces
1 parent 57741e4 commit 1b3a63f

20 files changed

+164
-68
lines changed

ydb/core/base/blobstorage.cpp

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,37 @@ bool operator<(const TPDiskCategory x, const TPDiskCategory y) {
4444
return std::make_tuple(x.Type(), x.Kind()) < std::make_tuple(y.Type(), y.Kind());
4545
}
4646

47+
void TEvBlobStorage::TEvPut::ToSpan(NWilson::TSpan& span) const {
48+
span
49+
.Attribute("Id", Id.ToString())
50+
.Attribute("PutHandleClass", NKikimrBlobStorage::EPutHandleClass_Name(HandleClass));
51+
}
52+
4753
std::unique_ptr<TEvBlobStorage::TEvPutResult> TEvBlobStorage::TEvPut::MakeErrorResponse(
4854
NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId groupId) {
4955
auto res = std::make_unique<TEvPutResult>(status, Id, TStorageStatusFlags(), groupId, 0.0f);
5056
res->ErrorReason = errorReason;
5157
return res;
5258
}
5359

60+
void TEvBlobStorage::TEvGet::ToSpan(NWilson::TSpan& span) const {
61+
NWilson::TArrayValue queries;
62+
queries.reserve(QuerySize);
63+
for (ui32 i = 0; i < QuerySize; ++i) {
64+
const auto& q = Queries[i];
65+
queries.emplace_back(NWilson::TKeyValueList{{
66+
{"Id", q.Id.ToString()},
67+
{"Shift", q.Shift},
68+
{"Size", q.Size},
69+
}});
70+
}
71+
span
72+
.Attribute("Queries", std::move(queries))
73+
.Attribute("GetHandleClass", NKikimrBlobStorage::EGetHandleClass_Name(GetHandleClass))
74+
.Attribute("MustRestoreFirst", MustRestoreFirst)
75+
.Attribute("IsIndexOnly", IsIndexOnly);
76+
}
77+
5478
std::unique_ptr<TEvBlobStorage::TEvGetResult> TEvBlobStorage::TEvGet::MakeErrorResponse(
5579
NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId groupId) {
5680
auto res = std::make_unique<TEvGetResult>(status, QuerySize, groupId);
@@ -67,55 +91,119 @@ std::unique_ptr<TEvBlobStorage::TEvGetResult> TEvBlobStorage::TEvGet::MakeErrorR
6791
return res;
6892
}
6993

94+
void TEvBlobStorage::TEvBlock::ToSpan(NWilson::TSpan& span) const {
95+
span
96+
.Attribute("TabletId", ::ToString(TabletId))
97+
.Attribute("Generation", Generation);
98+
}
99+
70100
std::unique_ptr<TEvBlobStorage::TEvBlockResult> TEvBlobStorage::TEvBlock::MakeErrorResponse(
71101
NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId /*groupId*/) {
72102
auto res = std::make_unique<TEvBlockResult>(status);
73103
res->ErrorReason = errorReason;
74104
return res;
75105
}
76106

107+
void TEvBlobStorage::TEvPatch::ToSpan(NWilson::TSpan& span) const {
108+
span
109+
.Attribute("OriginalGroupId", OriginalGroupId)
110+
.Attribute("OriginalId", OriginalId.ToString())
111+
.Attribute("PatchedId", PatchedId.ToString());
112+
}
113+
77114
std::unique_ptr<TEvBlobStorage::TEvPatchResult> TEvBlobStorage::TEvPatch::MakeErrorResponse(
78115
NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId groupId) {
79116
auto res = std::make_unique<TEvPatchResult>(status, PatchedId, TStorageStatusFlags(), groupId, 0.0f);
80117
res->ErrorReason = errorReason;
81118
return res;
82119
}
83120

121+
void TEvBlobStorage::TEvInplacePatch::ToSpan(NWilson::TSpan& /*span*/) const {
122+
}
123+
84124
std::unique_ptr<TEvBlobStorage::TEvInplacePatchResult> TEvBlobStorage::TEvInplacePatch::MakeErrorResponse(
85125
NKikimrProto::EReplyStatus status, const TString& errorReason) {
86126
auto res = std::make_unique<TEvInplacePatchResult>(status, PatchedId, TStorageStatusFlags(), 0.0f);
87127
res->ErrorReason = errorReason;
88128
return res;
89129
}
90130

131+
void TEvBlobStorage::TEvDiscover::ToSpan(NWilson::TSpan& span) const {
132+
span
133+
.Attribute("TabletId", ::ToString(TabletId))
134+
.Attribute("ReadBody", ReadBody);
135+
}
136+
91137
std::unique_ptr<TEvBlobStorage::TEvDiscoverResult> TEvBlobStorage::TEvDiscover::MakeErrorResponse(
92138
NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId/*groupId*/) {
93139
auto res = std::make_unique<TEvDiscoverResult>(status, MinGeneration, 0);
94140
res->ErrorReason = errorReason;
95141
return res;
96142
}
97143

144+
void TEvBlobStorage::TEvRange::ToSpan(NWilson::TSpan& span) const {
145+
span
146+
.Attribute("TabletId", ::ToString(TabletId))
147+
.Attribute("From", From.ToString())
148+
.Attribute("To", To.ToString())
149+
.Attribute("MustRestoreFirst", MustRestoreFirst)
150+
.Attribute("IsIndexOnly", IsIndexOnly);
151+
}
152+
98153
std::unique_ptr<TEvBlobStorage::TEvRangeResult> TEvBlobStorage::TEvRange::MakeErrorResponse(
99154
NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId groupId) {
100155
auto res = std::make_unique<TEvRangeResult>(status, From, To, groupId);
101156
res->ErrorReason = errorReason;
102157
return res;
103158
}
104159

160+
void TEvBlobStorage::TEvCollectGarbage::ToSpan(NWilson::TSpan& span) const {
161+
span
162+
.Attribute("TabletId", ::ToString(TabletId))
163+
.Attribute("RecordGeneration", RecordGeneration)
164+
.Attribute("PerGenerationCounter", PerGenerationCounter)
165+
.Attribute("Channel", Channel);
166+
167+
if (Collect) {
168+
span
169+
.Attribute("CollectGeneration", CollectGeneration)
170+
.Attribute("CollectStep", CollectStep);
171+
}
172+
173+
auto vector = [&](const auto& name, const auto& v) {
174+
if (v) {
175+
NWilson::TArrayValue items;
176+
items.reserve(v->size());
177+
for (const TLogoBlobID& id : *v) {
178+
items.emplace_back(id.ToString());
179+
}
180+
span.Attribute(name, std::move(items));
181+
}
182+
};
183+
vector("Keep", Keep);
184+
vector("DoNotKeep", DoNotKeep);
185+
}
186+
105187
std::unique_ptr<TEvBlobStorage::TEvCollectGarbageResult> TEvBlobStorage::TEvCollectGarbage::MakeErrorResponse(
106188
NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId /*groupId*/) {
107189
auto res = std::make_unique<TEvCollectGarbageResult>(status, TabletId, RecordGeneration, PerGenerationCounter, Channel);
108190
res->ErrorReason = errorReason;
109191
return res;
110192
}
111193

194+
void TEvBlobStorage::TEvStatus::ToSpan(NWilson::TSpan& /*span*/) const
195+
{}
196+
112197
std::unique_ptr<TEvBlobStorage::TEvStatusResult> TEvBlobStorage::TEvStatus::MakeErrorResponse(
113198
NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId /*groupId*/) {
114199
auto res = std::make_unique<TEvStatusResult>(status, TStorageStatusFlags());
115200
res->ErrorReason = errorReason;
116201
return res;
117202
}
118203

204+
void TEvBlobStorage::TEvAssimilate::ToSpan(NWilson::TSpan& /*span*/) const
205+
{}
206+
119207
std::unique_ptr<TEvBlobStorage::TEvAssimilateResult> TEvBlobStorage::TEvAssimilate::MakeErrorResponse(
120208
NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId/*groupId*/) {
121209
return std::make_unique<TEvBlobStorage::TEvAssimilateResult>(status, errorReason);

ydb/core/base/blobstorage.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <ydb/library/yverify_stream/yverify_stream.h>
1717

1818
#include <ydb/library/actors/wilson/wilson_trace.h>
19+
#include <ydb/library/actors/wilson/wilson_span.h>
1920
#include <library/cpp/lwtrace/shuttle.h>
2021
#include <ydb/library/actors/util/rope.h>
2122
#include <ydb/library/actors/util/shared_data_rope_backend.h>
@@ -993,6 +994,8 @@ struct TEvBlobStorage {
993994
return sizeof(*this) + Buffer.GetSize();
994995
}
995996

997+
void ToSpan(NWilson::TSpan& span) const;
998+
996999
std::unique_ptr<TEvPutResult> MakeErrorResponse(NKikimrProto::EReplyStatus status, const TString& errorReason,
9971000
TGroupId groupId);
9981001
};
@@ -1196,6 +1199,8 @@ struct TEvBlobStorage {
11961199
return sizeof(*this) + QuerySize * sizeof(TQuery);
11971200
}
11981201

1202+
void ToSpan(NWilson::TSpan& span) const;
1203+
11991204
std::unique_ptr<TEvGetResult> MakeErrorResponse(NKikimrProto::EReplyStatus status, const TString& errorReason,
12001205
TGroupId groupId);
12011206

@@ -1349,6 +1354,8 @@ struct TEvBlobStorage {
13491354
return sizeof(*this);
13501355
}
13511356

1357+
void ToSpan(NWilson::TSpan& span) const;
1358+
13521359
std::unique_ptr<TEvBlockResult> MakeErrorResponse(NKikimrProto::EReplyStatus status, const TString& errorReason,
13531360
TGroupId groupId);
13541361
};
@@ -1546,6 +1553,8 @@ struct TEvBlobStorage {
15461553
return sizeof(*this) + sizeof(TDiff) * DiffCount;
15471554
}
15481555

1556+
void ToSpan(NWilson::TSpan& span) const;
1557+
15491558
std::unique_ptr<TEvPatchResult> MakeErrorResponse(NKikimrProto::EReplyStatus status,
15501559
const TString& errorReason, TGroupId groupId);
15511560
};
@@ -1636,6 +1645,8 @@ struct TEvBlobStorage {
16361645
return sizeof(*this) + sizeof(TDiff) * DiffCount;
16371646
}
16381647

1648+
void ToSpan(NWilson::TSpan& span) const;
1649+
16391650
std::unique_ptr<TEvInplacePatchResult> MakeErrorResponse(NKikimrProto::EReplyStatus status,
16401651
const TString& errorReason);
16411652
};
@@ -1723,6 +1734,8 @@ struct TEvBlobStorage {
17231734
return sizeof(*this);
17241735
}
17251736

1737+
void ToSpan(NWilson::TSpan& span) const;
1738+
17261739
std::unique_ptr<TEvDiscoverResult> MakeErrorResponse(NKikimrProto::EReplyStatus status, const TString& errorReason,
17271740
TGroupId groupId);
17281741
};
@@ -1828,6 +1841,8 @@ struct TEvBlobStorage {
18281841
return sizeof(*this);
18291842
}
18301843

1844+
void ToSpan(NWilson::TSpan& span) const;
1845+
18311846
std::unique_ptr<TEvRangeResult> MakeErrorResponse(NKikimrProto::EReplyStatus status, const TString& errorReason,
18321847
TGroupId groupId);
18331848
};
@@ -2023,6 +2038,8 @@ struct TEvBlobStorage {
20232038
return sizeof(*this) + ((Keep ? Keep->size() : 0) + (DoNotKeep ? DoNotKeep->size() : 0)) * sizeof(TLogoBlobID);
20242039
}
20252040

2041+
void ToSpan(NWilson::TSpan& span) const;
2042+
20262043
std::unique_ptr<TEvCollectGarbageResult> MakeErrorResponse(NKikimrProto::EReplyStatus status, const TString& errorReason,
20272044
TGroupId groupId);
20282045
};
@@ -2091,6 +2108,8 @@ struct TEvBlobStorage {
20912108
return sizeof(*this);
20922109
}
20932110

2111+
void ToSpan(NWilson::TSpan& span) const;
2112+
20942113
std::unique_ptr<TEvStatusResult> MakeErrorResponse(NKikimrProto::EReplyStatus status, const TString& errorReason,
20952114
TGroupId groupId);
20962115
};
@@ -2166,6 +2185,8 @@ struct TEvBlobStorage {
21662185
return sizeof(*this);
21672186
}
21682187

2188+
void ToSpan(NWilson::TSpan& span) const;
2189+
21692190
std::unique_ptr<TEvAssimilateResult> MakeErrorResponse(NKikimrProto::EReplyStatus status, const TString& errorReason,
21702191
TGroupId groupId);
21712192
};

ydb/core/blobstorage/dsproxy/dsproxy.h

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,18 +175,20 @@ class TBlobStorageGroupRequestActor : public TActor<TDerived> {
175175
return NKikimrServices::TActivity::BS_GROUP_REQUEST;
176176
}
177177

178+
template<typename TEv>
178179
TBlobStorageGroupRequestActor(TIntrusivePtr<TBlobStorageGroupInfo> info, TIntrusivePtr<TGroupQueues> groupQueues,
179180
TIntrusivePtr<TBlobStorageGroupProxyMon> mon, const TActorId& source, ui64 cookie,
180181
NKikimrServices::EServiceKikimr logComponent, bool logAccEnabled, TMaybe<TGroupStat::EKind> latencyQueueKind,
181182
TInstant now, TIntrusivePtr<TStoragePoolCounters> &storagePoolCounters, ui32 restartCounter,
182-
NWilson::TSpan&& span, std::shared_ptr<TEvBlobStorage::TExecutionRelay> executionRelay)
183+
NWilson::TTraceId&& traceId, const char *name, const TEv *event,
184+
std::shared_ptr<TEvBlobStorage::TExecutionRelay> executionRelay)
183185
: TActor<TDerived>(&TThis::InitialStateFunc, TDerived::ActorActivityType())
184186
, Info(std::move(info))
185187
, GroupQueues(std::move(groupQueues))
186188
, Mon(std::move(mon))
187189
, PoolCounters(storagePoolCounters)
188190
, LogCtx(logComponent, logAccEnabled)
189-
, Span(std::move(span))
191+
, ParentSpan(TWilson::BlobStorage, std::move(traceId), name)
190192
, RestartCounter(restartCounter)
191193
, CostModel(GroupQueues->CostModel)
192194
, Source(source)
@@ -197,9 +199,16 @@ class TBlobStorageGroupRequestActor : public TActor<TDerived> {
197199
, ExecutionRelay(std::move(executionRelay))
198200
{
199201
TDerived::ActiveCounter(Mon)->Inc();
200-
Span
201-
.Attribute("GroupId", Info->GroupID.GetRawId())
202-
.Attribute("RestartCounter", RestartCounter);
202+
203+
if (ParentSpan) {
204+
const NWilson::TTraceId& parentTraceId = ParentSpan.GetTraceId();
205+
Span = NWilson::TSpan(TWilson::BlobStorage, NWilson::TTraceId::NewTraceId(parentTraceId.GetVerbosity(),
206+
parentTraceId.GetTimeToLive()), ParentSpan.GetName());
207+
ParentSpan.Link(Span.GetTraceId());
208+
Span.Attribute("GroupId", Info->GroupID.GetRawId());
209+
Span.Attribute("RestartCounter", RestartCounter);
210+
event->ToSpan(Span);
211+
}
203212

204213
Y_ABORT_UNLESS(CostModel);
205214
}
@@ -561,8 +570,10 @@ class TBlobStorageGroupRequestActor : public TActor<TDerived> {
561570

562571
if (term) {
563572
if (status == NKikimrProto::OK) {
573+
ParentSpan.EndOk();
564574
Span.EndOk();
565575
} else {
576+
ParentSpan.EndError(errorReason);
566577
Span.EndError(std::move(errorReason));
567578
}
568579
}
@@ -608,6 +619,7 @@ class TBlobStorageGroupRequestActor : public TActor<TDerived> {
608619
TIntrusivePtr<TBlobStorageGroupProxyMon> Mon;
609620
TIntrusivePtr<TStoragePoolCounters> PoolCounters;
610621
TLogContext LogCtx;
622+
NWilson::TSpan ParentSpan;
611623
NWilson::TSpan Span;
612624
TStackVec<std::pair<TDiskResponsivenessTracker::TDiskId, TDuration>, 16> Responsiveness;
613625
TString ErrorReason;

ydb/core/blobstorage/dsproxy/dsproxy_assimilate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ class TBlobStorageGroupAssimilateRequest : public TBlobStorageGroupRequestActor<
270270
NWilson::TTraceId traceId, TInstant now, TIntrusivePtr<TStoragePoolCounters>& storagePoolCounters)
271271
: TBlobStorageGroupRequestActor(info, state, mon, source, cookie,
272272
NKikimrServices::BS_PROXY_ASSIMILATE, false, {}, now, storagePoolCounters, ev->RestartCounter,
273-
NWilson::TSpan(TWilson::BlobStorage, std::move(traceId), "DSProxy.Assimilate"), std::move(ev->ExecutionRelay))
273+
std::move(traceId), "DSProxy.Assimilate", ev, std::move(ev->ExecutionRelay))
274274
, SkipBlocksUpTo(ev->SkipBlocksUpTo)
275275
, SkipBarriersUpTo(ev->SkipBarriersUpTo)
276276
, SkipBlobsUpTo(ev->SkipBlobsUpTo)

ydb/core/blobstorage/dsproxy/dsproxy_block.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,11 @@ class TBlobStorageGroupBlockRequest : public TBlobStorageGroupRequestActor<TBlob
135135
TBlobStorageGroupBlockRequest(const TIntrusivePtr<TBlobStorageGroupInfo> &info,
136136
const TIntrusivePtr<TGroupQueues> &state, const TActorId &source,
137137
const TIntrusivePtr<TBlobStorageGroupProxyMon> &mon, TEvBlobStorage::TEvBlock *ev,
138-
ui64 cookie, NWilson::TSpan&& span, TInstant now,
138+
ui64 cookie, NWilson::TTraceId&& traceId, TInstant now,
139139
TIntrusivePtr<TStoragePoolCounters> &storagePoolCounters)
140140
: TBlobStorageGroupRequestActor(info, state, mon, source, cookie,
141141
NKikimrServices::BS_PROXY_BLOCK, false, {}, now, storagePoolCounters, ev->RestartCounter,
142-
std::move(span), std::move(ev->ExecutionRelay))
142+
std::move(traceId), "DSProxy.Block", ev, std::move(ev->ExecutionRelay))
143143
, TabletId(ev->TabletId)
144144
, Generation(ev->Generation)
145145
, Deadline(ev->Deadline)
@@ -179,12 +179,7 @@ IActor* CreateBlobStorageGroupBlockRequest(const TIntrusivePtr<TBlobStorageGroup
179179
const TIntrusivePtr<TGroupQueues> &state, const TActorId &source,
180180
const TIntrusivePtr<TBlobStorageGroupProxyMon> &mon, TEvBlobStorage::TEvBlock *ev,
181181
ui64 cookie, NWilson::TTraceId traceId, TInstant now, TIntrusivePtr<TStoragePoolCounters> &storagePoolCounters) {
182-
NWilson::TSpan span(TWilson::BlobStorage, std::move(traceId), "DSProxy.Block");
183-
if (span) {
184-
span.Attribute("event", ev->ToString());
185-
}
186-
187-
return new TBlobStorageGroupBlockRequest(info, state, source, mon, ev, cookie, std::move(span), now, storagePoolCounters);
182+
return new TBlobStorageGroupBlockRequest(info, state, source, mon, ev, cookie, std::move(traceId), now, storagePoolCounters);
188183
}
189184

190185
} // NKikimr

ydb/core/blobstorage/dsproxy/dsproxy_collect.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ class TBlobStorageGroupCollectGarbageRequest : public TBlobStorageGroupRequestAc
147147
NWilson::TTraceId traceId, TInstant now, TIntrusivePtr<TStoragePoolCounters> &storagePoolCounters)
148148
: TBlobStorageGroupRequestActor(info, state, mon, source, cookie,
149149
NKikimrServices::BS_PROXY_COLLECT, false, {}, now, storagePoolCounters, ev->RestartCounter,
150-
NWilson::TSpan(TWilson::BlobStorage, std::move(traceId), "DSProxy.CollectGarbage"), std::move(ev->ExecutionRelay))
150+
std::move(traceId), "DSProxy.CollectGarbage", ev, std::move(ev->ExecutionRelay))
151151
, TabletId(ev->TabletId)
152152
, RecordGeneration(ev->RecordGeneration)
153153
, PerGenerationCounter(ev->PerGenerationCounter)

ydb/core/blobstorage/dsproxy/dsproxy_discover.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -884,8 +884,7 @@ class TBlobStorageGroupDiscoverRequest : public TBlobStorageGroupRequestActor<TB
884884
TIntrusivePtr<TStoragePoolCounters> &storagePoolCounters)
885885
: TBlobStorageGroupRequestActor(info, state, mon, source, cookie,
886886
NKikimrServices::BS_PROXY_DISCOVER, true, {}, now, storagePoolCounters, ev->RestartCounter,
887-
NWilson::TSpan(TWilson::BlobStorage, std::move(traceId), "DSProxy.Discover"),
888-
std::move(ev->ExecutionRelay))
887+
std::move(traceId), "DSProxy.Discover", ev, std::move(ev->ExecutionRelay))
889888
, TabletId(ev->TabletId)
890889
, MinGeneration(ev->MinGeneration)
891890
, ReadBody(ev->ReadBody)

ydb/core/blobstorage/dsproxy/dsproxy_discover_m3dc.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -464,8 +464,7 @@ class TBlobStorageGroupMirror3dcDiscoverRequest : public TBlobStorageGroupReques
464464
TIntrusivePtr<TStoragePoolCounters> &storagePoolCounters)
465465
: TBlobStorageGroupRequestActor(std::move(info), std::move(state), std::move(mon), source, cookie,
466466
NKikimrServices::BS_PROXY_DISCOVER, false, {}, now, storagePoolCounters, ev->RestartCounter,
467-
NWilson::TSpan(TWilson::BlobStorage, std::move(traceId), "DSProxy.Discover(mirror-3-dc)"),
468-
std::move(ev->ExecutionRelay))
467+
std::move(traceId), "DSProxy.Discover", ev, std::move(ev->ExecutionRelay))
469468
, TabletId(ev->TabletId)
470469
, MinGeneration(ev->MinGeneration)
471470
, StartTime(now)

ydb/core/blobstorage/dsproxy/dsproxy_discover_m3of4.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ class TBlobStorageGroupMirror3of4DiscoverRequest
3636
TIntrusivePtr<TStoragePoolCounters> &storagePoolCounters)
3737
: TBlobStorageGroupRequestActor(std::move(info), std::move(state), std::move(mon), source, cookie,
3838
NKikimrServices::BS_PROXY_DISCOVER, false, {}, now, storagePoolCounters, ev->RestartCounter,
39-
NWilson::TSpan(TWilson::BlobStorage, std::move(traceId), "DSProxy.Discover(mirror-3of4)"),
40-
std::move(ev->ExecutionRelay))
39+
std::move(traceId), "DSProxy.Discover", ev, std::move(ev->ExecutionRelay))
4140
, TabletId(ev->TabletId)
4241
, MinGeneration(ev->MinGeneration)
4342
, StartTime(now)

0 commit comments

Comments
 (0)