Skip to content

Commit e791eb9

Browse files
authored
Support put tracing with sampling in TestShard (#6123)
1 parent fee6069 commit e791eb9

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed

ydb/core/protos/msgbus.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,8 @@ message TTestShardControlRequest {
717717
repeated TTimeInterval WritePeriods = 7; // time between two events
718718
repeated TTimeInterval RestartPeriods = 8; // time between automatic restarts
719719
optional uint32 PatchRequestsFractionPPM = 12;
720+
optional uint32 PutTraceFractionPPM = 13;
721+
optional uint32 PutTraceVerbosity = 14 [default = 15];
720722
}
721723

722724
optional uint64 TabletId = 1;

ydb/core/test_tablet/load_actor_impl.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ namespace NKikimr::NTestShard {
2222
::NTestShard::TStateServer::EEntityState ConfirmedState = ::NTestShard::TStateServer::ABSENT;
2323
::NTestShard::TStateServer::EEntityState PendingState = ::NTestShard::TStateServer::ABSENT;
2424
std::unique_ptr<TEvKeyValue::TEvRequest> Request;
25+
NWilson::TTraceId TraceId;
2526
size_t ConfirmedKeyIndex = Max<size_t>();
2627

2728
TKeyInfo(ui32 len)
@@ -174,7 +175,8 @@ namespace NKikimr::NTestShard {
174175
std::deque<TKey*> TransitionInFlight;
175176

176177
void RegisterTransition(TKey& key, ::NTestShard::TStateServer::EEntityState from,
177-
::NTestShard::TStateServer::EEntityState to, std::unique_ptr<TEvKeyValue::TEvRequest> ev = nullptr);
178+
::NTestShard::TStateServer::EEntityState to, std::unique_ptr<TEvKeyValue::TEvRequest> ev = nullptr,
179+
NWilson::TTraceId traceId = {});
178180
void Handle(TEvStateServerWriteResult::TPtr ev);
179181

180182
void MakeConfirmed(TKey& key);

ydb/core/test_tablet/load_actor_state.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
namespace NKikimr::NTestShard {
44

55
void TLoadActor::RegisterTransition(TKey& key, ::NTestShard::TStateServer::EEntityState from,
6-
::NTestShard::TStateServer::EEntityState to, std::unique_ptr<TEvKeyValue::TEvRequest> ev) {
6+
::NTestShard::TStateServer::EEntityState to, std::unique_ptr<TEvKeyValue::TEvRequest> ev,
7+
NWilson::TTraceId traceId) {
78
STLOG(PRI_DEBUG, TEST_SHARD, TS14, "RegisterTransition", (TabletId, TabletId), (Key, key.first), (From, from),
89
(To, to));
910

@@ -38,7 +39,7 @@ namespace NKikimr::NTestShard {
3839
: key.second.ConfirmedKeyIndex == Max<size_t>());
3940
}
4041
if (ev) {
41-
Send(TabletActorId, ev.release());
42+
Send(TabletActorId, ev.release(), 0, 0, std::move(traceId));
4243
}
4344
if (!DoSomeActionInFlight) {
4445
TActivationContext::Send(new IEventHandle(EvDoSomeAction, 0, SelfId(), {}, nullptr, 0));
@@ -61,6 +62,7 @@ namespace NKikimr::NTestShard {
6162
// update local state
6263
key.second.PendingState = to;
6364
key.second.Request = std::move(ev);
65+
key.second.TraceId = std::move(traceId);
6466
TransitionInFlight.push_back(&key);
6567
}
6668

@@ -108,7 +110,7 @@ namespace NKikimr::NTestShard {
108110
if (const auto it = WritesInFlight.find(r->Record.GetCookie()); it != WritesInFlight.end()) {
109111
StateServerWriteLatency.Add(TActivationContext::Monotonic(), TDuration::Seconds(it->second.Timer.PassedReset()));
110112
}
111-
Send(TabletActorId, r.release());
113+
Send(TabletActorId, r.release(), 0, 0, std::move(key.second.TraceId));
112114
}
113115
if (key.second.ConfirmedState == ::NTestShard::TStateServer::DELETED) {
114116
Y_ABORT_UNLESS(key.second.ConfirmedKeyIndex == Max<size_t>());

ydb/core/test_tablet/load_actor_write.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,19 @@ namespace NKikimr::NTestShard {
3333

3434
STLOG(PRI_INFO, TEST_SHARD, TS12, "writing data", (TabletId, TabletId), (Key, key), (Size, value.size()));
3535

36+
NWilson::TTraceId traceId;
37+
if (RandomNumber(1000000u) < Settings.GetPutTraceFractionPPM()) {
38+
traceId = NWilson::TTraceId::NewTraceId(Settings.GetPutTraceVerbosity(), Max<ui32>());
39+
}
40+
3641
auto [wifIt, wifInserted] = WritesInFlight.try_emplace(r.GetCookie(), key);
3742
Y_ABORT_UNLESS(wifInserted);
3843
Y_ABORT_UNLESS(wifIt->second.KeysInQuery.size() == 1);
3944

4045
auto [it, inserted] = Keys.try_emplace(key, value.size());
4146
Y_ABORT_UNLESS(inserted);
42-
RegisterTransition(*it, ::NTestShard::TStateServer::ABSENT, ::NTestShard::TStateServer::WRITE_PENDING, std::move(ev));
47+
RegisterTransition(*it, ::NTestShard::TStateServer::ABSENT, ::NTestShard::TStateServer::WRITE_PENDING,
48+
std::move(ev), std::move(traceId));
4349

4450
++KeysWritten;
4551
BytesProcessed += value.size();

0 commit comments

Comments
 (0)