@@ -646,7 +646,9 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
646646 << " Tactic# " << TEvBlobStorage::TEvPut::TacticName (Tactic)
647647 << " RestartCounter# " << RestartCounter);
648648
649+ TInstant firstDeadline = TInstant::Max ();
649650 for (size_t blobIdx = 0 ; blobIdx < PutImpl.Blobs .size (); ++blobIdx) {
651+ firstDeadline = std::min (firstDeadline, PutImpl.Blobs [blobIdx].Deadline );
650652 LWTRACK (DSProxyPutBootstrapStart, PutImpl.Blobs [blobIdx].Orbit );
651653 }
652654
@@ -667,7 +669,9 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
667669 getTotalSize ()
668670 );
669671
670- Become (&TBlobStorageGroupPutRequest::StateWait, TDuration::MilliSeconds (DsPutWakeupMs), new TKikimrEvents::TEvWakeup);
672+ TInstant now = TActivationContext::Now ();
673+ TInstant wakeupTime = std::min (now + TDuration::MilliSeconds (DsPutWakeupMs), firstDeadline);
674+ Become (&TBlobStorageGroupPutRequest::StateWait, wakeupTime, new TKikimrEvents::TEvWakeup);
671675
672676 PartSets.resize (PutImpl.Blobs .size ());
673677 for (auto & partSet : PartSets) {
@@ -721,7 +725,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
721725 const TInstant now = TActivationContext::Now ();
722726 TPutImpl::TPutResultVec putResults;
723727 for (size_t blobIdx = 0 ; blobIdx < PutImpl.Blobs .size (); ++blobIdx) {
724- if (!PutImpl.Blobs [blobIdx].Replied && now > PutImpl.Blobs [blobIdx].Deadline ) {
728+ if (!PutImpl.Blobs [blobIdx].Replied && now >= PutImpl.Blobs [blobIdx].Deadline ) {
725729 PutImpl.PrepareOneReply (NKikimrProto::DEADLINE, blobIdx, LogCtx, " Deadline timer hit" , putResults);
726730 }
727731 }
0 commit comments