@@ -74,6 +74,8 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
74
74
75
75
bool Done = false ;
76
76
77
+ NLWTrace::TOrbit Orbit;
78
+
77
79
struct TIncarnationRecord {
78
80
ui64 IncarnationGuid = 0 ;
79
81
TMonotonic ExpirationTimestamp = TMonotonic::Max();
@@ -134,6 +136,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
134
136
135
137
// Send to VDisks.
136
138
for (auto & ev : events) {
139
+ if (LWPROBE_ENABLED (DSProxyVPutSent) || Orbit.HasShuttles ()) {
140
+ auto vDiskId = std::visit ([](const auto & item) { return VDiskIDFromVDiskID (item->Record .GetVDiskID ()); }, ev);
141
+ auto itemsCount = std::visit (overloaded{
142
+ [](const std::unique_ptr<TEvBlobStorage::TEvVPut>&) { return 1 ; },
143
+ [](const std::unique_ptr<TEvBlobStorage::TEvVMultiPut>& item) { return item->Record .GetItems ().size (); }
144
+ }, ev);
145
+ LWTRACK (
146
+ DSProxyVPutSent, Orbit,
147
+ std::visit ([](const auto & item) { return item->Type (); }, ev),
148
+ vDiskId.ToStringWOGeneration (),
149
+ Info->GetFailDomainOrderNumber (vDiskId),
150
+ itemsCount,
151
+ std::visit ([](const auto & item) { return item->GetBufferBytes (); }, ev),
152
+ accelerate
153
+ );
154
+ }
137
155
std::visit ([&](auto & ev) { SendToQueue (std::move (ev), 0 , TimeStatsEnabled); }, ev);
138
156
++RequestsSent;
139
157
if (AccelerateRequestsSent == 0 ) {
@@ -269,7 +287,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
269
287
HandleIncarnation (TActivationContext::Monotonic (), Info->GetOrderNumber (shortId), record.GetIncarnationGuid ());
270
288
}
271
289
272
- LWPROBE (DSProxyVDiskRequestDuration, TEvBlobStorage::EvVPut, blobId.BlobSize (), blobId.TabletID (),
290
+ LWTRACK (DSProxyVDiskRequestDuration, Orbit , TEvBlobStorage::EvVPut, blobId.BlobSize (), blobId.TabletID (),
273
291
Info->GroupID .GetRawId (), blobId.Channel (), Info->GetFailDomainOrderNumber (shortId),
274
292
GetStartTime (record.GetTimestamps ()),
275
293
GetTotalTimeMs (record.GetTimestamps ()),
@@ -343,11 +361,12 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
343
361
WaitingVDiskResponseCount[vdisk]--;
344
362
345
363
// Trace put request duration
346
- if (LWPROBE_ENABLED (DSProxyVDiskRequestDuration)) {
364
+ if (LWPROBE_ENABLED (DSProxyVDiskRequestDuration) || Orbit. HasShuttles () ) {
347
365
for (auto &item : record.GetItems ()) {
348
366
TLogoBlobID blobId = LogoBlobIDFromLogoBlobID (item.GetBlobID ());
349
367
NKikimrProto::EReplyStatus itemStatus = item.GetStatus ();
350
- LWPROBE (DSProxyVDiskRequestDuration, TEvBlobStorage::EvVMultiPut, blobId.BlobSize (), blobId.TabletID (),
368
+ LWTRACK (DSProxyVDiskRequestDuration, Orbit,
369
+ TEvBlobStorage::EvVMultiPut, blobId.BlobSize (), blobId.TabletID (),
351
370
Info->GroupID .GetRawId (), blobId.Channel (), Info->GetFailDomainOrderNumber (shortId),
352
371
GetStartTime (record.GetTimestamps ()),
353
372
GetTotalTimeMs (record.GetTimestamps ()),
@@ -402,6 +421,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
402
421
TDuration timeToAccelerate = TDuration::MicroSeconds (timeToAccelerateUs);
403
422
TMonotonic now = TActivationContext::Monotonic ();
404
423
TMonotonic nextAcceleration = StartTime + timeToAccelerate;
424
+ LWTRACK (DSProxyScheduleAccelerate, Orbit, nextAcceleration > now ? (nextAcceleration - now).MicroSeconds () / 1000.0 : 0.0 );
405
425
if (nextAcceleration > now) {
406
426
ui64 causeIdx = RootCauseTrack.RegisterAccelerate ();
407
427
Schedule (nextAcceleration - now, new TEvAccelerate (causeIdx));
@@ -456,7 +476,10 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
456
476
ResponsesSent++;
457
477
Y_ABORT_UNLESS (ResponsesSent <= PutImpl.Blobs .size ());
458
478
RootCauseTrack.RenderTrack (PutImpl.Blobs [blobIdx].Orbit );
459
- LWTRACK (DSProxyPutReply, PutImpl.Blobs [blobIdx].Orbit );
479
+ if (PutImpl.Blobs [blobIdx].Orbit .HasShuttles ()) {
480
+ LWTRACK (DSProxyPutReply, PutImpl.Blobs [blobIdx].Orbit , blobId.ToString (), NKikimrProto::EReplyStatus_Name (status), putResult->ErrorReason );
481
+ }
482
+ LWTRACK (DSProxyPutReply, Orbit, blobId.ToString (), NKikimrProto::EReplyStatus_Name (status), putResult->ErrorReason );
460
483
putResult->Orbit = std::move (PutImpl.Blobs [blobIdx].Orbit );
461
484
putResult->WrittenBeyondBarrier = PutImpl.WrittenBeyondBarrier [blobIdx];
462
485
putResult->ExecutionRelay = std::move (PutImpl.Blobs [blobIdx].ExecutionRelay );
@@ -600,6 +623,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
600
623
LWTRACK (DSProxyPutBootstrapStart, PutImpl.Blobs [blobIdx].Orbit );
601
624
}
602
625
626
+ auto getTotalSize = [&]() {
627
+ ui64 totalSize = 0 ;
628
+ for (auto & blob : PutImpl.Blobs ) {
629
+ totalSize += blob.BufferSize ;
630
+ }
631
+ return totalSize;
632
+ };
633
+ LWTRACK (
634
+ DSProxyPutRequest, Orbit,
635
+ Info->GroupID .GetRawId (),
636
+ NKikimrBlobStorage::EPutHandleClass_Name (HandleClass),
637
+ TEvBlobStorage::TEvPut::TacticName (Tactic),
638
+ PutImpl.Blobs .size (),
639
+ getTotalSize ()
640
+ );
641
+
603
642
Become (&TBlobStorageGroupPutRequest::StateWait, TDuration::MilliSeconds (DsPutWakeupMs), new TKikimrEvents::TEvWakeup);
604
643
605
644
PartSets.resize (PutImpl.Blobs .size ());
0 commit comments