Skip to content

Commit 47a5ec4

Browse files
committed
Address comments
1 parent f82a398 commit 47a5ec4

18 files changed

+133
-161
lines changed

ydb/core/blobstorage/dsproxy/dsproxy.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ class TBlobStorageGroupRequestActor : public TActor<TBlobStorageGroupRequestActo
206206
TIntrusivePtr<TBlobStorageGroupProxyMon> Mon;
207207
TActorId Source = TActorId{};
208208
ui64 Cookie = 0;
209-
TInstant Now;
209+
TMonotonic Now;
210210
TIntrusivePtr<TStoragePoolCounters>& StoragePoolCounters;
211211
ui32 RestartCounter;
212212
NWilson::TTraceId TraceId = {};
@@ -235,10 +235,10 @@ class TBlobStorageGroupRequestActor : public TActor<TBlobStorageGroupRequestActo
235235
, ParentSpan(TWilson::BlobStorage, std::move(params.Common.TraceId), params.TypeSpecific.Name)
236236
, RestartCounter(params.Common.RestartCounter)
237237
, CostModel(GroupQueues->CostModel)
238+
, RequestStartTime(params.Common.Now)
238239
, Source(params.Common.Source)
239240
, Cookie(params.Common.Cookie)
240241
, LatencyQueueKind(params.Common.LatencyQueueKind)
241-
, RequestStartTime(params.Common.Now)
242242
, RacingDomains(&Info->GetTopology())
243243
, ExecutionRelay(std::move(params.Common.ExecutionRelay))
244244
{
@@ -324,6 +324,7 @@ class TBlobStorageGroupRequestActor : public TActor<TBlobStorageGroupRequestActo
324324
bool Dead = false;
325325
const ui32 RestartCounter = 0;
326326
std::shared_ptr<const TCostModel> CostModel;
327+
const TMonotonic RequestStartTime;
327328

328329
private:
329330
const TActorId Source;
@@ -332,7 +333,6 @@ class TBlobStorageGroupRequestActor : public TActor<TBlobStorageGroupRequestActo
332333
ui32 RequestsInFlight = 0;
333334
std::unique_ptr<IEventBase> Response;
334335
const TMaybe<TGroupStat::EKind> LatencyQueueKind;
335-
const TInstant RequestStartTime;
336336
THPTimer Timer;
337337
std::deque<std::unique_ptr<IEventHandle>> PostponedQ;
338338
TBlobStorageGroupInfo::TGroupFailDomains RacingDomains; // a set of domains we've received RACE from

ydb/core/blobstorage/dsproxy/dsproxy_block.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ class TBlobStorageGroupBlockRequest : public TBlobStorageGroupRequestActor {
1616
const ui32 Generation;
1717
const TInstant Deadline;
1818
const ui64 IssuerGuid;
19-
TInstant StartTime;
2019
bool SeenAlready = false;
2120

2221
TGroupQuorumTracker QuorumTracker;
@@ -99,7 +98,7 @@ class TBlobStorageGroupBlockRequest : public TBlobStorageGroupRequestActor {
9998
std::unique_ptr<TEvBlobStorage::TEvBlockResult> result(new TEvBlobStorage::TEvBlockResult(status));
10099
result->ErrorReason = ErrorReason;
101100
DSP_LOG_LOG_S(PriorityForStatusResult(status), "DSPB04", "Result# " << result->Print(false));
102-
Mon->CountBlockResponseTime(TActivationContext::Now() - StartTime);
101+
Mon->CountBlockResponseTime(TActivationContext::Monotonic() - RequestStartTime);
103102
return SendResponseAndDie(std::move(result));
104103
}
105104

@@ -138,7 +137,6 @@ class TBlobStorageGroupBlockRequest : public TBlobStorageGroupRequestActor {
138137
, Generation(params.Common.Event->Generation)
139138
, Deadline(params.Common.Event->Deadline)
140139
, IssuerGuid(params.Common.Event->IssuerGuid)
141-
, StartTime(params.Common.Now)
142140
, QuorumTracker(Info.Get())
143141
{}
144142

ydb/core/blobstorage/dsproxy/dsproxy_collect.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ class TBlobStorageGroupCollectGarbageRequest : public TBlobStorageGroupRequestAc
2727
const bool Decommission;
2828

2929
TGroupQuorumTracker QuorumTracker;
30-
TInstant StartTime;
3130

3231
ui32 RequestsSent = 0;
3332
ui32 ResponsesReceived = 0;
@@ -155,7 +154,6 @@ class TBlobStorageGroupCollectGarbageRequest : public TBlobStorageGroupRequestAc
155154
, Collect(params.Common.Event->Collect)
156155
, Decommission(params.Common.Event->Decommission)
157156
, QuorumTracker(Info.Get())
158-
, StartTime(params.Common.Now)
159157
{}
160158

161159
void Bootstrap() override {

ydb/core/blobstorage/dsproxy/dsproxy_discover.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,6 @@ class TBlobStorageGroupDiscoverRequest : public TBlobStorageGroupRequestActor {
272272
const bool ReadBody;
273273
const bool DiscoverBlockedGeneration;
274274
const TInstant Deadline;
275-
const TInstant StartTime;
276275

277276
TGroupResponseTracker GroupResponseTracker;
278277
std::unique_ptr<TEvBlobStorage::TEvDiscoverResult> PendingResult;
@@ -295,7 +294,7 @@ class TBlobStorageGroupDiscoverRequest : public TBlobStorageGroupRequestActor {
295294
template<typename TPtr>
296295
void SendResult(TPtr& result) {
297296
Y_ABORT_UNLESS(result);
298-
const TDuration duration = TActivationContext::Now() - StartTime;
297+
const TDuration duration = TActivationContext::Monotonic() - RequestStartTime;
299298
Mon->CountDiscoverResponseTime(duration);
300299
const bool success = result->Status == NKikimrProto::OK;
301300
LWPROBE(DSProxyRequestDuration, TEvBlobStorage::EvDiscover, 0, duration.SecondsFloat() * 1000.0,
@@ -876,7 +875,6 @@ class TBlobStorageGroupDiscoverRequest : public TBlobStorageGroupRequestActor {
876875
, ReadBody(params.Common.Event->ReadBody)
877876
, DiscoverBlockedGeneration(params.Common.Event->DiscoverBlockedGeneration)
878877
, Deadline(params.Common.Event->Deadline)
879-
, StartTime(params.Common.Now)
880878
, GroupResponseTracker(Info)
881879
, IsGetBlockDone(!DiscoverBlockedGeneration)
882880
, ForceBlockedGeneration(params.Common.Event->ForceBlockedGeneration)

ydb/core/blobstorage/dsproxy/dsproxy_discover_m3dc.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,6 @@ class TDiscoverWorker {
424424
class TBlobStorageGroupMirror3dcDiscoverRequest : public TBlobStorageGroupRequestActor {
425425
const ui64 TabletId;
426426
const ui32 MinGeneration;
427-
const TInstant StartTime;
428427
const TInstant Deadline;
429428
const bool ReadBody;
430429
const bool DiscoverBlockedGeneration;
@@ -461,7 +460,6 @@ class TBlobStorageGroupMirror3dcDiscoverRequest : public TBlobStorageGroupReques
461460
: TBlobStorageGroupRequestActor(params)
462461
, TabletId(params.Common.Event->TabletId)
463462
, MinGeneration(params.Common.Event->MinGeneration)
464-
, StartTime(params.Common.Now)
465463
, Deadline(params.Common.Event->Deadline)
466464
, ReadBody(params.Common.Event->ReadBody)
467465
, DiscoverBlockedGeneration(params.Common.Event->DiscoverBlockedGeneration)
@@ -651,7 +649,7 @@ class TBlobStorageGroupMirror3dcDiscoverRequest : public TBlobStorageGroupReques
651649
DSP_LOG_DEBUG_S("DSPDM03", "Response# " << response->ToString());
652650

653651
Y_ABORT_UNLESS(!Responded);
654-
const TDuration duration = TActivationContext::Now() - StartTime;
652+
const TDuration duration = TActivationContext::Monotonic() - RequestStartTime;
655653
LWPROBE(DSProxyRequestDuration, TEvBlobStorage::EvDiscover, 0, duration.SecondsFloat() * 1000.0,
656654
TabletId, Info->GroupID.GetRawId(), TLogoBlobID::MaxChannel, "", true);
657655
SendResponseAndDie(std::move(response));
@@ -664,7 +662,7 @@ class TBlobStorageGroupMirror3dcDiscoverRequest : public TBlobStorageGroupReques
664662

665663
Y_ABORT_UNLESS(!Responded);
666664
Y_ABORT_UNLESS(status != NKikimrProto::OK);
667-
const TDuration duration = TActivationContext::Now() - StartTime;
665+
const TDuration duration = TActivationContext::Monotonic() - RequestStartTime;
668666
LWPROBE(DSProxyRequestDuration, TEvBlobStorage::EvDiscover, 0, duration.SecondsFloat() * 1000.0,
669667
TabletId, Info->GroupID.GetRawId(), TLogoBlobID::MaxChannel, "", false);
670668
std::unique_ptr<TEvBlobStorage::TEvDiscoverResult> response(new TEvBlobStorage::TEvDiscoverResult(

ydb/core/blobstorage/dsproxy/dsproxy_discover_m3of4.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ namespace NKikimr {
1111
class TBlobStorageGroupMirror3of4DiscoverRequest : public TBlobStorageGroupRequestActor {
1212
const ui64 TabletId;
1313
const ui32 MinGeneration;
14-
const TInstant StartTime;
1514
const TInstant Deadline;
1615
const bool ReadBody;
1716
const bool DiscoverBlockedGeneration;
@@ -31,7 +30,6 @@ class TBlobStorageGroupMirror3of4DiscoverRequest : public TBlobStorageGroupReque
3130
: TBlobStorageGroupRequestActor(params)
3231
, TabletId(params.Common.Event->TabletId)
3332
, MinGeneration(params.Common.Event->MinGeneration)
34-
, StartTime(params.Common.Now)
3533
, Deadline(params.Common.Event->Deadline)
3634
, ReadBody(params.Common.Event->ReadBody)
3735
, DiscoverBlockedGeneration(params.Common.Event->DiscoverBlockedGeneration)

ydb/core/blobstorage/dsproxy/dsproxy_get.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
3838
TRootCause RootCauseTrack;
3939
NLWTrace::TOrbit Orbit;
4040
const TInstant Deadline;
41-
TInstant StartTime;
42-
TInstant StartTimePut;
41+
TMonotonic StartTimePut;
4342
ui32 RequestsSent = 0;
4443
ui32 ResponsesReceived = 0;
4544
ui32 GroupSize;
@@ -80,7 +79,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
8079
}
8180
GetsAccelerated++;
8281

83-
GetImpl.RegisterGetAcceleration();
82+
GetImpl.History.AddAcceleration(false);
8483
TDeque<std::unique_ptr<TEvBlobStorage::TEvVGet>> vGets;
8584
TDeque<std::unique_ptr<TEvBlobStorage::TEvVPut>> vPuts;
8685
GetImpl.AccelerateGet(LogCtx, GetUnresponsiveDisksMask(), vGets, vPuts);
@@ -96,7 +95,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
9695
}
9796
PutsAccelerated++;
9897

99-
GetImpl.RegisterPutAcceleration();
98+
GetImpl.History.AddAcceleration(true);
10099
TDeque<std::unique_ptr<TEvBlobStorage::TEvVGet>> vGets;
101100
TDeque<std::unique_ptr<TEvBlobStorage::TEvVPut>> vPuts;
102101
GetImpl.AcceleratePut(LogCtx, GetUnresponsiveDisksMask(), vGets, vPuts);
@@ -116,7 +115,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
116115
if (vPuts.size()) {
117116
if (!IsPutStarted) {
118117
IsPutStarted = true;
119-
StartTimePut = TActivationContext::Now();
118+
StartTimePut = TActivationContext::Monotonic();
120119
}
121120
}
122121
for (size_t i = 0; i < vGets.size(); ++i) {
@@ -153,6 +152,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
153152
const ui64 cookie = ev->Record.GetCookie();
154153
SendToQueue(std::move(ev), cookie);
155154
}
155+
GetImpl.History.AddAllWaiting();
156156
}
157157

158158
ui32 CountDisksWithActiveRequests() {
@@ -331,8 +331,8 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
331331
if (CountDisksWithActiveRequests() <= 2) {
332332
ui64 timeToAccelerateUs = GetImpl.GetTimeToAccelerateGetNs(LogCtx) / 1000;
333333
TDuration timeToAccelerate = TDuration::MicroSeconds(timeToAccelerateUs);
334-
TInstant now = TActivationContext::Now();
335-
TInstant nextAcceleration = StartTime + timeToAccelerate;
334+
TMonotonic now = TActivationContext::Monotonic();
335+
TMonotonic nextAcceleration = RequestStartTime + timeToAccelerate;
336336
if (nextAcceleration > now) {
337337
ui64 causeIdx = RootCauseTrack.RegisterAccelerate();
338338
Schedule(nextAcceleration - now, new TEvAccelerateGet(causeIdx));
@@ -350,8 +350,8 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
350350
if (CountDisksWithActiveRequests() <= 2) {
351351
ui64 timeToAccelerateUs = GetImpl.GetTimeToAcceleratePutNs(LogCtx) / 1000;
352352
TDuration timeToAccelerate = TDuration::MicroSeconds(timeToAccelerateUs);
353-
TInstant now = TActivationContext::Now();
354-
TInstant nextAcceleration = StartTime + timeToAccelerate;
353+
TMonotonic now = TActivationContext::Monotonic();
354+
TMonotonic nextAcceleration = RequestStartTime + timeToAccelerate;
355355
if (nextAcceleration > now) {
356356
ui64 causeIdx = RootCauseTrack.RegisterAccelerate();
357357
Schedule(nextAcceleration - now, new TEvAcceleratePut(causeIdx));
@@ -364,8 +364,8 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
364364
}
365365

366366
void SendReplyAndDie(TAutoPtr<TEvBlobStorage::TEvGetResult> &evResult) {
367-
const TInstant now = TActivationContext::Now();
368-
const TDuration duration = (now > StartTime) ? (now - StartTime) : TDuration::MilliSeconds(0);
367+
const TMonotonic now = TActivationContext::Monotonic();
368+
const TDuration duration = now - RequestStartTime;
369369
NKikimrBlobStorage::EGetHandleClass handleClass = GetImpl.GetHandleClass();
370370
Mon->CountGetResponseTime(Info->GetDeviceType(), handleClass, evResult->PayloadSizeBytes(), duration);
371371
*Mon->ActiveGetCapacity -= ReportedBytes;
@@ -387,7 +387,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
387387
success);
388388
DSP_LOG_LOG_S(success ? NLog::PRI_INFO : NLog::PRI_NOTICE, "BPG68", "Result# " << evResult->Print(false));
389389

390-
if (TActivationContext::Now() - StartTime >= LongRequestThreshold) {
390+
if (TActivationContext::Monotonic() - RequestStartTime >= LongRequestThreshold) {
391391
if (AllowToReport(GetImpl.GetHandleClass())) {
392392
STLOG(PRI_WARN, BS_PROXY_GET, BPG71, "Long TEvGet request detected", \
393393
(LongRequestThreshold, LongRequestThreshold), \
@@ -423,8 +423,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
423423
params.AccelerationParams, LogCtx.RequestPrefix)
424424
, Orbit(std::move(params.Common.Event->Orbit))
425425
, Deadline(params.Common.Event->Deadline)
426-
, StartTime(params.Common.Now)
427-
, StartTimePut(StartTime)
426+
, StartTimePut(RequestStartTime)
428427
, GroupSize(Info->Type.BlobSubgroupSize())
429428
, ReportedBytes(0)
430429
, AccelerationParams(params.AccelerationParams)

ydb/core/blobstorage/dsproxy/dsproxy_get_impl.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,9 +298,9 @@ void TGetImpl::PrepareRequests(TLogContext &logCtx, TDeque<std::unique_ptr<TEvBl
298298
DSP_LOG_DEBUG_SX(logCtx, "BPG14", "Send get to orderNumber# " << orderNumber << " vget# " << vget->ToString());
299299
if (vget->Record.ExtremeQueriesSize() > 0) {
300300
TLogoBlobID blobId = LogoBlobIDFromLogoBlobID(vget->Record.GetExtremeQueries(0).GetId());
301-
History.AddVGet(blobId.PartId(), vget->Record.ExtremeQueriesSize(), orderNumber);
301+
History.AddVGetToWaitingList(blobId.PartId(), vget->Record.ExtremeQueriesSize(), orderNumber);
302302
} else {
303-
History.AddVGet(THistory::InvalidPartId, 0, orderNumber);
303+
History.AddVGetToWaitingList(THistory::InvalidPartId, 0, orderNumber);
304304
}
305305
outVGets.push_back(std::move(vget));
306306
++RequestIndex;
@@ -318,7 +318,7 @@ void TGetImpl::PrepareVPuts(TLogContext &logCtx, TDeque<std::unique_ptr<TEvBlobS
318318
auto vput = std::make_unique<TEvBlobStorage::TEvVPut>(put.Id, put.Buffer, vdiskId, true, nullptr, Deadline,
319319
Blackboard.PutHandleClass);
320320
DSP_LOG_DEBUG_SX(logCtx, "BPG15", "Send put to orderNumber# " << put.OrderNumber << " vput# " << vput->ToString());
321-
History.AddVPut(put.Id.PartId(), 1, put.OrderNumber);
321+
History.AddVPutToWaitingList(put.Id.PartId(), 1, put.OrderNumber);
322322
outVPuts.push_back(std::move(vput));
323323
++VPutRequests;
324324
}
@@ -372,7 +372,7 @@ EStrategyOutcome TGetImpl::RunStrategies(TLogContext &logCtx) {
372372
void TGetImpl::OnVPutResult(TLogContext &logCtx, TEvBlobStorage::TEvVPutResult &ev,
373373
TDeque<std::unique_ptr<TEvBlobStorage::TEvVGet>> &outVGets, TDeque<std::unique_ptr<TEvBlobStorage::TEvVPut>> &outVPuts,
374374
TAutoPtr<TEvBlobStorage::TEvGetResult> &outGetResult) {
375-
NKikimrBlobStorage::TEvVPutResult &record = ev.Record;
375+
const NKikimrBlobStorage::TEvVPutResult &record = ev.Record;
376376
Y_ABORT_UNLESS(record.HasVDiskID());
377377
TVDiskID vdisk = VDiskIDFromVDiskID(record.GetVDiskID());
378378
TVDiskIdShort shortId(vdisk);

ydb/core/blobstorage/dsproxy/dsproxy_get_impl.h

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ class TGetImpl {
5454

5555
THistory History;
5656

57+
friend class TBlobStorageGroupGetRequest;
58+
friend class THistory;
59+
5760
public:
5861
TGetImpl(const TIntrusivePtr<TBlobStorageGroupInfo> &info, const TIntrusivePtr<TGroupQueues> &groupQueues,
5962
TEvBlobStorage::TEvGet *ev, TNodeLayoutInfoPtr&& nodeLayout,
@@ -162,7 +165,7 @@ class TGetImpl {
162165
TDeque<std::unique_ptr<TEvBlobStorage::TEvVGet>> &outVGets,
163166
TDeque<std::unique_ptr<TEvBlobStorage::TEvVPut>> &outVPuts,
164167
TAutoPtr<TEvBlobStorage::TEvGetResult> &outGetResult) {
165-
NKikimrBlobStorage::TEvVGetResult &record = ev.Record;
168+
const NKikimrBlobStorage::TEvVGetResult &record = ev.Record;
166169
Y_ABORT_UNLESS(record.HasStatus());
167170
const NKikimrProto::EReplyStatus status = record.GetStatus();
168171
Y_ABORT_UNLESS(status != NKikimrProto::RACE && status != NKikimrProto::BLOCKED && status != NKikimrProto::DEADLINE);
@@ -247,7 +250,7 @@ class TGetImpl {
247250
++ResponseIndex;
248251

249252
Step(logCtx, outVGets, outVPuts, outGetResult);
250-
History.AddVPutResult(orderNumber, status, record.GetErrorReason());
253+
History.AddVGetResult(orderNumber, status, record.GetErrorReason());
251254
}
252255

253256
void OnVPutResult(TLogContext &logCtx, TEvBlobStorage::TEvVPutResult &ev,
@@ -293,14 +296,6 @@ class TGetImpl {
293296
return History.Print((QuerySize == 0) ? nullptr : &Queries[0].Id);
294297
}
295298

296-
void RegisterPutAcceleration() {
297-
History.AddPutAcceleration();
298-
}
299-
300-
void RegisterGetAcceleration() {
301-
History.AddGetAcceleration();
302-
}
303-
304299
protected:
305300
EStrategyOutcome RunBoldStrategy(TLogContext &logCtx);
306301
EStrategyOutcome RunMirror3dcStrategy(TLogContext &logCtx);

ydb/core/blobstorage/dsproxy/dsproxy_indexrestoreget.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ class TBlobStorageGroupIndexRestoreGetRequest : public TBlobStorageGroupRequestA
2323
TVector<TBlobStatusTracker> BlobStatus;
2424
ui32 VGetsInFlight;
2525

26-
TInstant StartTime;
2726
NKikimrBlobStorage::EGetHandleClass GetHandleClass;
2827

2928
ui64 TabletId;
@@ -50,7 +49,7 @@ class TBlobStorageGroupIndexRestoreGetRequest : public TBlobStorageGroupRequestA
5049
PendingResult->ErrorReason = ErrorReason;
5150
}
5251
Y_ABORT_UNLESS(PendingResult);
53-
Mon->CountIndexRestoreGetResponseTime(TActivationContext::Now() - StartTime);
52+
Mon->CountIndexRestoreGetResponseTime(TActivationContext::Monotonic() - RequestStartTime);
5453
SendResponseAndDie(std::move(PendingResult));
5554
}
5655

@@ -267,7 +266,6 @@ class TBlobStorageGroupIndexRestoreGetRequest : public TBlobStorageGroupRequestA
267266
, Decommission(params.Common.Event->Decommission)
268267
, ForceBlockTabletData(params.Common.Event->ForceBlockTabletData)
269268
, VGetsInFlight(0)
270-
, StartTime(params.Common.Now)
271269
, GetHandleClass(params.Common.Event->GetHandleClass)
272270
, RestoreQueriesStarted(0)
273271
, RestoreQueriesFinished(0)

0 commit comments

Comments
 (0)