Skip to content

Commit dfb4ed1

Browse files
authored
allow init cooldown to jobAutoScaler (#811)
1 parent 4862c9b commit dfb4ed1

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

mantis-common/src/main/java/io/mantisrx/common/SystemParameters.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public final class SystemParameters {
2929

3030
public static final String JOB_AUTOSCALE_V2_ENABLED_PARAM = "mantis.job.autoscale.v2.enabled";
3131
public static final String JOB_AUTOSCALE_V2_LOADER_CONFIG_PARAM = "mantis.job.autoscale.v2.loader.config";
32+
public static final String JOB_AUTOSCALE_APPLY_INITIAL_COOLDOWN_PARAM = "mantis.job.autoscale.apply.initial.cooldown";
3233

3334

3435
@Deprecated

mantis-runtime-autoscaler-api/src/main/java/io/mantisrx/server/worker/jobmaster/JobAutoScaler.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -536,13 +536,20 @@ private class StageScaleOperator<T, R> implements Observable.Operator<Object, Ev
536536
private final int stage;
537537
private final StageScalingPolicy scalingPolicy;
538538
private final StageScaler scaler;
539-
private volatile long lastScaledAt = 0L;
539+
private volatile long lastScaledAt;
540540

541541
private StageScaleOperator(int stage, StageScalingPolicy stageScalingPolicy, String scalerId, Context context) {
542542
this.stage = stage;
543543
this.scalingPolicy = stageScalingPolicy;
544544
this.scaler = new StageScaler(stage, this.scalingPolicy, scalerId, context);
545-
logger.info("cooldownSecs set to {}", stageScalingPolicy.getCoolDownSecs());
545+
546+
boolean applyInitialCooldown = Boolean.parseBoolean(
547+
Optional.ofNullable(MantisProperties.getProperty(SystemParameters.JOB_AUTOSCALE_APPLY_INITIAL_COOLDOWN_PARAM))
548+
.orElse("true"));
549+
this.lastScaledAt = applyInitialCooldown ? System.currentTimeMillis() : 0L;
550+
551+
logger.info("cooldownSecs set to {}, applyInitialCooldown={}",
552+
stageScalingPolicy.getCoolDownSecs(), applyInitialCooldown);
546553
}
547554

548555

mantis-runtime-executor/src/test/java/io/mantisrx/server/worker/jobmaster/JobAutoScalerTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import static org.mockito.ArgumentMatchers.eq;
2626
import static org.mockito.Mockito.*;
2727

28+
import io.mantisrx.common.SystemParameters;
2829
import io.mantisrx.runtime.Context;
2930
import io.mantisrx.runtime.MachineDefinition;
3031
import io.mantisrx.runtime.descriptor.JobScalingRule;
@@ -45,6 +46,7 @@
4546
import java.util.concurrent.CountDownLatch;
4647
import java.util.concurrent.TimeUnit;
4748
import java.util.concurrent.atomic.AtomicInteger;
49+
import org.junit.BeforeClass;
4850
import org.junit.Test;
4951
import org.mockito.invocation.InvocationOnMock;
5052
import org.mockito.stubbing.Answer;
@@ -59,6 +61,11 @@ public class JobAutoScalerTest {
5961

6062
private static final Logger logger = LoggerFactory.getLogger(JobAutoScalerTest.class);
6163

64+
@BeforeClass
65+
public static void setup() {
66+
System.setProperty(SystemParameters.JOB_AUTOSCALE_APPLY_INITIAL_COOLDOWN_PARAM, "false");
67+
}
68+
6269
@Test
6370
public void testScaleUp() throws InterruptedException {
6471
final String jobId = "test-job-1";

0 commit comments

Comments
 (0)