@@ -75,6 +75,8 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
7575
7676 bool Done = false ;
7777
78+ NLWTrace::TOrbit Orbit;
79+
7880 struct TIncarnationRecord {
7981 ui64 IncarnationGuid = 0 ;
8082 TMonotonic ExpirationTimestamp = TMonotonic::Max();
@@ -121,6 +123,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
121123
122124 // Send to VDisks.
123125 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+ }
124142 std::visit ([&](auto & ev) { SendToQueue (std::move (ev), 0 , TimeStatsEnabled); }, ev);
125143 ++RequestsSent;
126144 }
@@ -249,7 +267,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
249267 HandleIncarnation (TActivationContext::Monotonic (), Info->GetOrderNumber (shortId), record.GetIncarnationGuid ());
250268 }
251269
252- LWPROBE (DSProxyVDiskRequestDuration, TEvBlobStorage::EvVPut, blobId.BlobSize (), blobId.TabletID (),
270+ LWTRACK (DSProxyVDiskRequestDuration, Orbit , TEvBlobStorage::EvVPut, blobId.BlobSize (), blobId.TabletID (),
253271 Info->GroupID , blobId.Channel (), Info->GetFailDomainOrderNumber (shortId),
254272 GetStartTime (record.GetTimestamps ()),
255273 GetTotalTimeMs (record.GetTimestamps ()),
@@ -319,11 +337,12 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
319337 WaitingVDiskResponseCount[vdisk]--;
320338
321339 // Trace put request duration
322- if (LWPROBE_ENABLED (DSProxyVDiskRequestDuration)) {
340+ if (LWPROBE_ENABLED (DSProxyVDiskRequestDuration) || Orbit. HasShuttles () ) {
323341 for (auto &item : record.GetItems ()) {
324342 TLogoBlobID blobId = LogoBlobIDFromLogoBlobID (item.GetBlobID ());
325343 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 (),
327346 Info->GroupID , blobId.Channel (), Info->GetFailDomainOrderNumber (shortId),
328347 GetStartTime (record.GetTimestamps ()),
329348 GetTotalTimeMs (record.GetTimestamps ()),
@@ -372,6 +391,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
372391 if (WaitingVDiskCount == 1 && RequestsSent > 1 ) {
373392 ui64 timeToAccelerateUs = Max<ui64>(1 , PutImpl.GetTimeToAccelerateNs (LogCtx) / 1000 );
374393 TDuration timeSinceStart = TActivationContext::Monotonic () - StartTime;
394+ LWTRACK (DSProxyScheduleAccelerate, Orbit, timeToAccelerateUs > timeSinceStart.MicroSeconds () ? (timeToAccelerateUs - timeSinceStart.MicroSeconds ()) / 1000.0 : 0.0 );
375395 if (timeSinceStart.MicroSeconds () < timeToAccelerateUs) {
376396 ui64 causeIdx = RootCauseTrack.RegisterAccelerate ();
377397 Schedule (TDuration::MicroSeconds (timeToAccelerateUs - timeSinceStart.MicroSeconds ()),
@@ -429,7 +449,10 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
429449 ResponsesSent++;
430450 Y_ABORT_UNLESS (ResponsesSent <= PutImpl.Blobs .size ());
431451 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 );
433456 putResult->Orbit = std::move (PutImpl.Blobs [blobIdx].Orbit );
434457 putResult->WrittenBeyondBarrier = PutImpl.WrittenBeyondBarrier [blobIdx];
435458 putResult->ExecutionRelay = std::move (PutImpl.Blobs [blobIdx].ExecutionRelay );
@@ -608,6 +631,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
608631 LWTRACK (DSProxyPutBootstrapStart, PutImpl.Blobs [blobIdx].Orbit );
609632 }
610633
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+
611650 Become (&TThis::StateWait, TDuration::MilliSeconds (DsPutWakeupMs), new TKikimrEvents::TEvWakeup);
612651
613652 PartSets.resize (PutImpl.Blobs .size ());
0 commit comments