Skip to content

Commit 450c3a2

Browse files
authored
YQ-3334 resource pools has been added into SS (#5640)
1 parent 8cc0e51 commit 450c3a2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1740
-3
lines changed

ydb/core/protos/counters_schemeshard.proto

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,11 @@ enum ESimpleCounters {
215215

216216
COUNTER_DISK_SPACE_SOFT_QUOTA_BYTES_ON_SSD = 171 [(CounterOpts) = {Name: "DiskSpaceSoftQuotaBytesOnSsd"}];
217217
COUNTER_DISK_SPACE_SOFT_QUOTA_BYTES_ON_HDD = 172 [(CounterOpts) = {Name: "DiskSpaceSoftQuotaBytesOnHdd"}];
218+
219+
COUNTER_RESOURCE_POOL_COUNT = 173 [(CounterOpts) = {Name: "ResourcePoolCount"}];
220+
COUNTER_IN_FLIGHT_OPS_TxCreateResourcePool = 174 [(CounterOpts) = {Name: "InFlightOps/CreateResourcePool"}];
221+
COUNTER_IN_FLIGHT_OPS_TxDropResourcePool = 175 [(CounterOpts) = {Name: "InFlightOps/DropResourcePool"}];
222+
COUNTER_IN_FLIGHT_OPS_TxAlterResourcePool = 176 [(CounterOpts) = {Name: "InFlightOps/AlterResourcePool"}];
218223
}
219224

220225
enum ECumulativeCounters {
@@ -342,6 +347,10 @@ enum ECumulativeCounters {
342347
COUNTER_FINISHED_OPS_TxCreateContinuousBackup = 100 [(CounterOpts) = {Name: "FinishedOps/CreateContinuousBackup"}];
343348
COUNTER_FINISHED_OPS_TxAlterContinuousBackup = 101 [(CounterOpts) = {Name: "FinishedOps/AlterContinuousBackup"}];
344349
COUNTER_FINISHED_OPS_TxDropContinuousBackup = 102 [(CounterOpts) = {Name: "FinishedOps/DropContinuousBackup"}];
350+
351+
COUNTER_FINISHED_OPS_TxCreateResourcePool = 103 [(CounterOpts) = {Name: "FinishedOps/CreateResourcePool"}];
352+
COUNTER_FINISHED_OPS_TxDropResourcePool = 104 [(CounterOpts) = {Name: "FinishedOps/DropResourcePool"}];
353+
COUNTER_FINISHED_OPS_TxAlterResourcePool = 105 [(CounterOpts) = {Name: "FinishedOps/AlterResourcePool"}];
345354
}
346355

347356
enum EPercentileCounters {

ydb/core/protos/flat_scheme_op.proto

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1584,6 +1584,11 @@ enum EOperationType {
15841584
ESchemeOpAlterContinuousBackup = 98;
15851585
// Drop
15861586
ESchemeOpDropContinuousBackup = 99;
1587+
1588+
// Resource Pool
1589+
ESchemeOpCreateResourcePool = 100;
1590+
ESchemeOpDropResourcePool = 101;
1591+
ESchemeOpAlterResourcePool = 102;
15871592
}
15881593

15891594
message TApplyIf {
@@ -1764,6 +1769,8 @@ message TModifyScheme {
17641769
// Reads/Updates can be executed without flag.
17651770
// Object is in temporary zone if there is a directory with nonempty OwnerActorId on it's path.
17661771
optional bool AllowCreateInTempDir = 71 [default = false];
1772+
1773+
optional TResourcePoolDescription CreateResourcePool = 72;
17671774
}
17681775

17691776
message TCopySequence {
@@ -1827,6 +1834,7 @@ enum EPathType {
18271834
EPathTypeExternalTable = 18;
18281835
EPathTypeExternalDataSource = 19;
18291836
EPathTypeView = 20;
1837+
EPathTypeResourcePool = 21;
18301838
}
18311839

18321840
enum EPathSubType {
@@ -1880,6 +1888,7 @@ message TPathVersion {
18801888
optional uint64 ExternalTableVersion = 27;
18811889
optional uint64 ExternalDataSourceVersion = 28;
18821890
optional uint64 ViewVersion = 29;
1891+
optional uint64 ResourcePoolVersion = 30;
18831892
}
18841893

18851894
// Describes single path
@@ -1968,6 +1977,7 @@ message TPathDescription {
19681977
optional TExternalTableDescription ExternalTableDescription = 27;
19691978
optional TExternalDataSourceDescription ExternalDataSourceDescription = 28;
19701979
optional TViewDescription ViewDescription = 29;
1980+
optional TResourcePoolDescription ResourcePoolDescription = 30;
19711981
}
19721982

19731983
// For persisting AlterTable Tx description in Schemeshard internal DB
@@ -2096,3 +2106,14 @@ message TViewDescription {
20962106
optional uint64 Version = 3;
20972107
optional string QueryText = 4;
20982108
}
2109+
2110+
message TResourcePoolProperties {
2111+
map<string, string> Properties = 1;
2112+
}
2113+
2114+
message TResourcePoolDescription {
2115+
optional string Name = 1;
2116+
optional NKikimrProto.TPathID PathId = 2;
2117+
optional uint64 Version = 3;
2118+
optional TResourcePoolProperties Properties = 4;
2119+
}

ydb/core/tx/scheme_board/cache.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,7 @@ class TSchemeCache: public TMonitorableActor<TSchemeCache> {
760760
BlockStoreVolumeInfo.Drop();
761761
FileStoreInfo.Drop();
762762
ViewInfo.Drop();
763+
ResourcePoolInfo.Drop();
763764
}
764765

765766
void FillTableInfo(const NKikimrSchemeOp::TPathDescription& pathDesc) {
@@ -1204,6 +1205,7 @@ class TSchemeCache: public TMonitorableActor<TSchemeCache> {
12041205
DESCRIPTION_PART(BlockStoreVolumeInfo);
12051206
DESCRIPTION_PART(FileStoreInfo);
12061207
DESCRIPTION_PART(ViewInfo);
1208+
DESCRIPTION_PART(ResourcePoolInfo);
12071209

12081210
#undef DESCRIPTION_PART
12091211

@@ -1529,6 +1531,10 @@ class TSchemeCache: public TMonitorableActor<TSchemeCache> {
15291531
Kind = TNavigate::KindView;
15301532
FillInfo(Kind, ViewInfo, std::move(*pathDesc.MutableViewDescription()));
15311533
break;
1534+
case NKikimrSchemeOp::EPathTypeResourcePool:
1535+
Kind = TNavigate::KindResourcePool;
1536+
FillInfo(Kind, ResourcePoolInfo, std::move(*pathDesc.MutableResourcePoolDescription()));
1537+
break;
15321538
case NKikimrSchemeOp::EPathTypeInvalid:
15331539
Y_DEBUG_ABORT("Invalid path type");
15341540
break;
@@ -1599,6 +1605,9 @@ class TSchemeCache: public TMonitorableActor<TSchemeCache> {
15991605
case NKikimrSchemeOp::EPathTypeView:
16001606
ListNodeEntry->Children.emplace_back(name, pathId, TNavigate::KindView);
16011607
break;
1608+
case NKikimrSchemeOp::EPathTypeResourcePool:
1609+
ListNodeEntry->Children.emplace_back(name, pathId, TNavigate::KindResourcePool);
1610+
break;
16021611
case NKikimrSchemeOp::EPathTypeTableIndex:
16031612
case NKikimrSchemeOp::EPathTypeInvalid:
16041613
Y_DEBUG_ABORT("Invalid path type");
@@ -1819,6 +1828,7 @@ class TSchemeCache: public TMonitorableActor<TSchemeCache> {
18191828
entry.BlockStoreVolumeInfo = BlockStoreVolumeInfo;
18201829
entry.FileStoreInfo = FileStoreInfo;
18211830
entry.ViewInfo = ViewInfo;
1831+
entry.ResourcePoolInfo = ResourcePoolInfo;
18221832
}
18231833

18241834
bool CheckColumns(TResolveContext* context, TResolve::TEntry& entry,
@@ -2114,6 +2124,9 @@ class TSchemeCache: public TMonitorableActor<TSchemeCache> {
21142124
// View specific
21152125
TIntrusivePtr<TNavigate::TViewInfo> ViewInfo;
21162126

2127+
// ResourcePool specific
2128+
TIntrusivePtr<TNavigate::TResourcePoolInfo> ResourcePoolInfo;
2129+
21172130
}; // TCacheItem
21182131

21192132
struct TMerger {

ydb/core/tx/scheme_cache/scheme_cache.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ struct TSchemeCacheNavigate {
143143
KindBlockStoreVolume = 19,
144144
KindFileStore = 20,
145145
KindView = 21,
146+
KindResourcePool = 22,
146147
};
147148

148149
struct TListNodeEntry : public TAtomicRefCount<TListNodeEntry> {
@@ -250,6 +251,11 @@ struct TSchemeCacheNavigate {
250251
NKikimrSchemeOp::TViewDescription Description;
251252
};
252253

254+
struct TResourcePoolInfo : public TAtomicRefCount<TResourcePoolInfo> {
255+
EKind Kind = KindUnknown;
256+
NKikimrSchemeOp::TResourcePoolDescription Description;
257+
};
258+
253259
struct TEntry {
254260
enum class ERequestType : ui8 {
255261
ByPath,
@@ -301,6 +307,7 @@ struct TSchemeCacheNavigate {
301307
TIntrusiveConstPtr<TBlockStoreVolumeInfo> BlockStoreVolumeInfo;
302308
TIntrusiveConstPtr<TFileStoreInfo> FileStoreInfo;
303309
TIntrusiveConstPtr<TViewInfo> ViewInfo;
310+
TIntrusiveConstPtr<TResourcePoolInfo> ResourcePoolInfo;
304311

305312
TString ToString() const;
306313
TString ToString(const NScheme::TTypeRegistry& typeRegistry) const;

ydb/core/tx/schemeshard/schemeshard__init.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1913,6 +1913,29 @@ struct TSchemeShard::TTxInit : public TTransactionBase<TSchemeShard> {
19131913
}
19141914
}
19151915

1916+
// Resorce Pool
1917+
{
1918+
auto rowset = db.Table<Schema::ResourcePool>().Range().Select();
1919+
if (!rowset.IsReady()) {
1920+
return false;
1921+
}
1922+
1923+
while (!rowset.EndOfSet()) {
1924+
TOwnerId ownerPathId = rowset.GetValue<Schema::ResourcePool::OwnerPathId>();
1925+
TLocalPathId localPathId = rowset.GetValue<Schema::ResourcePool::LocalPathId>();
1926+
TPathId pathId(ownerPathId, localPathId);
1927+
1928+
auto& resourcePool = Self->ResourcePools[pathId] = new TResourcePoolInfo();
1929+
resourcePool->AlterVersion = rowset.GetValue<Schema::ResourcePool::AlterVersion>();
1930+
Y_PROTOBUF_SUPPRESS_NODISCARD resourcePool->Properties.ParseFromString(rowset.GetValue<Schema::ResourcePool::Properties>());
1931+
Self->IncrementPathDbRefCount(pathId);
1932+
1933+
if (!rowset.Next()) {
1934+
return false;
1935+
}
1936+
}
1937+
}
1938+
19161939
// Read table columns
19171940
{
19181941
TColumnRows columnRows;

ydb/core/tx/schemeshard/schemeshard__operation.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -720,6 +720,9 @@ TOperation::TSplitTransactionsResult TOperation::SplitIntoTransactions(const TTx
720720
case NKikimrSchemeOp::EOperationType::ESchemeOpCreateView:
721721
targetName = tx.GetCreateView().GetName();
722722
break;
723+
case NKikimrSchemeOp::EOperationType::ESchemeOpCreateResourcePool:
724+
targetName = tx.GetCreateResourcePool().GetName();
725+
break;
723726
default:
724727
result.Transactions.push_back(tx);
725728
return result;
@@ -810,6 +813,9 @@ TOperation::TSplitTransactionsResult TOperation::SplitIntoTransactions(const TTx
810813
case NKikimrSchemeOp::EOperationType::ESchemeOpCreateView:
811814
create.MutableCreateView()->SetName(name);
812815
break;
816+
case NKikimrSchemeOp::EOperationType::ESchemeOpCreateResourcePool:
817+
create.MutableCreateResourcePool()->SetName(name);
818+
break;
813819
default:
814820
Y_UNREACHABLE();
815821
}
@@ -1081,6 +1087,14 @@ ISubOperation::TPtr TOperation::RestorePart(TTxState::ETxType txType, TTxState::
10811087
case TTxState::ETxType::TxDropContinuousBackup:
10821088
Y_ABORT("TODO: implement");
10831089

1090+
// ResourcePool
1091+
case TTxState::ETxType::TxCreateResourcePool:
1092+
return CreateNewResourcePool(NextPartId(), txState);
1093+
case TTxState::ETxType::TxDropResourcePool:
1094+
return CreateDropResourcePool(NextPartId(), txState);
1095+
case TTxState::ETxType::TxAlterResourcePool:
1096+
return CreateAlterResourcePool(NextPartId(), txState);
1097+
10841098
case TTxState::ETxType::TxInvalid:
10851099
Y_UNREACHABLE();
10861100
}
@@ -1313,6 +1327,14 @@ ISubOperation::TPtr TOperation::ConstructPart(NKikimrSchemeOp::EOperationType op
13131327
case NKikimrSchemeOp::EOperationType::ESchemeOpDropContinuousBackup:
13141328
Y_ABORT("multipart operations are handled before, also they require transaction details");
13151329

1330+
// ResourcePool
1331+
case NKikimrSchemeOp::EOperationType::ESchemeOpCreateResourcePool:
1332+
return CreateNewResourcePool(NextPartId(), tx);
1333+
case NKikimrSchemeOp::EOperationType::ESchemeOpDropResourcePool:
1334+
return CreateDropResourcePool(NextPartId(), tx);
1335+
case NKikimrSchemeOp::EOperationType::ESchemeOpAlterResourcePool:
1336+
return CreateAlterResourcePool(NextPartId(), tx);
1337+
13161338
}
13171339

13181340
Y_UNREACHABLE();

0 commit comments

Comments
 (0)