Skip to content

Commit 1fa97d2

Browse files
committed
EvWriteCounters
1 parent 9b305e0 commit 1fa97d2

8 files changed

+50
-24
lines changed

ydb/core/protos/counters_datashard.proto

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,17 @@ enum ECumulativeCounters {
132132
COUNTER_CHANGE_EXCHANGE_REJECTED_APPLY = 99 [(CounterOpts) = {Name: "ChangeExchangeRejectedApply"}];
133133
COUNTER_CHANGE_RECORDS_SENT = 100 [(CounterOpts) = {Name: "ChangeRecordsSent"}];
134134
COUNTER_CHANGE_RECORDS_FORGOTTEN = 101 [(CounterOpts) = {Name: "ChangeRecordsForgotten"}];
135+
COUNTER_WRITE_REQUEST = 102 [(CounterOpts) = {Name: "WriteRequests"}];
136+
COUNTER_WRITE_IMMEDIATE = 103 [(CounterOpts) = {Name: "WriteImmediate"}];
137+
COUNTER_WRITE_COMPLETE = 104 [(CounterOpts) = {Name: "WriteComplete"}];
138+
COUNTER_WRITE_DIRTY = 105 [(CounterOpts) = {Name: "WriteDirty"}];
139+
COUNTER_WRITE_SUCCESS = 106 [(CounterOpts) = {Name: "WriteRowsSuccess"}];
140+
COUNTER_WRITE_ERROR = 107 [(CounterOpts) = {Name: "WriteRowsError"}];
141+
COUNTER_WRITE_OVERLOADED = 108 [(CounterOpts) = {Name: "WriteRowsOverloaded"}];
142+
COUNTER_WRITE_OUT_OF_SPACE = 109 [(CounterOpts) = {Name: "WriteOutOfSpace"}];
143+
COUNTER_WRITE_CANCELLED = 110 [(CounterOpts) = {Name: "WriteCancelled"}];
144+
COUNTER_WRITE_ROWS = 111 [(CounterOpts) = {Name: "WriteRows"}];
145+
COUNTER_WRITE_ROWS_BYTES = 112 [(CounterOpts) = {Name: "WriteRowsBytes"}];
135146
}
136147

137148
enum EPercentileCounters {
@@ -381,6 +392,14 @@ enum EPercentileCounters {
381392
Ranges: { Value: 5 Name: "5"},
382393
Ranges: { Value: 10 Name: "10"},
383394
}];
395+
396+
COUNTER_WRITE_SUCCESS_COMPLETE_LATENCY = 20 [(CounterOpts) = {
397+
Name: "WriteSuccessCompleteLatency"
398+
}];
399+
400+
COUNTER_WRITE_EXEC_LATENCY = 21 [(CounterOpts) = {
401+
Name: "WriteExecLatency"
402+
}];
384403
}
385404

