113
113
import org .apache .pinot .controller .tuner .TableConfigTunerRegistry ;
114
114
import org .apache .pinot .controller .util .TableSizeReader ;
115
115
import org .apache .pinot .controller .validation .BrokerResourceValidationManager ;
116
+ import org .apache .pinot .controller .validation .DiskUtilizationChecker ;
116
117
import org .apache .pinot .controller .validation .OfflineSegmentIntervalChecker ;
117
118
import org .apache .pinot .controller .validation .RealtimeSegmentValidationManager ;
119
+ import org .apache .pinot .controller .validation .ResourceUtilizationChecker ;
120
+ import org .apache .pinot .controller .validation .ResourceUtilizationManager ;
118
121
import org .apache .pinot .controller .validation .StorageQuotaChecker ;
119
122
import org .apache .pinot .core .periodictask .PeriodicTask ;
120
123
import org .apache .pinot .core .periodictask .PeriodicTaskScheduler ;
@@ -204,6 +207,8 @@ public abstract class BaseControllerStarter implements ServiceStartable {
204
207
protected ExecutorService _tenantRebalanceExecutorService ;
205
208
protected TableSizeReader _tableSizeReader ;
206
209
protected StorageQuotaChecker _storageQuotaChecker ;
210
+ protected DiskUtilizationChecker _diskUtilizationChecker ;
211
+ protected ResourceUtilizationManager _resourceUtilizationManager ;
207
212
208
213
@ Override
209
214
public void init (PinotConfiguration pinotConfiguration )
@@ -510,6 +515,9 @@ private void setUpPinotController() {
510
515
_storageQuotaChecker = new StorageQuotaChecker (_tableSizeReader , _controllerMetrics , _leadControllerManager ,
511
516
_helixResourceManager , _config );
512
517
518
+ _diskUtilizationChecker = new DiskUtilizationChecker (_helixResourceManager , _config );
519
+ _resourceUtilizationManager = new ResourceUtilizationManager (_config , _diskUtilizationChecker );
520
+
513
521
// Setting up periodic tasks
514
522
List <PeriodicTask > controllerPeriodicTasks = setupControllerPeriodicTasks ();
515
523
LOGGER .info ("Init controller periodic tasks scheduler" );
@@ -561,6 +569,8 @@ protected void configure() {
561
569
bind (_tenantRebalancer ).to (TenantRebalancer .class );
562
570
bind (_tableSizeReader ).to (TableSizeReader .class );
563
571
bind (_storageQuotaChecker ).to (StorageQuotaChecker .class );
572
+ bind (_diskUtilizationChecker ).to (DiskUtilizationChecker .class );
573
+ bind (_resourceUtilizationManager ).to (ResourceUtilizationManager .class );
564
574
bind (controllerStartTime ).named (ControllerAdminApiApplication .START_TIME );
565
575
String loggerRootDir = _config .getProperty (CommonConstants .Controller .CONFIG_OF_LOGGER_ROOT_DIR );
566
576
if (loggerRootDir != null ) {
@@ -862,7 +872,8 @@ protected List<PeriodicTask> setupControllerPeriodicTasks() {
862
872
_taskManagerStatusCache = getTaskManagerStatusCache ();
863
873
_taskManager =
864
874
new PinotTaskManager (_helixTaskResourceManager , _helixResourceManager , _leadControllerManager , _config ,
865
- _controllerMetrics , _taskManagerStatusCache , _executorService , _connectionManager );
875
+ _controllerMetrics , _taskManagerStatusCache , _executorService , _connectionManager ,
876
+ _resourceUtilizationManager );
866
877
periodicTasks .add (_taskManager );
867
878
_retentionManager =
868
879
new RetentionManager (_helixResourceManager , _leadControllerManager , _config , _controllerMetrics );
@@ -873,7 +884,8 @@ protected List<PeriodicTask> setupControllerPeriodicTasks() {
873
884
periodicTasks .add (_offlineSegmentIntervalChecker );
874
885
_realtimeSegmentValidationManager =
875
886
new RealtimeSegmentValidationManager (_config , _helixResourceManager , _leadControllerManager ,
876
- _pinotLLCRealtimeSegmentManager , _validationMetrics , _controllerMetrics , _storageQuotaChecker );
887
+ _pinotLLCRealtimeSegmentManager , _validationMetrics , _controllerMetrics , _storageQuotaChecker ,
888
+ _resourceUtilizationManager );
877
889
periodicTasks .add (_realtimeSegmentValidationManager );
878
890
_brokerResourceValidationManager =
879
891
new BrokerResourceValidationManager (_config , _helixResourceManager , _leadControllerManager , _controllerMetrics );
@@ -902,6 +914,9 @@ protected List<PeriodicTask> setupControllerPeriodicTasks() {
902
914
PeriodicTask responseStoreCleaner = new ResponseStoreCleaner (_config , _helixResourceManager , _leadControllerManager ,
903
915
_controllerMetrics , _executorService , _connectionManager );
904
916
periodicTasks .add (responseStoreCleaner );
917
+ PeriodicTask resourceUtilizationChecker = new ResourceUtilizationChecker (_config , _connectionManager ,
918
+ _controllerMetrics , _diskUtilizationChecker , _executorService , _helixResourceManager );
919
+ periodicTasks .add (resourceUtilizationChecker );
905
920
906
921
return periodicTasks ;
907
922
}
0 commit comments