Skip to content

Commit b3b06a5

Browse files
Merge df4f566 into 152f011
2 parents 152f011 + df4f566 commit b3b06a5

File tree

14 files changed

+88
-71
lines changed

14 files changed

+88
-71
lines changed

ydb/core/tx/columnshard/blobs_action/abstract/storage.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ class IBlobsStorageOperator {
7777
return DoLoad(dbBlobs);
7878
}
7979
void OnTieringModified(const std::shared_ptr<NColumnShard::ITiersManager>& tiers) {
80+
AFL_VERIFY(tiers);
8081
return DoOnTieringModified(tiers);
8182
}
8283

ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ std::shared_ptr<NKikimr::NOlap::IBlobsStorageOperator> IStoragesManager::GetOper
3333
}
3434

3535
void IStoragesManager::OnTieringModified(const std::shared_ptr<NColumnShard::ITiersManager>& tiers) {
36+
AFL_VERIFY(tiers);
3637
for (auto&& i : tiers->GetManagers()) {
3738
GetOperatorGuarantee(i.first)->OnTieringModified(tiers);
3839
}

ydb/core/tx/columnshard/columnshard.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ void TColumnShard::SwitchToWork(const TActorContext& ctx) {
4141
for (auto&& i : TablesManager.GetTables()) {
4242
ActivateTiering(i.first, i.second.GetTieringUsage(), true);
4343
}
44-
OnTieringModified();
4544

4645
Become(&TThis::StateWork);
4746
SignalTabletActive(ctx);

ydb/core/tx/columnshard/columnshard__init.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ bool TTxInitSchema::Execute(TTransactionContext& txc, const TActorContext&) {
381381
}
382382

383383
void TTxInitSchema::Complete(const TActorContext& ctx) {
384-
LOG_S_DEBUG("TxInitSchema.Complete at tablet " << Self->TabletID();)
384+
LOG_S_DEBUG("TxInitSchema.Complete at tablet " << Self->TabletID(););
385385
Self->Execute(new TTxUpdateSchema(Self), ctx);
386386
}
387387

ydb/core/tx/columnshard/columnshard_impl.cpp

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -401,21 +401,28 @@ void TColumnShard::RunEnsureTable(const NKikimrTxColumnShard::TCreateTable& tabl
401401
*tableVerProto.MutableSchema() = tableProto.GetSchema();
402402
}
403403

404-
TTableInfo table(pathId);
405-
if (tableProto.HasTtlSettings()) {
406-
const auto& ttlSettings = tableProto.GetTtlSettings();
407-
*tableVerProto.MutableTtlSettings() = ttlSettings;
408-
if (ttlSettings.HasUseTiering()) {
409-
table.SetTieringUsage(ttlSettings.GetUseTiering());
410-
ActivateTiering(pathId, table.GetTieringUsage());
404+
{
405+
bool needTieringActivation = false;
406+
TTableInfo table(pathId);
407+
if (tableProto.HasTtlSettings()) {
408+
const auto& ttlSettings = tableProto.GetTtlSettings();
409+
*tableVerProto.MutableTtlSettings() = ttlSettings;
410+
if (ttlSettings.HasUseTiering()) {
411+
table.SetTieringUsage(ttlSettings.GetUseTiering());
412+
needTieringActivation = true;
413+
}
414+
}
415+
const TString tieringName = table.GetTieringUsage();
416+
TablesManager.RegisterTable(std::move(table), db);
417+
if (needTieringActivation) {
418+
ActivateTiering(pathId, tieringName);
411419
}
412420
}
413421

414422
tableVerProto.SetSchemaPresetVersionAdj(tableProto.GetSchemaPresetVersionAdj());
415423
tableVerProto.SetTtlSettingsPresetVersionAdj(tableProto.GetTtlSettingsPresetVersionAdj());
416424

417-
TablesManager.RegisterTable(std::move(table), db);
418-
TablesManager.AddTableVersion(pathId, version, tableVerProto, db);
425+
TablesManager.AddTableVersion(pathId, version, tableVerProto, db, Tiers);
419426

420427
SetCounter(COUNTER_TABLES, TablesManager.GetTables().size());
421428
SetCounter(COUNTER_TABLE_PRESETS, TablesManager.GetSchemaPresets().size());
@@ -452,7 +459,7 @@ void TColumnShard::RunAlterTable(const NKikimrTxColumnShard::TAlterTable& alterP
452459
Schema::SaveTableInfo(db, pathId, tieringUsage);
453460

454461
tableVerProto.SetSchemaPresetVersionAdj(alterProto.GetSchemaPresetVersionAdj());
455-
TablesManager.AddTableVersion(pathId, version, tableVerProto, db);
462+
TablesManager.AddTableVersion(pathId, version, tableVerProto, db, Tiers);
456463
}
457464

458465
void TColumnShard::RunDropTable(const NKikimrTxColumnShard::TDropTable& dropProto, const NOlap::TSnapshot& version,
@@ -1030,16 +1037,17 @@ void TColumnShard::Handle(NMetadata::NProvider::TEvRefreshSubscriberData::TPtr&
10301037
}
10311038

10321039
void TColumnShard::ActivateTiering(const ui64 pathId, const TString& useTiering, const bool onTabletInit) {
1033-
Y_ABORT_UNLESS(!!Tiers);
1034-
if (!!Tiers) {
1035-
if (useTiering) {
1036-
Tiers->EnablePathId(pathId, useTiering);
1037-
} else {
1038-
Tiers->DisablePathId(pathId);
1039-
}
1040+
AFL_VERIFY(Tiers);
1041+
if (useTiering) {
1042+
AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("event", "activate_tiering")("path_id", pathId)("tiering", useTiering);
1043+
}
1044+
if (useTiering) {
1045+
Tiers->EnablePathId(pathId, useTiering);
1046+
} else {
1047+
Tiers->DisablePathId(pathId);
10401048
}
10411049
if (!onTabletInit) {
1042-
OnTieringModified();
1050+
OnTieringModified(pathId);
10431051
}
10441052
}
10451053

@@ -1053,11 +1061,13 @@ void TColumnShard::Enqueue(STFUNC_SIG) {
10531061
}
10541062
}
10551063

1056-
void TColumnShard::OnTieringModified() {
1064+
void TColumnShard::OnTieringModified(const std::optional<ui64> pathId) {
10571065
AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnTieringModified");
1058-
StoragesManager->OnTieringModified(Tiers);
1059-
if (TablesManager.HasPrimaryIndex()) {
1060-
TablesManager.MutablePrimaryIndex().OnTieringModified(Tiers, TablesManager.GetTtl());
1066+
if (Tiers->IsReady()) {
1067+
StoragesManager->OnTieringModified(Tiers);
1068+
if (TablesManager.HasPrimaryIndex()) {
1069+
TablesManager.MutablePrimaryIndex().OnTieringModified(Tiers, TablesManager.GetTtl(), pathId);
1070+
}
10611071
}
10621072
}
10631073

ydb/core/tx/columnshard/columnshard_impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ class TColumnShard
256256
}
257257

258258
void ActivateTiering(const ui64 pathId, const TString& useTiering, const bool onTabletInit = false);
259-
void OnTieringModified();
259+
void OnTieringModified(const std::optional<ui64> pathId = {});
260260
public:
261261
enum class EOverloadStatus {
262262
ShardTxInFly /* "shard_tx" */,

ydb/core/tx/columnshard/engines/column_engine.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ class IColumnEngine {
383383
virtual const TColumnEngineStats& GetTotalStats() = 0;
384384
virtual ui64 MemoryUsage() const { return 0; }
385385
virtual TSnapshot LastUpdate() const { return TSnapshot::Zero(); }
386-
virtual void OnTieringModified(std::shared_ptr<NColumnShard::TTiersManager> manager, const NColumnShard::TTtl& ttl) = 0;
386+
virtual void OnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& manager, const NColumnShard::TTtl& ttl, const std::optional<ui64> pathId) = 0;
387387
};
388388

389389
}

ydb/core/tx/columnshard/engines/column_engine_logs.cpp

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -580,42 +580,47 @@ std::shared_ptr<TSelectInfo> TColumnEngineForLogs::Select(ui64 pathId, TSnapshot
580580
return out;
581581
}
582582

583-
void TColumnEngineForLogs::OnTieringModified(std::shared_ptr<NColumnShard::TTiersManager> manager, const NColumnShard::TTtl& ttl) {
584-
AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnTieringModified");
585-
std::optional<THashMap<ui64, TTiering>> tierings;
583+
void TColumnEngineForLogs::OnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& manager, const NColumnShard::TTtl& ttl, const std::optional<ui64> pathId) {
584+
if (!TiersInitialized) {
585+
for (auto&& i : Tables) {
586+
i.second->StartActualizationIndex();
587+
}
588+
}
589+
590+
TiersInitialized = true;
591+
AFL_VERIFY(manager);
592+
THashMap<ui64, TTiering> tierings;
586593
if (manager) {
587594
tierings = manager->GetTiering();
588595
}
596+
ttl.AddTtls(tierings);
597+
589598
AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "OnTieringModified")
590-
("new_count_tierings", tierings ? ::ToString(tierings->size()) : TString("undefined"))
599+
("new_count_tierings", tierings.size())
591600
("new_count_ttls", ttl.PathsCount());
592-
EvictionsController.RefreshTierings(std::move(tierings), ttl);
593-
601+
if (pathId) {
602+
auto itGranule = Tables.find(*pathId);
603+
AFL_VERIFY(itGranule != Tables.end());
604+
auto it = tierings.find(*pathId);
605+
if (it == tierings.end()) {
606+
itGranule->second->RefreshTiering({});
607+
} else {
608+
itGranule->second->RefreshTiering(it->second);
609+
}
610+
} else {
611+
for (auto&& g : Tables) {
612+
auto it = tierings.find(g.first);
613+
if (it == tierings.end()) {
614+
g.second->RefreshTiering({});
615+
} else {
616+
g.second->RefreshTiering(it->second);
617+
}
618+
}
619+
}
594620
}
595621

596622
void TColumnEngineForLogs::DoRegisterTable(const ui64 pathId) {
597623
AFL_VERIFY(Tables.emplace(pathId, std::make_shared<TGranuleMeta>(pathId, GranulesStorage, SignalCounters.RegisterGranuleDataCounters(), VersionedIndex)).second);
598624
}
599625

600-
TColumnEngineForLogs::TTieringProcessContext::TTieringProcessContext(const ui64 memoryUsageLimit,
601-
std::shared_ptr<TTTLColumnEngineChanges> changes, const std::shared_ptr<NDataLocks::TManager>& dataLocksManager, const std::shared_ptr<TColumnEngineChanges::IMemoryPredictor>& memoryPredictor)
602-
: MemoryUsageLimit(memoryUsageLimit)
603-
, MemoryPredictor(memoryPredictor)
604-
, Now(TlsActivationContext ? AppData()->TimeProvider->Now() : TInstant::Now())
605-
, Changes(changes)
606-
, DataLocksManager(dataLocksManager)
607-
{
608-
609-
}
610-
611-
void TEvictionsController::RefreshTierings(std::optional<THashMap<ui64, TTiering>>&& tierings, const NColumnShard::TTtl& ttl) {
612-
if (tierings) {
613-
OriginalTierings = std::move(*tierings);
614-
}
615-
auto copy = OriginalTierings;
616-
ttl.AddTtls(copy);
617-
NextCheckInstantForTierings = BuildNextInstantCheckers(std::move(copy));
618-
AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "RefreshTierings")("count", NextCheckInstantForTierings.size());
619-
}
620-
621626
} // namespace NKikimr::NOlap

ydb/core/tx/columnshard/engines/column_engine_logs.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,11 @@ class TColumnEngineForLogs : public IColumnEngine {
148148

149149
TColumnEngineForLogs(ui64 tabletId, const TCompactionLimits& limits, const std::shared_ptr<IStoragesManager>& storagesManager);
150150

151-
virtual void OnTieringModified(std::shared_ptr<NColumnShard::TTiersManager> manager, const NColumnShard::TTtl& ttl) override;
151+
virtual void OnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& manager, const NColumnShard::TTtl& ttl, const std::optional<ui64> pathId) override;
152+
153+
virtual std::shared_ptr<TVersionedIndex> CopyVersionedIndexPtr() const override {
154+
return std::make_shared<TVersionedIndex>(VersionedIndex);
155+
}
152156

153157
const TVersionedIndex& GetVersionedIndex() const override {
154158
return VersionedIndex;

ydb/core/tx/columnshard/engines/storage/granule.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,12 @@ class TGranuleMeta: TNonCopyable {
177177
void OnAdditiveSummaryChange() const;
178178
YDB_READONLY(TMonotonic, LastCompactionInstant, TMonotonic::Zero());
179179
public:
180+
void RefreshTiering(const std::optional<TTiering>& /*tiering*/) {
181+
}
182+
183+
void StartActualizationIndex() {
184+
}
185+
180186
NJson::TJsonValue OptimizerSerializeToJson() const {
181187
return OptimizerPlanner->SerializeToJsonVisual();
182188
}

ydb/core/tx/columnshard/tables_manager.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,6 @@ void TTablesManager::DropTable(const ui64 pathId, const NOlap::TSnapshot& versio
214214
table.SetDropVersion(version);
215215
PathsToDrop.insert(pathId);
216216
Ttl.DropPathTtl(pathId);
217-
if (PrimaryIndex) {
218-
PrimaryIndex->OnTieringModified(nullptr, Ttl);
219-
}
220217
Schema::SaveTableDropVersion(db, pathId, version.GetPlanStep(), version.GetTxId());
221218
}
222219

@@ -269,7 +266,7 @@ void TTablesManager::AddSchemaVersion(const ui32 presetId, const NOlap::TSnapsho
269266
}
270267
}
271268

272-
void TTablesManager::AddTableVersion(const ui64 pathId, const NOlap::TSnapshot& version, const TTableInfo::TTableVersionInfo& versionInfo, NIceDb::TNiceDb& db) {
269+
void TTablesManager::AddTableVersion(const ui64 pathId, const NOlap::TSnapshot& version, const TTableInfo::TTableVersionInfo& versionInfo, NIceDb::TNiceDb& db, std::shared_ptr<TTiersManager>& manager) {
273270
auto it = Tables.find(pathId);
274271
AFL_VERIFY(it != Tables.end());
275272
auto& table = it->second;
@@ -296,7 +293,7 @@ void TTablesManager::AddTableVersion(const ui64 pathId, const NOlap::TSnapshot&
296293
Ttl.DropPathTtl(pathId);
297294
}
298295
if (PrimaryIndex) {
299-
PrimaryIndex->OnTieringModified(nullptr, Ttl);
296+
PrimaryIndex->OnTieringModified(manager, Ttl, pathId);
300297
}
301298
}
302299
Schema::SaveTableVersionInfo(db, pathId, version, versionInfo);
@@ -318,7 +315,6 @@ void TTablesManager::IndexSchemaVersion(const NOlap::TSnapshot& snapshot, const
318315
PrimaryIndex->RegisterTable(i.first);
319316
}
320317
}
321-
PrimaryIndex->OnTieringModified(nullptr, Ttl);
322318
}
323319

324320
TTablesManager::TTablesManager(const std::shared_ptr<NOlap::IStoragesManager>& storagesManager, const ui64 tabletId)

ydb/core/tx/columnshard/tables_manager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ class TTablesManager {
232232
bool RegisterSchemaPreset(const TSchemaPreset& schemaPreset, NIceDb::TNiceDb& db);
233233

234234
void AddSchemaVersion(const ui32 presetId, const NOlap::TSnapshot& version, const NKikimrSchemeOp::TColumnTableSchema& schema, NIceDb::TNiceDb& db);
235-
void AddTableVersion(const ui64 pathId, const NOlap::TSnapshot& version, const TTableInfo::TTableVersionInfo& versionInfo, NIceDb::TNiceDb& db);
235+
void AddTableVersion(const ui64 pathId, const NOlap::TSnapshot& version, const TTableInfo::TTableVersionInfo& versionInfo, NIceDb::TNiceDb& db, std::shared_ptr<TTiersManager>& manager);
236236
bool FillMonitoringReport(NTabletFlatExecutor::TTransactionContext& txc, NJson::TJsonValue& json);
237237
private:
238238
void IndexSchemaVersion(const NOlap::TSnapshot& version, const NKikimrSchemeOp::TColumnTableSchema& schema);

ydb/core/tx/tiering/manager.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,15 +194,14 @@ NMetadata::NFetcher::ISnapshotsFetcher::TPtr TTiersManager::GetExternalDataManip
194194

195195
THashMap<ui64, NKikimr::NOlap::TTiering> TTiersManager::GetTiering() const {
196196
THashMap<ui64, NKikimr::NOlap::TTiering> result;
197-
if (!IsReady()) {
198-
return result;
199-
}
197+
AFL_VERIFY(IsReady());
200198
auto snapshotPtr = std::dynamic_pointer_cast<NTiers::TConfigsSnapshot>(Snapshot);
201199
Y_ABORT_UNLESS(snapshotPtr);
202200
auto& tierConfigs = snapshotPtr->GetTierConfigs();
203201
for (auto&& i : PathIdTiering) {
204202
auto* tiering = snapshotPtr->GetTieringById(i.second);
205203
if (tiering) {
204+
AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("path_id", i.first)("tiering_name", i.second)("event", "activation");
206205
result.emplace(i.first, tiering->BuildOlapTiers());
207206
for (auto& [pathId, pathTiering] : result) {
208207
for (auto& [name, tier] : pathTiering.GetTierByName()) {
@@ -212,6 +211,8 @@ THashMap<ui64, NKikimr::NOlap::TTiering> TTiersManager::GetTiering() const {
212211
}
213212
}
214213
}
214+
} else {
215+
AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("path_id", i.first)("tiering_name", i.second)("event", "not_found");
215216
}
216217
}
217218
return result;

ydb/core/tx/tiering/manager.h

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,12 @@ class TTiersManager: public ITiersManager {
8585
TTiersManager& Start(std::shared_ptr<TTiersManager> ownerPtr);
8686
TTiersManager& Stop(const bool needStopActor);
8787
virtual const std::map<TString, NTiers::TManager>& GetManagers() const override {
88+
AFL_VERIFY(IsReady());
8889
return Managers;
8990
}
9091
virtual const NTiers::TManager* GetManagerOptional(const TString& tierId) const override;
9192
NMetadata::NFetcher::ISnapshotsFetcher::TPtr GetExternalDataManipulation() const;
9293

93-
TManagers::const_iterator begin() const {
94-
return Managers.begin();
95-
}
96-
97-
TManagers::const_iterator end() const {
98-
return Managers.end();
99-
}
10094
};
10195

10296
}

0 commit comments

Comments
 (0)