386405
enum ETxTypes {

ydb/core/tx/datashard/check_write_unit.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ EExecutionStatus TCheckWriteUnit::Execute(TOperation::TPtr op,
6464
<< "Cannot perform transaction: out of disk space at tablet "
6565
<< DataShard.TabletID() << " txId " << op->GetTxId();
6666

67-
DataShard.IncCounter(COUNTER_PREPARE_OUT_OF_SPACE);
67+
DataShard.IncCounter(COUNTER_WRITE_OUT_OF_SPACE);
6868

6969
writeOp->SetError(NKikimrDataEvents::TEvWriteResult::STATUS_INTERNAL_ERROR, err, DataShard.TabletID());
7070
op->Abort(EExecutionUnitKind::FinishProposeWrite);
@@ -88,7 +88,7 @@ EExecutionStatus TCheckWriteUnit::Execute(TOperation::TPtr op,
8888
// Updates are not allowed when database is out of space
8989
TString err = "Cannot perform writes: database is out of disk space";
9090

91-
DataShard.IncCounter(COUNTER_PREPARE_OUT_OF_SPACE);
91+
DataShard.IncCounter(COUNTER_WRITE_OUT_OF_SPACE);
9292

9393
writeOp->SetError(NKikimrDataEvents::TEvWriteResult::STATUS_INTERNAL_ERROR, err, DataShard.TabletID());
9494
op->Abort(EExecutionUnitKind::FinishProposeWrite);

ydb/core/tx/datashard/datashard.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2662,8 +2662,8 @@ bool TDataShard::CheckDataTxRejectAndReply(const NEvents::TDataEvents::TEvWrite:
26622662
LOG_NOTICE_S(ctx, NKikimrServices::TX_DATASHARD, rejectDescription);
26632663

26642664
ctx.Send(ev->Sender, result.release());
2665-
IncCounter(COUNTER_PREPARE_OVERLOADED);
2666-
IncCounter(COUNTER_PREPARE_COMPLETE);
2665+
IncCounter(COUNTER_WRITE_OVERLOADED);
2666+
IncCounter(COUNTER_WRITE_COMPLETE);
26672667
return true;
26682668
}
26692669

ydb/core/tx/datashard/datashard__write.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ void TDataShard::Handle(NEvents::TDataEvents::TEvWrite::TPtr& ev, const TActorCo
222222
}
223223
}
224224

225-
IncCounter(COUNTER_PREPARE_REQUEST);
225+
IncCounter(COUNTER_WRITE_REQUEST);
226226

227227
if (CheckDataTxRejectAndReply(ev, ctx)) {
228228
return;

ydb/core/tx/datashard/datashard_impl.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3153,10 +3153,10 @@ class TDataShard
31533153
ev->Record.MutableTableStats()->SetLastAccessTime(ti.Stats.AccessTime.MilliSeconds());
31543154
ev->Record.MutableTableStats()->SetLastUpdateTime(ti.Stats.UpdateTime.MilliSeconds());
31553155

3156-
ev->Record.MutableTableStats()->SetImmediateTxCompleted(TabletCounters->Cumulative()[COUNTER_PREPARE_IMMEDIATE].Get());
3156+
ev->Record.MutableTableStats()->SetImmediateTxCompleted(TabletCounters->Cumulative()[COUNTER_PREPARE_IMMEDIATE].Get() + TabletCounters->Cumulative()[COUNTER_WRITE_IMMEDIATE].Get());
31573157
ev->Record.MutableTableStats()->SetPlannedTxCompleted(TabletCounters->Cumulative()[COUNTER_PLANNED_TX_COMPLETE].Get());
3158-
ev->Record.MutableTableStats()->SetTxRejectedByOverload(TabletCounters->Cumulative()[COUNTER_PREPARE_OVERLOADED].Get());
3159-
ev->Record.MutableTableStats()->SetTxRejectedBySpace(TabletCounters->Cumulative()[COUNTER_PREPARE_OUT_OF_SPACE].Get());
3158+
ev->Record.MutableTableStats()->SetTxRejectedByOverload(TabletCounters->Cumulative()[COUNTER_PREPARE_OVERLOADED].Get() + TabletCounters->Cumulative()[COUNTER_WRITE_OVERLOADED].Get());
3159+
ev->Record.MutableTableStats()->SetTxRejectedBySpace(TabletCounters->Cumulative()[COUNTER_PREPARE_OUT_OF_SPACE].Get() + TabletCounters->Cumulative()[COUNTER_WRITE_OUT_OF_SPACE].Get());
31603160
ev->Record.MutableTableStats()->SetTxCompleteLagMsec(TabletCounters->Simple()[COUNTER_TX_COMPLETE_LAG].Get());
31613161
ev->Record.MutableTableStats()->SetInFlightTxCount(TabletCounters->Simple()[COUNTER_TX_IN_FLY].Get()
31623162
+ TabletCounters->Simple()[COUNTER_IMMEDIATE_TX_IN_FLY].Get());

ydb/core/tx/datashard/datashard_ut_stats.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) {
9393
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 0u);
9494
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetDataSize(), 704u);
9595
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetIndexSize(), 0u);
96+
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetImmediateTxCompleted(), 1u);
9697
}
9798

9899
CompactTable(runtime, shard1, tableId1, false);
@@ -111,6 +112,16 @@ Y_UNIT_TEST_SUITE(DataShardStats) {
111112
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetChannels()[0].GetDataSize(), 65u);
112113
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetChannels()[0].GetIndexSize(), 54u);
113114
}
115+
116+
Write(runtime, sender, shard1, tableId1.PathId.LocalPathId, TShardedTableOptions().Columns_, 1, 100, NKikimrDataEvents::TEvWrite::MODE_IMMEDIATE);
117+
118+
{
119+
Cerr << "... waiting for stats after write" << Endl;
120+
auto stats = WaitTableStats(runtime);
121+
UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1);
122+
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 4u);
123+
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetImmediateTxCompleted(), 2u);
124+
}
114125
}
115126

