in flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/service/NativeFlinkService.java [242:269]
private static boolean supportsInPlaceScaling(
AbstractFlinkResource<?, ?> resource, Configuration observeConfig) {
if (resource.getSpec().getJob() == null
|| !observeConfig.get(
KubernetesOperatorConfigOptions.JOB_UPGRADE_INPLACE_SCALING_ENABLED)) {
return false;
}
if (!observeConfig.get(FLINK_VERSION).isNewerVersionThan(FlinkVersion.v1_17)) {
LOG.debug("In-place rescaling is only available starting from Flink 1.18");
return false;
}
if (!observeConfig
.get(JobManagerOptions.SCHEDULER)
.equals(JobManagerOptions.SchedulerType.Adaptive)) {
LOG.debug("In-place rescaling is only available with the adaptive scheduler");
return false;
}
var status = resource.getStatus();
if (ReconciliationUtils.isJobInTerminalState(status)
|| JobStatus.RECONCILING.name().equals(status.getJobStatus().getState())) {
LOG.info("Job in terminal or reconciling state cannot be scaled in-place");
return false;
}
return true;
}