5
5
6
6
#include < ydb/core/kqp/ut/common/columnshard.h>
7
7
#include < ydb/core/tx/columnshard/data_locks/locks/list.h>
8
+ #include < ydb/core/tx/columnshard/engines/changes/abstract/abstract.h>
8
9
#include < ydb/core/tx/columnshard/engines/scheme/abstract/index_info.h>
9
10
#include < ydb/core/tx/columnshard/hooks/testing/controller.h>
10
11
#include < ydb/core/tx/columnshard/test_helper/controllers.h>
11
- #include < ydb/core/tx/columnshard/engines/changes/abstract/abstract.h>
12
12
#include < ydb/core/wrappers/abstract.h>
13
13
#include < ydb/core/wrappers/fake_storage.h>
14
14
@@ -18,16 +18,14 @@ static const TString DEFAULT_TABLE_NAME = "/Root/olapStore/olapTable";
18
18
static const TString DEFAULT_TIER_NAME = " /Root/tier1" ;
19
19
static const TString DEFAULT_COLUMN_NAME = " timestamp" ;
20
20
21
- class TAbortedWriteCounterController final
22
- : public NOlap::TWaitCompactionController {
21
+ class TAbortedWriteCounterController final : public NOlap::TWaitCompactionController {
23
22
public:
24
23
ui64 GetAbortedWrites () const {
25
24
return AbortedWrites.load ();
26
25
}
27
26
28
27
protected:
29
- bool DoOnWriteIndexComplete (const NOlap::TColumnEngineChanges& change,
30
- const ::NKikimr::NColumnShard::TColumnShard& shard) override {
28
+ bool DoOnWriteIndexComplete (const NOlap::TColumnEngineChanges& change, const ::NKikimr::NColumnShard::TColumnShard& shard) override {
31
29
if (change.IsAborted ()) {
32
30
++AbortedWrites;
33
31
}
@@ -36,10 +34,10 @@ class TAbortedWriteCounterController final
36
34
}
37
35
38
36
private:
39
- std::atomic<ui64> AbortedWrites{0 };
37
+ std::atomic<ui64> AbortedWrites{ 0 };
40
38
};
41
39
42
- template <class TCtrl = NOlap::TWaitCompactionController>
40
+ template <class TCtrl = NOlap::TWaitCompactionController>
43
41
class TTieringTestHelper {
44
42
private:
45
43
using TCtrlGuard = NYDBTest::TControllers::TGuard<TCtrl>;
@@ -87,14 +85,15 @@ class TTieringTestHelper {
87
85
}
88
86
}
89
87
90
- void CheckAllDataInTier (const TString& tierName, const bool onlyActive= true ) {
88
+ void CheckAllDataInTier (const TString& tierName, const bool onlyActive = true ) {
91
89
NYdb::NTable::TTableClient tableClient = TestHelper->GetKikimr ().GetTableClient ();
92
90
93
91
auto selectQuery = TStringBuilder ();
94
92
selectQuery << R"(
95
93
SELECT
96
94
TierName, SUM(ColumnRawBytes) AS RawBytes, SUM(Rows) AS Rows
97
- FROM `)" << TablePath << R"( /.sys/primary_index_portion_stats`)" ;
95
+ FROM `)" << TablePath
96
+ << R"( /.sys/primary_index_portion_stats`)" ;
98
97
if (onlyActive) {
99
98
selectQuery << " WHERE Activity == 1" ;
100
99
}
@@ -107,7 +106,6 @@ class TTieringTestHelper {
107
106
};
108
107
109
108
Y_UNIT_TEST_SUITE (KqpOlapTiering) {
110
-
111
109
Y_UNIT_TEST (EvictionResetTiering) {
112
110
TTieringTestHelper tieringHelper;
113
111
auto & csController = tieringHelper.GetCsController ();
@@ -148,7 +146,8 @@ Y_UNIT_TEST_SUITE(KqpOlapTiering) {
148
146
tieringHelper.CheckAllDataInTier (DEFAULT_TIER_NAME);
149
147
150
148
{
151
- const TString query = R"( ALTER TABLE `/Root/olapStore/olapTable` SET TTL Interval("P30000D") TO EXTERNAL DATA SOURCE `/Root/tier1` ON timestamp)" ;
149
+ const TString query =
150
+ R"( ALTER TABLE `/Root/olapStore/olapTable` SET TTL Interval("P30000D") TO EXTERNAL DATA SOURCE `/Root/tier1` ON timestamp)" ;
152
151
auto result = testHelper.GetSession ().ExecuteSchemeQuery (query).GetValueSync ();
153
152
UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), NYdb::EStatus::SUCCESS, result.GetIssues ().ToString ());
154
153
}
@@ -203,13 +202,15 @@ Y_UNIT_TEST_SUITE(KqpOlapTiering) {
203
202
testHelper.CreateTier (" tier1" );
204
203
205
204
{
206
- const TString query = R"( ALTER TABLE `/Root/olapStore/olapTable` SET TTL Interval("P10D") TO EXTERNAL DATA SOURCE `/Root/tier1` ON unknown_column;)" ;
205
+ const TString query =
206
+ R"( ALTER TABLE `/Root/olapStore/olapTable` SET TTL Interval("P10D") TO EXTERNAL DATA SOURCE `/Root/tier1` ON unknown_column;)" ;
207
207
auto result = testHelper.GetSession ().ExecuteSchemeQuery (query).GetValueSync ();
208
208
UNIT_ASSERT_VALUES_UNEQUAL (result.GetStatus (), NYdb::EStatus::SUCCESS);
209
209
}
210
210
211
211
{
212
- const TString query = R"( ALTER TABLE `/Root/olapStore/olapTable` SET TTL Interval("P10D") TO EXTERNAL DATA SOURCE `/Root/tier1` ON uid;)" ;
212
+ const TString query =
213
+ R"( ALTER TABLE `/Root/olapStore/olapTable` SET TTL Interval("P10D") TO EXTERNAL DATA SOURCE `/Root/tier1` ON uid;)" ;
213
214
auto result = testHelper.GetSession ().ExecuteSchemeQuery (query).GetValueSync ();
214
215
UNIT_ASSERT_VALUES_UNEQUAL (result.GetStatus (), NYdb::EStatus::SUCCESS);
215
216
}
@@ -280,19 +281,19 @@ Y_UNIT_TEST_SUITE(KqpOlapTiering) {
280
281
{
281
282
const TDuration tsInterval = TDuration::Days (3650 );
282
283
const ui64 rows = 10000 ;
283
- WriteTestData (testHelper.GetKikimr (), DEFAULT_TABLE_NAME, 0 , (TInstant::Now () - tsInterval).MicroSeconds (), rows,
284
- false , tsInterval.MicroSeconds () / rows);
284
+ WriteTestData (testHelper.GetKikimr (), DEFAULT_TABLE_NAME, 0 , (TInstant::Now () - tsInterval).MicroSeconds (), rows, false ,
285
+ tsInterval.MicroSeconds () / rows);
285
286
}
286
287
287
- // {
288
- // auto selectQuery = TString(R"(
289
- // SELECT MAX(timestamp) AS timestamp FROM `/Root/olapStore/olapTable`
290
- // )");
291
- //
292
- // auto rows = ExecuteScanQuery(tableClient, selectQuery);
293
- // UNIT_ASSERT_VALUES_EQUAL(rows.size(), 1);
294
- // UNIT_ASSERT_GT(GetTimestamp(rows[0].at(DEFAULT_COLUMN_NAME)), TInstant::Now() - TDuration::Days(100));
295
- // }
288
+ // {
289
+ // auto selectQuery = TString(R"(
290
+ // SELECT MAX(timestamp) AS timestamp FROM `/Root/olapStore/olapTable`
291
+ // )");
292
+ //
293
+ // auto rows = ExecuteScanQuery(tableClient, selectQuery);
294
+ // UNIT_ASSERT_VALUES_EQUAL(rows.size(), 1);
295
+ // UNIT_ASSERT_GT(GetTimestamp(rows[0].at(DEFAULT_COLUMN_NAME)), TInstant::Now() - TDuration::Days(100));
296
+ // }
296
297
297
298
{
298
299
auto selectQuery = TString (R"(
@@ -333,20 +334,20 @@ Y_UNIT_TEST_SUITE(KqpOlapTiering) {
333
334
NYdb::NTable::TTableClient tableClient = kikimr.GetTableClient ();
334
335
335
336
olapHelper.CreateTestOlapTable ();
336
- const auto describeResult = kikimr.GetTestClient ().Describe (
337
- kikimr.GetTestServer ().GetRuntime (), " Root/olapStore/olapTable" );
337
+ const auto describeResult = kikimr.GetTestClient ().Describe (kikimr.GetTestServer ().GetRuntime (), " Root/olapStore/olapTable" );
338
338
const auto tablePathId = NColumnShard::TSchemeShardLocalPathId::FromRawValue (describeResult.GetPathId ());
339
339
340
340
tieringHelper.WriteSampleData ();
341
341
csController->WaitCompactions (TDuration::Seconds (5 ));
342
342
THashSet<NColumnShard::TInternalPathId> pathsToLock;
343
- for (const auto & [_, pathIdTranslator]: csController->GetActiveTablets ()) {
343
+ for (const auto & [_, pathIdTranslator] : csController->GetActiveTablets ()) {
344
344
if (auto internalPathId = pathIdTranslator->ResolveInternalPathId (tablePathId)) {
345
345
pathsToLock.insert (*internalPathId);
346
346
}
347
347
};
348
348
349
- csController->RegisterLock (" table" , std::make_shared<NOlap::NDataLocks::TListTablesLock>(" table" , std::move (pathsToLock), NOlap::NDataLocks::ELockCategory::Compaction));
349
+ csController->RegisterLock (" table" ,
350
+ std::make_shared<NOlap::NDataLocks::TListTablesLock>(" table" , std::move (pathsToLock), NOlap::NDataLocks::ELockCategory::Compaction));
350
351
{
351
352
const TString query = R"( ALTER TABLE `/Root/olapStore/olapTable` SET TTL Interval("PT1S") ON timestamp)" ;
352
353
auto result = testHelper.GetSession ().ExecuteSchemeQuery (query).GetValueSync ();
@@ -373,6 +374,7 @@ Y_UNIT_TEST_SUITE(KqpOlapTiering) {
373
374
}
374
375
375
376
Y_UNIT_TEST (TieringGC) {
377
+ Singleton<NKikimr::NWrappers::NExternalStorage::TFakeExternalStorage>()->Clear ();
376
378
TTieringTestHelper tieringHelper;
377
379
auto & csController = tieringHelper.GetCsController ();
378
380
csController->SetOverrideMaxReadStaleness (TDuration::Seconds (1 ));
@@ -383,7 +385,6 @@ Y_UNIT_TEST_SUITE(KqpOlapTiering) {
383
385
olapHelper.CreateTestOlapTable ();
384
386
testHelper.CreateTier (" tier1" );
385
387
tieringHelper.WriteSampleData ();
386
-
387
388
testHelper.SetTiering (DEFAULT_TABLE_NAME, DEFAULT_TIER_NAME, DEFAULT_COLUMN_NAME);
388
389
csController->WaitCompactions (TDuration::Seconds (5 ));
389
390
csController->WaitActualization (TDuration::Seconds (5 ));
@@ -416,23 +417,19 @@ Y_UNIT_TEST_SUITE(KqpOlapTiering) {
416
417
auto & olapHelper = tieringHelper.GetOlapHelper ();
417
418
auto & testHelper = tieringHelper.GetTestHelper ();
418
419
419
-
420
420
olapHelper.CreateTestOlapTable ();
421
421
testHelper.CreateTier (" tier1" );
422
422
tieringHelper.WriteSampleData ();
423
423
putController->WaitCompactions (TDuration::Seconds (5 ));
424
424
425
425
putController->SetExternalStorageUnavailable (true );
426
- testHelper.SetTiering (DEFAULT_TABLE_NAME,
427
- DEFAULT_TIER_NAME,
428
- DEFAULT_COLUMN_NAME);
426
+ testHelper.SetTiering (DEFAULT_TABLE_NAME, DEFAULT_TIER_NAME, DEFAULT_COLUMN_NAME);
429
427
430
428
putController->WaitActualization (TDuration::Seconds (5 ));
431
429
Sleep (TDuration::Seconds (5 ));
432
430
433
431
UNIT_ASSERT_C (putController->GetAbortedWrites () > 20 ,
434
- " Expected load spike, but only "
435
- << putController->GetAbortedWrites () << " PutObject requests recorded" ); // comment after fix
432
+ " Expected load spike, but only " << putController->GetAbortedWrites () << " PutObject requests recorded" ); // comment after fix
436
433
// UNIT_ASSERT_C(putController->GetAbortedWrites() < 10,
437
434
// "Expected load spike, but was "
438
435
// << putController->GetAbortedWrites() << " PutObject requests recorded"); // uncomment after fix
0 commit comments