116127
Y_UNIT_TEST(MultipleChannelsStatsCorrect) {

ydb/core/tx/datashard/finish_propose_write_unit.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ void TFinishProposeWriteUnit::Complete(TOperation::TPtr op, const TActorContext
128128
TWriteOperation* writeOp = TWriteOperation::CastWriteOperation(op);
129129

130130
if (!op->HasResultSentFlag()) {
131-
DataShard.IncCounter(COUNTER_PREPARE_COMPLETE);
131+
DataShard.IncCounter(COUNTER_WRITE_COMPLETE);
132132

133133
if (writeOp->GetWriteResult())
134134
CompleteRequest(op, ctx);
@@ -167,7 +167,7 @@ void TFinishProposeWriteUnit::CompleteRequest(TOperation::TPtr op, const TActorC
167167
}
168168

169169
if (res->IsPrepared()) {
170-
DataShard.IncCounter(COUNTER_PREPARE_SUCCESS_COMPLETE_LATENCY, duration);
170+
DataShard.IncCounter(COUNTER_WRITE_SUCCESS_COMPLETE_LATENCY, duration);
171171
} else {
172172
DataShard.CheckSplitCanStart(ctx);
173173
DataShard.CheckMvccStateChangeCanStart(ctx);
@@ -203,20 +203,20 @@ void TFinishProposeWriteUnit::UpdateCounters(const TWriteOperation* writeOp, con
203203
{
204204
const auto& res = writeOp->GetWriteResult();
205205
auto execLatency = TAppData::TimeProvider->Now() - writeOp->GetReceivedAt();
206-
DataShard.IncCounter(COUNTER_PREPARE_EXEC_LATENCY, execLatency);
206+
DataShard.IncCounter(COUNTER_WRITE_EXEC_LATENCY, execLatency);
207207
if (res->IsPrepared()) {
208-
DataShard.IncCounter(COUNTER_PREPARE_SUCCESS);
208+
DataShard.IncCounter(COUNTER_WRITE_SUCCESS);
209209
} else {
210210
if (writeOp->IsDirty())
211-
DataShard.IncCounter(COUNTER_PREPARE_DIRTY);
211+
DataShard.IncCounter(COUNTER_WRITE_DIRTY);
212212

213213
if (res->IsError()) {
214-
DataShard.IncCounter(COUNTER_PREPARE_ERROR);
214+
DataShard.IncCounter(COUNTER_WRITE_ERROR);
215215
LOG_LOG_S_THROTTLE(DataShard.GetLogThrottler(TDataShard::ELogThrottlerType::FinishProposeUnit_UpdateCounters), ctx, NActors::NLog::PRI_ERROR, NKikimrServices::TX_DATASHARD,
216216
"Prepare transaction failed. txid " << writeOp->GetTxId()
217217
<< " at tablet " << DataShard.TabletID() << " errors: " << res->GetError());
218218
} else {
219-
DataShard.IncCounter(COUNTER_PREPARE_IMMEDIATE);
219+
DataShard.IncCounter(COUNTER_WRITE_IMMEDIATE);
220220
}
221221
}
222222
}

ydb/core/tx/datashard/write_unit.cpp

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ class TWriteUnit : public TExecutionUnit {
8888

8989
writeTx->GetEngineHost()->UpdateRow(fullTableId, keyCells, commands);
9090
}
91-
//TODO: Counters
92-
// self->IncCounter(COUNTER_UPLOAD_ROWS, rowCount);
93-
// self->IncCounter(COUNTER_UPLOAD_ROWS_BYTES, matrix.GetBuffer().size());
91+
92+
self->IncCounter(COUNTER_WRITE_ROWS, matrix.GetRowCount());
93+
self->IncCounter(COUNTER_WRITE_ROWS_BYTES, matrix.GetBuffer().size());
9494

9595
writeOp->SetWriteResult(NEvents::TDataEvents::TEvWriteResult::BuildCommited(self->TabletID(), writeOp->GetTxId()));
9696

@@ -170,12 +170,8 @@ class TWriteUnit : public TExecutionUnit {
170170
const auto& status = writeOp->GetWriteResult()->Record.status();
171171
LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "Completed write operation for " << *op << " at " << DataShard.TabletID() << ", status " << status);
172172

173-
//TODO: Counters
174-
// if (WriteResult->Record.status() == NKikimrDataEvents::TEvWriteResult::STATUS_COMPLETED || WriteResult->Record.status() == NKikimrDataEvents::TEvWriteResult::STATUS_PREPARED) {
175-
// self->IncCounter(COUNTER_WRITE_SUCCESS);
176-
// } else {
177-
// self->IncCounter(COUNTER_WRITE_ERROR);
178-
// }
173+
DataShard.IncCounter(writeOp->GetWriteResult()->Record.status() == NKikimrDataEvents::TEvWriteResult::STATUS_COMPLETED ?
174+
COUNTER_WRITE_SUCCESS : COUNTER_WRITE_ERROR);
179175

180176
ctx.Send(writeOp->GetEv()->Sender, writeOp->ReleaseWriteResult().release(), 0, writeOp->GetEv()->Cookie);
181177
}

0 commit comments

Comments
 (0)