in mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/jobcluster/JobClusterActor.java [249:316]
public JobClusterActor(
final String name,
final MantisJobStore jobStore,
final MantisSchedulerFactory schedulerFactory,
final LifecycleEventPublisher eventPublisher,
final CostsCalculator costsCalculator,
final int slaHeadroomForAcceptedJobs,
JobClusterScalerRuleDataFactory jobClusterScalerRuleDataFactory) {
this.name = name;
this.jobStore = jobStore;
this.mantisSchedulerFactory = schedulerFactory;
this.eventPublisher = eventPublisher;
this.slaHeadroomForAcceptedJobs = slaHeadroomForAcceptedJobs;
this.jobClusterScalerRuleData = jobClusterScalerRuleDataFactory.create(name);
this.jobManager = new JobManager(name, getContext(), mantisSchedulerFactory, eventPublisher, jobStore, costsCalculator);
jobIdStartedSubject = BehaviorSubject.create();
initializedBehavior = buildInitializedBehavior();
disabledBehavior = buildDisabledBehavior();
MetricGroupId metricGroupId = getMetricGroupId(name);
Metrics m = new Metrics.Builder()
.id(metricGroupId)
.addCounter("numJobSubmissions")
.addCounter("numJobSubmissionFailures")
.addCounter("numJobShutdowns")
.addCounter("numJobActorCreationCounter")
.addCounter("numJobsInitialized")
.addCounter("numJobClustersInitialized")
.addCounter("numJobClusterInitializeFailures")
.addCounter("numJobClusterEnable")
.addCounter("numJobClusterEnableErrors")
.addCounter("numJobClusterDisable")
.addCounter("numJobClusterDisableErrors")
.addCounter("numJobClusterDelete")
.addCounter("numJobClusterDeleteErrors")
.addCounter("numJobClusterUpdate")
.addCounter("numJobClusterUpdateErrors")
.addCounter("numSLAEnforcementExecutions")
.addGauge(new GaugeCallback(metricGroupId, "acceptedJobsGauge", () -> 1.0 * this.jobManager.acceptedJobsCount()))
.addGauge(new GaugeCallback(metricGroupId, "activeJobsGauge", () -> 1.0 * this.jobManager.activeJobsCount()))
.addGauge(new GaugeCallback(metricGroupId, "terminatingJobsGauge", () -> 1.0 * this.jobManager.terminatingJobsMap.size()))
.addGauge(new GaugeCallback(metricGroupId, "actorToJobIdMappingsGauge", () -> 1.0 * this.jobManager.actorToJobIdMap.size()))
.addGauge(new GaugeCallback(metricGroupId, "numJobsStuckInAccepted",
() -> 1.0 * this.jobManager.getJobsStuckInAccepted(Instant.now().toEpochMilli(),
getExpireAcceptedDelayMs()).size()))
.build();
m = MetricsRegistry.getInstance().registerAndGet(m);
this.metrics = m;
this.numJobSubmissions = m.getCounter("numJobSubmissions");
this.numJobActorCreationCounter = m.getCounter("numJobActorCreationCounter");
this.numJobSubmissionFailures = m.getCounter("numJobSubmissionFailures");
this.numJobShutdowns = m.getCounter("numJobShutdowns");
this.numJobsInitialized = m.getCounter("numJobsInitialized");
this.numJobClustersInitialized = m.getCounter("numJobClustersInitialized");
this.numJobClusterInitializeFailures = m.getCounter("numJobClusterInitializeFailures");
this.numJobClusterEnable = m.getCounter("numJobClusterEnable");
this.numJobClusterDisable = m.getCounter("numJobClusterDisable");
this.numJobClusterDelete = m.getCounter("numJobClusterDelete");
this.numJobClusterUpdate = m.getCounter("numJobClusterUpdate");
this.numJobClusterEnableErrors = m.getCounter("numJobClusterEnableErrors");
this.numJobClusterDisableErrors = m.getCounter("numJobClusterDisableErrors");
this.numJobClusterDeleteErrors = m.getCounter("numJobClusterDeleteErrors");
this.numJobClusterUpdateErrors = m.getCounter("numJobClusterUpdateErrors");
this.numSLAEnforcementExecutions = m.getCounter("numSLAEnforcementExecutions");
}