1
1
#pragma once
2
2
#include " counters.h"
3
3
4
+ #include < ydb/core/formats/arrow/reader/position.h>
4
5
#include < ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h>
5
6
#include < ydb/core/tx/columnshard/common/limits.h>
6
7
#include < ydb/core/tx/columnshard/data_locks/manager/manager.h>
7
- #include < ydb/core/tx/columnshard/engines/changes/general_compaction.h>
8
8
#include < ydb/core/tx/columnshard/engines/changes/abstract/abstract.h>
9
+ #include < ydb/core/tx/columnshard/engines/changes/general_compaction.h>
9
10
#include < ydb/core/tx/columnshard/engines/portions/portion_info.h>
10
11
#include < ydb/core/tx/columnshard/engines/storage/optimizer/abstract/optimizer.h>
11
12
#include < ydb/core/tx/columnshard/hooks/abstract/abstract.h>
13
+
12
14
#include < ydb/library/accessor/accessor.h>
13
15
14
16
#include < util/generic/hash.h>
15
- #include < util/system/types.h>
16
17
#include < util/generic/hash_set.h>
17
- #include < ydb/core/formats/arrow/reader/position .h>
18
+ #include < util/system/types .h>
18
19
19
20
namespace NKikimr ::NOlap::NStorageOptimizer::NBuckets {
20
21
@@ -30,6 +31,7 @@ class TSimplePortionsGroupInfo {
30
31
YDB_READONLY (i64, Bytes, 0 );
31
32
YDB_READONLY (i64, Count, 0 );
32
33
YDB_READONLY (i64, RecordsCount, 0 );
34
+
33
35
public:
34
36
NJson::TJsonValue SerializeToJson () const {
35
37
NJson::TJsonValue result = NJson::JSON_MAP;
@@ -62,11 +64,10 @@ class TPortionsGroupInfo: public TSimplePortionsGroupInfo {
62
64
private:
63
65
using TBase = TSimplePortionsGroupInfo;
64
66
std::shared_ptr<TPortionCategoryCounters> Signals;
67
+
65
68
public:
66
69
TPortionsGroupInfo (const std::shared_ptr<TPortionCategoryCounters>& signals)
67
- : Signals(signals)
68
- {
69
-
70
+ : Signals(signals) {
70
71
}
71
72
72
73
void AddPortion (const std::shared_ptr<TPortionInfo>& p) {
@@ -286,13 +287,13 @@ class TPortionsPool {
286
287
287
288
TPortionsPool (const std::shared_ptr<TCounters>& counters, const TDuration futureDetector)
288
289
: Counters(counters)
289
- , FutureDetector(futureDetector)
290
- {
290
+ , FutureDetector(futureDetector) {
291
291
}
292
292
293
293
~TPortionsPool () {
294
294
for (auto && i : Actuals) {
295
295
Counters->PortionsForMerge ->RemovePortion (i.second );
296
+ Counters->ActualPortions ->RemovePortion (i.second );
296
297
}
297
298
for (auto && f : Futures) {
298
299
for (auto && i : f.second ) {
@@ -433,7 +434,7 @@ class TPortionsPool {
433
434
}
434
435
}
435
436
436
- bool Remove (const std::shared_ptr<TPortionInfo>& portion) Y_WARN_UNUSED_RESULT {
437
+ [[nodiscard]] bool Remove (const std::shared_ptr<TPortionInfo>& portion) {
437
438
portion->AddRuntimeFeature (TPortionInfo::ERuntimeFeature::Optimized);
438
439
if (RemovePreActual (portion)) {
439
440
return true ;
@@ -660,12 +661,12 @@ class TPortionsBucket: public TMoveOnly {
660
661
TPortionsBucket& Owner;
661
662
const bool IsEmptyOthers = false ;
662
663
const bool HasNextBorder = false ;
664
+
663
665
public:
664
666
TModificationGuard (TPortionsBucket& owner)
665
667
: Owner(owner)
666
668
, IsEmptyOthers(Owner.Others.ActualsEmpty())
667
- , HasNextBorder(Owner.NextBorder)
668
- {
669
+ , HasNextBorder(Owner.NextBorder) {
669
670
AFL_VERIFY_DEBUG (Owner.Validate ());
670
671
}
671
672
@@ -710,8 +711,7 @@ class TPortionsBucket: public TMoveOnly {
710
711
TPortionsBucket (const std::shared_ptr<TPortionInfo>& portion, const std::shared_ptr<TCounters>& counters)
711
712
: MainPortion(portion)
712
713
, Counters(counters)
713
- , Others(Counters, GetCommonFreshnessCheckDuration())
714
- {
714
+ , Others(Counters, GetCommonFreshnessCheckDuration()) {
715
715
if (MainPortion) {
716
716
Counters->PortionsAlone ->AddPortion (MainPortion);
717
717
}
@@ -995,13 +995,14 @@ class TPortionBuckets {
995
995
}
996
996
AddBucketToRating (insertInfo.first ->second );
997
997
}
998
+
998
999
public:
999
- TPortionBuckets (const std::shared_ptr<arrow::Schema>& primaryKeysSchema, const std::shared_ptr<IStoragesManager>& storagesManager, const std::shared_ptr<TCounters>& counters)
1000
+ TPortionBuckets (const std::shared_ptr<arrow::Schema>& primaryKeysSchema, const std::shared_ptr<IStoragesManager>& storagesManager,
1001
+ const std::shared_ptr<TCounters>& counters)
1000
1002
: PrimaryKeysSchema(primaryKeysSchema)
1001
1003
, StoragesManager(storagesManager)
1002
1004
, LeftBucket(std::make_shared<TPortionsBucket>(nullptr , counters))
1003
- , Counters(counters)
1004
- {
1005
+ , Counters(counters) {
1005
1006
AddBucketToRating (LeftBucket);
1006
1007
}
1007
1008
@@ -1128,6 +1129,7 @@ class TOptimizerPlanner: public IOptimizerPlanner {
1128
1129
std::shared_ptr<TCounters> Counters;
1129
1130
TPortionBuckets Buckets;
1130
1131
const std::shared_ptr<IStoragesManager> StoragesManager;
1132
+
1131
1133
protected:
1132
1134
virtual bool DoIsLocked (const std::shared_ptr<NDataLocks::TManager>& dataLocksManager) const override {
1133
1135
return Buckets.IsLocked (dataLocksManager);
@@ -1156,7 +1158,6 @@ class TOptimizerPlanner: public IOptimizerPlanner {
1156
1158
}
1157
1159
virtual std::shared_ptr<TColumnEngineChanges> DoGetOptimizationTask (std::shared_ptr<TGranuleMeta> granule, const std::shared_ptr<NDataLocks::TManager>& locksManager) const override {
1158
1160
return Buckets.BuildOptimizationTask (granule, locksManager);
1159
-
1160
1161
}
1161
1162
virtual void DoActualize (const TInstant currentInstant) override {
1162
1163
Buckets.Actualize (currentInstant);
@@ -1175,6 +1176,7 @@ class TOptimizerPlanner: public IOptimizerPlanner {
1175
1176
virtual NJson::TJsonValue DoSerializeToJsonVisual () const override {
1176
1177
return Buckets.SerializeToJson ();
1177
1178
}
1179
+
1178
1180
public:
1179
1181
virtual std::vector<NArrow::NMerger::TSortableBatchPosition> GetBucketPositions () const override {
1180
1182
return Buckets.GetBucketPositions ();
@@ -1184,9 +1186,8 @@ class TOptimizerPlanner: public IOptimizerPlanner {
1184
1186
: TBase(pathId)
1185
1187
, Counters(std::make_shared<TCounters>())
1186
1188
, Buckets(primaryKeysSchema, storagesManager, Counters)
1187
- , StoragesManager(storagesManager)
1188
- {
1189
+ , StoragesManager(storagesManager) {
1189
1190
}
1190
1191
};
1191
1192
1192
- }
1193
+ } // namespace NKikimr::NOlap::NStorageOptimizer::NBuckets
0 commit comments