Skip to content

Commit e051e10

Browse files
authored
base: move TCompactionPolicy out of flat_scheme_op.proto (#10495)
Move `TCompactionPolicy` from `flat_scheme_op.proto` to distinct .proto file. The final goal is to break dependency of `ydb/core/base/` on `flat_scheme_op.pb.h`. Currently, `flat_scheme_op.proto` contains few fundamental structures essential for `ydb/core/base/`, alongside numerous higher-level components (scheme entities descriptions, scheme operations) that are irrelevant to `ydb/core/base/`'s needs.
1 parent f770184 commit e051e10

27 files changed

+197
-179
lines changed

ydb/core/base/localdb.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ TCompactionPolicy::TBackgroundPolicy::TBackgroundPolicy(ui32 threshold,
2222
, ResourceBrokerTask(resourceBrokerTask)
2323
{}
2424

25-
TCompactionPolicy::TBackgroundPolicy::TBackgroundPolicy(const NKikimrSchemeOp::TCompactionPolicy::TBackgroundPolicy &policyPb)
25+
TCompactionPolicy::TBackgroundPolicy::TBackgroundPolicy(const NKikimrCompaction::TCompactionPolicy::TBackgroundPolicy &policyPb)
2626
: Threshold(policyPb.HasThreshold() ? policyPb.GetThreshold() : 101)
2727
, PriorityBase(policyPb.HasPriorityBase() ? policyPb.GetPriorityBase() : 100)
2828
, TimeFactor(policyPb.HasTimeFactor() ? policyPb.GetTimeFactor() : 1.0)
2929
, ResourceBrokerTask(policyPb.HasResourceBrokerTask() ? policyPb.GetResourceBrokerTask() : BackgroundCompactionTaskName)
3030
{}
3131

32-
void TCompactionPolicy::TBackgroundPolicy::Serialize(NKikimrSchemeOp::TCompactionPolicy::TBackgroundPolicy& policyPb) const
32+
void TCompactionPolicy::TBackgroundPolicy::Serialize(NKikimrCompaction::TCompactionPolicy::TBackgroundPolicy& policyPb) const
3333
{
3434
policyPb.SetThreshold(Threshold);
3535
policyPb.SetPriorityBase(PriorityBase);
@@ -59,7 +59,7 @@ TCompactionPolicy::TGenerationPolicy::TGenerationPolicy(ui64 sizeToCompact,
5959
, UpliftPartSize(sizeToCompact / countToCompact)
6060
{}
6161

62-
TCompactionPolicy::TGenerationPolicy::TGenerationPolicy(const NKikimrSchemeOp::TCompactionPolicy::TGenerationPolicy &policyPb)
62+
TCompactionPolicy::TGenerationPolicy::TGenerationPolicy(const NKikimrCompaction::TCompactionPolicy::TGenerationPolicy &policyPb)
6363
: SizeToCompact(policyPb.HasSizeToCompact() ? policyPb.GetSizeToCompact() : 0)
6464
, CountToCompact(policyPb.HasCountToCompact() ? policyPb.GetCountToCompact() : 5)
6565
, ForceCountToCompact(policyPb.HasForceCountToCompact() ? policyPb.GetForceCountToCompact() : 8)
@@ -78,7 +78,7 @@ TCompactionPolicy::TGenerationPolicy::TGenerationPolicy(const NKikimrSchemeOp::T
7878
ResourceBrokerTask = LegacyQueueIdToTaskName(CompactionBrokerQueue);
7979
}
8080

81-
void TCompactionPolicy::TGenerationPolicy::Serialize(NKikimrSchemeOp::TCompactionPolicy::TGenerationPolicy& policyPb) const
81+
void TCompactionPolicy::TGenerationPolicy::Serialize(NKikimrCompaction::TCompactionPolicy::TGenerationPolicy& policyPb) const
8282
{
8383
policyPb.SetSizeToCompact(SizeToCompact);
8484
policyPb.SetCountToCompact(CountToCompact);
@@ -116,11 +116,11 @@ TCompactionPolicy::TCompactionPolicy()
116116
, LogOverheadSizeToSnapshot(16 * 1024 * 1024)
117117
, LogOverheadCountToSnapshot(500)
118118
, DroppedRowsPercentToCompact(50)
119-
, CompactionStrategy(NKikimrSchemeOp::CompactionStrategyUnset)
119+
, CompactionStrategy(NKikimrCompaction::CompactionStrategyUnset)
120120
, KeepEraseMarkers(false)
121121
{}
122122

123-
TCompactionPolicy::TCompactionPolicy(const NKikimrSchemeOp::TCompactionPolicy& policyPb)
123+
TCompactionPolicy::TCompactionPolicy(const NKikimrCompaction::TCompactionPolicy& policyPb)
124124
: InMemSizeToSnapshot(policyPb.HasInMemSizeToSnapshot() ? policyPb.GetInMemSizeToSnapshot() : 4 * 1024 * 1024)
125125
, InMemStepsToSnapshot(policyPb.HasInMemStepsToSnapshot() ? policyPb.GetInMemStepsToSnapshot() : 300)
126126
, InMemForceStepsToSnapshot(policyPb.HasInMemForceStepsToSnapshot() ? policyPb.GetInMemForceStepsToSnapshot() : 500)
@@ -161,7 +161,7 @@ TCompactionPolicy::TCompactionPolicy(const NKikimrSchemeOp::TCompactionPolicy& p
161161
}
162162
}
163163

164-
void TCompactionPolicy::Serialize(NKikimrSchemeOp::TCompactionPolicy& policyPb) const {
164+
void TCompactionPolicy::Serialize(NKikimrCompaction::TCompactionPolicy& policyPb) const {
165165
policyPb.SetInMemSizeToSnapshot(InMemSizeToSnapshot);
166166
policyPb.SetInMemStepsToSnapshot(InMemStepsToSnapshot);
167167
policyPb.SetInMemForceStepsToSnapshot(InMemForceStepsToSnapshot);
@@ -182,7 +182,7 @@ void TCompactionPolicy::Serialize(NKikimrSchemeOp::TCompactionPolicy& policyPb)
182182
policyPb.SetLogOverheadSizeToSnapshot(LogOverheadSizeToSnapshot);
183183
policyPb.SetLogOverheadCountToSnapshot(LogOverheadCountToSnapshot);
184184
policyPb.SetDroppedRowsPercentToCompact(DroppedRowsPercentToCompact);
185-
if (CompactionStrategy != NKikimrSchemeOp::CompactionStrategyUnset) {
185+
if (CompactionStrategy != NKikimrCompaction::CompactionStrategyUnset) {
186186
policyPb.SetCompactionStrategy(CompactionStrategy);
187187
}
188188
if (KeepEraseMarkers) {

ydb/core/base/localdb.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include <util/generic/map.h>
44
#include <util/generic/hash_set.h>
55
#include <util/generic/list.h>
6-
#include <ydb/core/protos/flat_scheme_op.pb.h>
6+
#include <ydb/core/protos/compaction.pb.h>
77
#include <ydb/library/yverify_stream/yverify_stream.h>
88
#include <google/protobuf/util/message_differencer.h>
99

@@ -19,9 +19,9 @@ struct TCompactionPolicy : public TThrRefBase {
1919

2020
TBackgroundPolicy();
2121
TBackgroundPolicy(ui32 threshold, ui32 priorityBase, double timeFactor, const TString &resourceBrokerTask);
22-
TBackgroundPolicy(const NKikimrSchemeOp::TCompactionPolicy::TBackgroundPolicy &policyPb);
22+
TBackgroundPolicy(const NKikimrCompaction::TCompactionPolicy::TBackgroundPolicy &policyPb);
2323

24-
void Serialize(NKikimrSchemeOp::TCompactionPolicy::TBackgroundPolicy& policyPb) const;
24+
void Serialize(NKikimrCompaction::TCompactionPolicy::TBackgroundPolicy& policyPb) const;
2525

2626
bool operator ==(const TBackgroundPolicy& p) const {
2727
return (Threshold == p.Threshold
@@ -50,9 +50,9 @@ struct TCompactionPolicy : public TThrRefBase {
5050
ui64 forceSizeToCompact, const TString &resourceBrokerTask,
5151
bool keepInCache,
5252
const TBackgroundPolicy &backgroundCompactionPolicy = TBackgroundPolicy());
53-
TGenerationPolicy(const NKikimrSchemeOp::TCompactionPolicy::TGenerationPolicy &policyPb);
53+
TGenerationPolicy(const NKikimrCompaction::TCompactionPolicy::TGenerationPolicy &policyPb);
5454

55-
void Serialize(NKikimrSchemeOp::TCompactionPolicy::TGenerationPolicy& policyPb) const;
55+
void Serialize(NKikimrCompaction::TCompactionPolicy::TGenerationPolicy& policyPb) const;
5656

5757
bool operator ==(const TGenerationPolicy& p) const {
5858
return SizeToCompact == p.SizeToCompact
@@ -91,16 +91,16 @@ struct TCompactionPolicy : public TThrRefBase {
9191
ui64 LogOverheadSizeToSnapshot;
9292
ui32 LogOverheadCountToSnapshot;
9393
ui32 DroppedRowsPercentToCompact;
94-
NKikimrSchemeOp::ECompactionStrategy CompactionStrategy;
95-
NKikimrSchemeOp::TCompactionPolicy::TShardPolicy ShardPolicy;
94+
NKikimrCompaction::ECompactionStrategy CompactionStrategy;
95+
NKikimrCompaction::TCompactionPolicy::TShardPolicy ShardPolicy;
9696
bool KeepEraseMarkers;
9797

9898
TVector<TGenerationPolicy> Generations;
9999

100100
TCompactionPolicy();
101-
explicit TCompactionPolicy(const NKikimrSchemeOp::TCompactionPolicy& policyPb);
101+
explicit TCompactionPolicy(const NKikimrCompaction::TCompactionPolicy& policyPb);
102102

103-
void Serialize(NKikimrSchemeOp::TCompactionPolicy& policyPb) const;
103+
void Serialize(NKikimrCompaction::TCompactionPolicy& policyPb) const;
104104

105105
bool operator ==(const TCompactionPolicy& p) const {
106106
return InMemSizeToSnapshot == p.InMemSizeToSnapshot

ydb/core/base/localdb_ut.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace NLocalDb {
77
Y_UNIT_TEST_SUITE(TLocalDbTest) {
88

99
Y_UNIT_TEST(BackupTaskNameChangedAtLoadTime) {
10-
NKikimrSchemeOp::TCompactionPolicy policyPb;
10+
NKikimrCompaction::TCompactionPolicy policyPb;
1111
CreateDefaultUserTablePolicy()->Serialize(policyPb);
1212

1313
// We expect default task name to be "scan" at the moment

ydb/core/cms/console/console__scheme.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
#include <ydb/core/scheme/scheme_types_defs.h>
66
#include <ydb/core/tablet_flat/flat_cxx_database.h>
77

8+
#include <ydb/core/protos/flat_scheme_op.pb.h>
9+
810
namespace NKikimr::NConsole {
911

1012
struct Schema : NIceDb::Schema {

ydb/core/protos/compaction.proto

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package NKikimrCompaction;
2+
option java_package = "ru.yandex.kikimr.proto";
3+
4+
enum ECompactionStrategy {
5+
CompactionStrategyUnset = 0;
6+
CompactionStrategyGenerational = 1;
7+
CompactionStrategySharded = 2; // DEPRECATED: use CompactionStrategyGenerational
8+
}
9+
10+
message TCompactionPolicy {
11+
12+
message TBackgroundPolicy {
13+
// How much (in %) of forced compaction criteria should be met to submit background task.
14+
optional uint32 Threshold = 1 [default = 101]; // no background compaction by default
15+
// Base background compaction priority value (less priority means more important task).
16+
// Value is used to compute real task priority basing on compaction criteria, time
17+
// in queue etc.
18+
optional uint32 PriorityBase = 2 [default = 100];
19+
// Submitted background task may become more prioritized over time.
20+
// New priority is computed as priority /= max(log(elapsed_seconds) * factor, 1);
21+
optional double TimeFactor = 3 [default = 1.0];
22+
optional uint32 TaskType = 4 [default = 5]; // DEPRECATED
23+
optional string ResourceBrokerTask = 5;
24+
}
25+
26+
message TGenerationPolicy {
27+
optional uint32 GenerationId = 1;
28+
optional uint64 SizeToCompact = 2;
29+
optional uint32 CountToCompact = 3;
30+
optional uint32 ForceCountToCompact = 4; // OR one of force limits happend
31+
optional uint64 ForceSizeToCompact = 5;
32+
optional uint32 CompactionBrokerQueue = 6; // DEPRECATED
33+
optional bool KeepInCache = 7;
34+
optional TBackgroundPolicy BackgroundCompactionPolicy = 8;
35+
optional string ResourceBrokerTask = 9;
36+
optional uint32 ExtraCompactionPercent = 10;
37+
optional uint64 ExtraCompactionMinSize = 11;
38+
optional uint32 ExtraCompactionExpPercent = 12;
39+
optional uint64 ExtraCompactionExpMaxSize = 13;
40+
optional uint64 UpliftPartSize = 14;
41+
}
42+
43+
//NOTE: default values must be in sync with ydb/core/base/localdb.cpp, TShardPolicy
44+
message TShardPolicy {
45+
// Adjacent shards smaller than this will be merged
46+
optional uint64 MinShardSize = 1 [default = 33554432];
47+
48+
// Shards bigger than this will split in two or more pieces
49+
optional uint64 MaxShardSize = 2 [default = 134217728];
50+
51+
// Slices smaller than this will get prioritized compaction
52+
optional uint64 MinSliceSize = 3 [default = 2097152];
53+
54+
// Level will be compacted when there are more than this number of slices
55+
optional uint32 MaxSlicesPerLevel = 4 [default = 256];
56+
57+
// Shard will be compacted when there are more than this number of levels
58+
optional uint32 MaxTotalLevels = 5 [default = 16];
59+
60+
// Shard will avoid compacting less than this number of levels
61+
optional uint32 MinLevelsToCompact = 6 [default = 2];
62+
63+
// Level will be compacted when it has X% of its data in upper levels
64+
optional uint32 NewDataPercentToCompact = 7 [default = 100];
65+
66+
// Level will be compacted when it has X% of its rows in upper levels
67+
optional uint32 NewRowsPercentToCompact = 8 [default = 0];
68+
69+
// Resource broker task type for compactions
70+
optional string ResourceBrokerTask = 9 [default = "compaction_gen1"];
71+
72+
// Base priority for compaction tasks
73+
optional uint32 TaskPriorityBase = 10 [default = 1000];
74+
75+
// Task priority will be increased for every N levels over the minimum
76+
optional uint32 TaskPriorityLevelsBoost = 11 [default = 1];
77+
78+
// Task priority will be decreased for every N bytes of input
79+
optional uint64 TaskPrioritySizePenalty = 12 [default = 4194304];
80+
81+
// Part data may be reused, unless it would leave this much garbage
82+
optional uint32 MaxGarbagePercentToReuse = 13 [default = 20];
83+
84+
// Minimum slice that that may be reused
85+
optional uint64 MinSliceSizeToReuse = 14 [default = 524288];
86+
}
87+
88+
optional uint64 InMemSizeToSnapshot = 1;
89+
optional uint32 InMemStepsToSnapshot = 2; // snapshot inmem state when size AND steps from last snapshot passed
90+
optional uint32 InMemForceStepsToSnapshot = 3; // OR steps passed
91+
optional uint64 InMemForceSizeToSnapshot = 4; // OR size reached
92+
optional uint32 InMemCompactionBrokerQueue = 5 [default = 0]; // DEPRECATED
93+
optional uint64 ReadAheadHiThreshold = 6 [default = 67108864];
94+
optional uint64 ReadAheadLoThreshold = 7 [default = 16777216];
95+
optional uint32 MinDataPageSize = 8 [default = 7168]; // 7KB is smallest optimal for 512 byte sectors
96+
optional uint32 SnapBrokerQueue = 9 [default = 0]; // DEPRECATED
97+
optional uint32 BackupBrokerQueue = 11 [default = 1]; // DEPRECATED
98+
optional uint32 DefaultTaskPriority = 12 [default = 5];
99+
optional TBackgroundPolicy BackgroundSnapshotPolicy = 13;
100+
optional string InMemResourceBrokerTask = 14;
101+
optional string SnapshotResourceBrokerTask = 15;
102+
optional string BackupResourceBrokerTask = 16;
103+
optional uint64 LogOverheadSizeToSnapshot = 17;
104+
optional uint32 LogOverheadCountToSnapshot = 18;
105+
optional uint32 DroppedRowsPercentToCompact = 19;
106+
optional ECompactionStrategy CompactionStrategy = 20 [default = CompactionStrategyUnset];
107+
optional TShardPolicy ShardPolicy = 21;
108+
optional bool KeepEraseMarkers = 22;
109+
optional uint32 MinBTreeIndexNodeSize = 23 [default = 7168];
110+
optional uint32 MinBTreeIndexNodeKeys = 24 [default = 6];
111+
112+
repeated TGenerationPolicy Generation = 10;
113+
}

ydb/core/protos/config.proto

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import "ydb/core/protos/counters_schemeshard.proto";
1515
import "ydb/core/protos/datashard_config.proto";
1616
import "ydb/core/protos/drivemodel.proto";
1717
import "ydb/core/protos/feature_flags.proto";
18+
import "ydb/core/protos/compaction.proto";
1819
import "ydb/core/protos/flat_scheme_op.proto";
1920
import "ydb/core/protos/hive.proto";
2021
import "ydb/core/protos/http_config.proto";
@@ -230,7 +231,7 @@ message TDomainsConfig {
230231

231232
message TNamedCompactionPolicy {
232233
optional string Name = 1;
233-
optional NKikimrSchemeOp.TCompactionPolicy Policy = 2;
234+
optional NKikimrCompaction.TCompactionPolicy Policy = 2;
234235
}
235236

236237
message TSecurityConfig {
@@ -962,7 +963,7 @@ message TConfigsDispatcherConfig {
962963

963964
message TCompactionPolicy {
964965
optional string Name = 1;
965-
optional NKikimrSchemeOp.TCompactionPolicy CompactionPolicy = 2;
966+
optional NKikimrCompaction.TCompactionPolicy CompactionPolicy = 2;
966967
}
967968

968969
message TExecutionPolicy {

0 commit comments

Comments
 (0)