Skip to content

Commit 90694aa

Browse files
authored
25-3: Do not emit metering records with tags.ydb_size == 0 (#26121)
2 parents 55ad441 + 6f5eb40 commit 90694aa

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

ydb/core/tx/schemeshard/schemeshard__serverless_storage_billing.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@ struct TSchemeShard::TTxServerlessStorageBilling : public TTransactionBase<TSche
7676
return true;
7777
}
7878

79+
if (!spaceUsage.Tables.TotalSize) {
80+
LOG_INFO_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, "TTxServerlessStorageBilling: nothing to bill"
81+
<< ", schemeshardId: " << Self->SelfTabletId()
82+
<< ", domainId: " << Self->ParentDomainId
83+
<< ", next retry at: " << TimeToNextBill);
84+
return true;
85+
}
86+
7987
NIceDb::TNiceDb db(txc.DB);
8088

8189
if (!Self->ServerlessStorageLastBillTime) {

ydb/core/tx/schemeshard/ut_serverless/ut_serverless.cpp

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ Y_UNIT_TEST_SUITE(TSchemeShardServerLess) {
253253
waitMeteringMessage();
254254

255255
{
256-
TString meteringData = R"({"usage":{"start":1600452120,"quantity":59,"finish":1600452179,"type":"delta","unit":"byte*second"},"tags":{"ydb_size":13280},"labels":{"Category":"Table"},"id":"72057594046678944-3-1600452120-1600452179-13280","cloud_id":"CLOUD_ID_VAL","source_wt":1600452180,"source_id":"sless-docapi-ydb-storage","resource_id":"DATABASE_ID_VAL","schema":"ydb.serverless.v1","folder_id":"FOLDER_ID_VAL","version":"1.0.0"})";
256+
TString meteringData = R"({"usage":{"start":1600452180,"quantity":59,"finish":1600452239,"type":"delta","unit":"byte*second"},"tags":{"ydb_size":13280},"labels":{"Category":"Table"},"id":"72057594046678944-3-1600452180-1600452239-13280","cloud_id":"CLOUD_ID_VAL","source_wt":1600452240,"source_id":"sless-docapi-ydb-storage","resource_id":"DATABASE_ID_VAL","schema":"ydb.serverless.v1","folder_id":"FOLDER_ID_VAL","version":"1.0.0"})";
257257
MeteringDataEqual(meteringMessages, meteringData);
258258
}
259259

@@ -265,12 +265,9 @@ Y_UNIT_TEST_SUITE(TSchemeShardServerLess) {
265265
meteringMessages.clear();
266266
runtime.SetObserverFunc(grabMeteringMessage);
267267
runtime.AdvanceCurrentTime(TDuration::Minutes(1));
268-
waitMeteringMessage();
268+
runtime.SimulateSleep(TDuration::Minutes(1));
269269

270-
{
271-
TString meteringData = R"({"usage":{"start":1600452180,"quantity":59,"finish":1600452239,"type":"delta","unit":"byte*second"},"tags":{"ydb_size":0},"labels":{"Category":"Table"},"id":"72057594046678944-3-1600452180-1600452239-0","cloud_id":"CLOUD_ID_VAL","source_wt":1600452240,"source_id":"sless-docapi-ydb-storage","resource_id":"DATABASE_ID_VAL","schema":"ydb.serverless.v1","folder_id":"FOLDER_ID_VAL","version":"1.0.0"})";
272-
MeteringDataEqual(meteringMessages, meteringData);
273-
}
270+
UNIT_ASSERT(meteringMessages.empty());
274271
}
275272

276273
Y_UNIT_TEST(StorageBillingLabels) {
@@ -334,6 +331,22 @@ Y_UNIT_TEST_SUITE(TSchemeShardServerLess) {
334331
}));
335332
env.TestWaitNotification(runtime, txId);
336333

334+
ui64 tenantSchemeShard = 0;
335+
TestDescribeResult(DescribePath(runtime, "/MyRoot/ServerlessDB"), {
336+
NLs::PathExist,
337+
NLs::ExtractTenantSchemeshard(&tenantSchemeShard),
338+
});
339+
340+
TestCreateTable(runtime, tenantSchemeShard, ++txId, "/MyRoot/ServerlessDB", R"(
341+
Name: "Table"
342+
Columns { Name: "key" Type: "Uint32" }
343+
Columns { Name: "value" Type: "Utf8" }
344+
KeyColumnNames: ["key"]
345+
)");
346+
env.TestWaitNotification(runtime, txId, tenantSchemeShard);
347+
348+
WriteRow(runtime, tenantSchemeShard, ++txId, "/MyRoot/ServerlessDB/Table", 0, 1, "v1");
349+
337350
TBlockEvents<NMetering::TEvMetering::TEvWriteMeteringJson> block(runtime);
338351
runtime.WaitFor("metering", [&]{ return block.size() >= 1; });
339352

0 commit comments

Comments
 (0)