@@ -75,6 +75,8 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
75
75
76
76
bool Done = false ;
77
77
78
+ NLWTrace::TOrbit Orbit;
79
+
78
80
struct TIncarnationRecord {
79
81
ui64 IncarnationGuid = 0 ;
80
82
TMonotonic ExpirationTimestamp = TMonotonic::Max();
@@ -121,6 +123,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
121
123
122
124
// Send to VDisks.
123
125
for (auto & ev : events) {
126
+ if (LWPROBE_ENABLED (DSProxyVPutSent) || Orbit.HasShuttles ()) {
127
+ auto vDiskId = std::visit ([](const auto & item) { return VDiskIDFromVDiskID (item->Record .GetVDiskID ()); }, ev);
128
+ auto itemsCount = std::visit (overloaded{
129
+ [](const std::unique_ptr<TEvBlobStorage::TEvVPut>&) { return 1 ; },
130
+ [](const std::unique_ptr<TEvBlobStorage::TEvVMultiPut>& item) { return item->Record .GetItems ().size (); }
131
+ }, ev);
132
+ LWTRACK (
133
+ DSProxyVPutSent, Orbit,
134
+ std::visit ([](const auto & item) { return item->Type (); }, ev),
135
+ vDiskId.ToStringWOGeneration (),
136
+ Info->GetFailDomainOrderNumber (vDiskId),
137
+ itemsCount,
138
+ std::visit ([](const auto & item) { return item->GetBufferBytes (); }, ev),
139
+ accelerate
140
+ );
141
+ }
124
142
std::visit ([&](auto & ev) { SendToQueue (std::move (ev), 0 , TimeStatsEnabled); }, ev);
125
143
++RequestsSent;
126
144
}
@@ -249,7 +267,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
249
267
HandleIncarnation (TActivationContext::Monotonic (), Info->GetOrderNumber (shortId), record.GetIncarnationGuid ());
250
268
}
251
269
252
- LWPROBE (DSProxyVDiskRequestDuration, TEvBlobStorage::EvVPut, blobId.BlobSize (), blobId.TabletID (),
270
+ LWTRACK (DSProxyVDiskRequestDuration, Orbit , TEvBlobStorage::EvVPut, blobId.BlobSize (), blobId.TabletID (),
253
271
Info->GroupID , blobId.Channel (), Info->GetFailDomainOrderNumber (shortId),
254
272
GetStartTime (record.GetTimestamps ()),
255
273
GetTotalTimeMs (record.GetTimestamps ()),
@@ -319,11 +337,12 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
319
337
WaitingVDiskResponseCount[vdisk]--;
320
338
321
339
// Trace put request duration
322
- if (LWPROBE_ENABLED (DSProxyVDiskRequestDuration)) {
340
+ if (LWPROBE_ENABLED (DSProxyVDiskRequestDuration) || Orbit. HasShuttles () ) {
323
341
for (auto &item : record.GetItems ()) {
324
342
TLogoBlobID blobId = LogoBlobIDFromLogoBlobID (item.GetBlobID ());
325
343
NKikimrProto::EReplyStatus itemStatus = item.GetStatus ();
326
- LWPROBE (DSProxyVDiskRequestDuration, TEvBlobStorage::EvVMultiPut, blobId.BlobSize (), blobId.TabletID (),
344
+ LWTRACK (DSProxyVDiskRequestDuration, Orbit,
345
+ TEvBlobStorage::EvVMultiPut, blobId.BlobSize (), blobId.TabletID (),
327
346
Info->GroupID , blobId.Channel (), Info->GetFailDomainOrderNumber (shortId),
328
347
GetStartTime (record.GetTimestamps ()),
329
348
GetTotalTimeMs (record.GetTimestamps ()),
@@ -372,6 +391,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
372
391
if (WaitingVDiskCount == 1 && RequestsSent > 1 ) {
373
392
ui64 timeToAccelerateUs = Max<ui64>(1 , PutImpl.GetTimeToAccelerateNs (LogCtx) / 1000 );
374
393
TDuration timeSinceStart = TActivationContext::Monotonic () - StartTime;
394
+ LWTRACK (DSProxyScheduleAccelerate, Orbit, timeToAccelerateUs > timeSinceStart.MicroSeconds () ? (timeToAccelerateUs - timeSinceStart.MicroSeconds ()) / 1000.0 : 0.0 );
375
395
if (timeSinceStart.MicroSeconds () < timeToAccelerateUs) {
376
396
ui64 causeIdx = RootCauseTrack.RegisterAccelerate ();
377
397
Schedule (TDuration::MicroSeconds (timeToAccelerateUs - timeSinceStart.MicroSeconds ()),
@@ -429,7 +449,10 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
429
449
ResponsesSent++;
430
450
Y_ABORT_UNLESS (ResponsesSent <= PutImpl.Blobs .size ());
431
451
RootCauseTrack.RenderTrack (PutImpl.Blobs [blobIdx].Orbit );
432
- LWTRACK (DSProxyPutReply, PutImpl.Blobs [blobIdx].Orbit );
452
+ if (PutImpl.Blobs [blobIdx].Orbit .HasShuttles ()) {
453
+ LWTRACK (DSProxyPutReply, PutImpl.Blobs [blobIdx].Orbit , blobId.ToString (), NKikimrProto::EReplyStatus_Name (status), putResult->ErrorReason );
454
+ }
455
+ LWTRACK (DSProxyPutReply, Orbit, blobId.ToString (), NKikimrProto::EReplyStatus_Name (status), putResult->ErrorReason );
433
456
putResult->Orbit = std::move (PutImpl.Blobs [blobIdx].Orbit );
434
457
putResult->WrittenBeyondBarrier = PutImpl.WrittenBeyondBarrier [blobIdx];
435
458
putResult->ExecutionRelay = std::move (PutImpl.Blobs [blobIdx].ExecutionRelay );
@@ -608,6 +631,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
608
631
LWTRACK (DSProxyPutBootstrapStart, PutImpl.Blobs [blobIdx].Orbit );
609
632
}
610
633
634
+ auto getTotalSize = [&]() {
635
+ ui64 totalSize = 0 ;
636
+ for (auto & blob : PutImpl.Blobs ) {
637
+ totalSize += blob.BufferSize ;
638
+ }
639
+ return totalSize;
640
+ };
641
+ LWTRACK (
642
+ DSProxyPutRequest, Orbit,
643
+ Info->GroupID ,
644
+ NKikimrBlobStorage::EPutHandleClass_Name (HandleClass),
645
+ TEvBlobStorage::TEvPut::TacticName (Tactic),
646
+ PutImpl.Blobs .size (),
647
+ getTotalSize ()
648
+ );
649
+
611
650
Become (&TThis::StateWait, TDuration::MilliSeconds (DsPutWakeupMs), new TKikimrEvents::TEvWakeup);
612
651
613
652
PartSets.resize (PutImpl.Blobs .size ());
0 commit comments