11#pragma once
22
33#include < ydb/core/tablet_flat/tablet_flat_executor.h>
4- #include < ydb/library/accessor/accessor.h>
5-
64#include < ydb/core/tx/columnshard/blobs_action/abstract/storages_manager.h>
75#include < ydb/core/tx/columnshard/resource_subscriber/task.h>
6+
7+ #include < ydb/library/accessor/accessor.h>
88#include < ydb/library/conclusion/result.h>
9+
910#include < library/cpp/object_factory/object_factory.h>
1011
1112namespace NKikimr ::NIceDb {
12- class TNiceDb ;
13+ class TNiceDb ;
1314}
1415
1516namespace NKikimr ::NOlap {
@@ -21,6 +22,7 @@ class TNormalizerCounters: public NColumnShard::TCommonCountersOwner {
2122 NMonitoring::TDynamicCounters::TCounterPtr StartedCount;
2223 NMonitoring::TDynamicCounters::TCounterPtr FinishedCount;
2324 NMonitoring::TDynamicCounters::TCounterPtr FailedCount;
25+
2426public:
2527 TNormalizerCounters (const TString& normalizerName)
2628 : TBase(" Normalizer" ) {
@@ -49,7 +51,7 @@ class TNormalizerCounters: public NColumnShard::TCommonCountersOwner {
4951 }
5052};
5153
52- enum class ENormalizerSequentialId : ui32 {
54+ enum class ENormalizerSequentialId : ui32 {
5355 Granules = 1 ,
5456 Chunks,
5557 DeprecatedPortionsCleaner,
@@ -74,27 +76,29 @@ class TNormalizationContext {
7476 YDB_ACCESSOR_DEF (TActorId, ResourceSubscribeActor);
7577 YDB_ACCESSOR_DEF (TActorId, ShardActor);
7678 std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TResourcesGuard> ResourcesGuard;
79+
7780public:
7881 void SetResourcesGuard (std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TResourcesGuard> rg) {
7982 ResourcesGuard = rg;
8083 }
8184};
8285
83-
8486class TNormalizationController ;
8587
8688class INormalizerTask {
8789public:
8890 using TPtr = std::shared_ptr<INormalizerTask>;
89- virtual ~INormalizerTask () {}
91+ virtual ~INormalizerTask () {
92+ }
9093
9194 virtual void Start (const TNormalizationController& controller, const TNormalizationContext& nCtx) = 0;
9295};
9396
9497class INormalizerChanges {
9598public:
9699 using TPtr = std::shared_ptr<INormalizerChanges>;
97- virtual ~INormalizerChanges () {}
100+ virtual ~INormalizerChanges () {
101+ }
98102
99103 virtual bool ApplyOnExecute (NTabletFlatExecutor::TTransactionContext& txc, const TNormalizationController& normalizationContext) const = 0;
100104 virtual void ApplyOnComplete (const TNormalizationController& normalizationContext) const {
@@ -106,6 +110,7 @@ class INormalizerChanges {
106110
107111class TTrivialNormalizerTask : public INormalizerTask {
108112 INormalizerChanges::TPtr Changes;
113+
109114public:
110115 TTrivialNormalizerTask (const INormalizerChanges::TPtr& changes)
111116 : Changes(changes) {
@@ -118,10 +123,24 @@ class TTrivialNormalizerTask: public INormalizerTask {
118123class TNormalizationController {
119124public:
120125 class TInitContext {
126+ private:
121127 TIntrusiveConstPtr<TTabletStorageInfo> StorageInfo;
128+ const ui64 TabletId;
129+ const NActors::TActorId TabletActorId;
130+
122131 public:
123- TInitContext (TTabletStorageInfo* info)
124- : StorageInfo(info) {
132+ TInitContext (TTabletStorageInfo* info, const ui64 tabletId, const NActors::TActorId& actorId)
133+ : StorageInfo(info)
134+ , TabletId(tabletId)
135+ , TabletActorId(actorId) {
136+ }
137+
138+ ui64 GetTabletId () const {
139+ return TabletId;
140+ }
141+
142+ const NActors::TActorId& GetTabletActorId () const {
143+ return TabletActorId;
125144 }
126145
127146 TIntrusiveConstPtr<TTabletStorageInfo> GetStorageInfo () const {
@@ -133,6 +152,7 @@ class TNormalizationController {
133152 private:
134153 YDB_READONLY_DEF (TString, ClassName);
135154 YDB_READONLY_DEF (TString, Description);
155+
136156 public:
137157 bool operator <(const TNormalizerFullId& item) const {
138158 if (ClassName == item.ClassName ) {
@@ -143,9 +163,7 @@ class TNormalizationController {
143163
144164 TNormalizerFullId (const TString& className, const TString& description)
145165 : ClassName(className)
146- , Description(description)
147- {
148-
166+ , Description(description) {
149167 }
150168 };
151169
@@ -154,18 +172,26 @@ class TNormalizationController {
154172 YDB_ACCESSOR (bool , IsRepair, false );
155173 YDB_ACCESSOR_DEF (TString, UniqueDescription);
156174 YDB_ACCESSOR (TString, UniqueId, TGUID::CreateTimebased().AsUuidString());
157-
175+
158176 virtual TString DoDebugString () const {
159177 return " " ;
160178 }
161179
162180 virtual std::optional<ENormalizerSequentialId> DoGetEnumSequentialId () const = 0;
163181
182+ protected:
183+ const ui64 TabletId;
184+ const NActors::TActorId TabletActorId;
185+
164186 public:
165187 using TPtr = std::shared_ptr<INormalizerComponent>;
166188 using TFactory = NObjectFactory::TParametrizedObjectFactory<INormalizerComponent, TString, TInitContext>;
167189
168- virtual ~INormalizerComponent () {}
190+ virtual ~INormalizerComponent () = default ;
191+ INormalizerComponent (const TInitContext& context)
192+ : TabletId(context.GetTabletId())
193+ , TabletActorId(context.GetTabletActorId()) {
194+ }
169195
170196 TNormalizerFullId GetNormalizerFullId () const {
171197 return TNormalizerFullId (GetClassName (), UniqueDescription);
@@ -222,10 +248,12 @@ class TNormalizationController {
222248 }
223249 }
224250
225- TConclusion<std::vector<INormalizerTask::TPtr>> Init (const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc);
251+ TConclusion<std::vector<INormalizerTask::TPtr>> Init (
252+ const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc);
226253
227254 private:
228- virtual TConclusion<std::vector<INormalizerTask::TPtr>> DoInit (const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) = 0;
255+ virtual TConclusion<std::vector<INormalizerTask::TPtr>> DoInit (
256+ const TNormalizationController& controller, NTabletFlatExecutor::TTransactionContext& txc) = 0;
229257
230258 TAtomic ActiveTasksCount = 0 ;
231259 };
@@ -240,11 +268,13 @@ class TNormalizationController {
240268 std::set<TNormalizerFullId> FinishedNormalizers;
241269 std::map<TNormalizerFullId, TString> StartedNormalizers;
242270 YDB_READONLY_DEF (std::optional<ui32>, LastSavedNormalizerId);
271+
243272private:
244273 INormalizerComponent::TPtr RegisterNormalizer (INormalizerComponent::TPtr normalizer);
245274
246275public:
247- TNormalizationController (std::shared_ptr<IStoragesManager> storagesManager, const std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TSubscriberCounters>& counters)
276+ TNormalizationController (std::shared_ptr<IStoragesManager> storagesManager,
277+ const std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TSubscriberCounters>& counters)
248278 : StoragesManager(storagesManager)
249279 , TaskSubscription(" CS::NORMALIZER" , counters) {
250280 }
@@ -265,12 +295,12 @@ class TNormalizationController {
265295
266296 TString DebugString () const {
267297 return TStringBuilder () << " normalizers_count=" << Normalizers.size ()
268- << " ;current_normalizer=" << (Normalizers.size () ? Normalizers.front ()->DebugString () : " NO_DATA" );
298+ << " ;current_normalizer=" << (Normalizers.size () ? Normalizers.front ()->DebugString () : " NO_DATA" );
269299 }
270300
271301 const INormalizerComponent::TPtr& GetNormalizer () const ;
272302 bool IsNormalizationFinished () const ;
273303 bool SwitchNormalizer ();
274304 const TNormalizerCounters& GetCounters () const ;
275305};
276- }
306+ } // namespace NKikimr::NOlap
0 commit comments