in streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java [835:956]
public boolean update(Application appParam) {
Application application = getById(appParam.getId());
boolean success = validateQueueIfNeeded(application, appParam);
ApiAlertException.throwIfFalse(
success,
String.format(ERROR_APP_QUEUE_HINT, appParam.getYarnQueue(), appParam.getTeamId()));
application.setRelease(ReleaseState.NEED_RELEASE.get());
// 1) jar job jar file changed
if (application.isUploadJob()) {
if (!Objects.equals(application.getJar(), appParam.getJar())) {
application.setBuild(true);
} else {
File jarFile = new File(WebUtils.getAppTempDir(), appParam.getJar());
if (jarFile.exists()) {
try {
long checkSum = FileUtils.checksumCRC32(jarFile);
if (!Objects.equals(checkSum, application.getJarCheckSum())) {
application.setBuild(true);
}
} catch (IOException e) {
log.error("Error in checksumCRC32 for {}.", jarFile);
throw new RuntimeException(e);
}
}
}
}
// 2) k8s podTemplate changed..
if (application.getBuild() && ExecutionMode.isKubernetesMode(appParam.getExecutionMode())) {
if (ObjectUtils.trimNoEquals(
application.getK8sRestExposedType(), appParam.getK8sRestExposedType())
|| ObjectUtils.trimNoEquals(
application.getK8sJmPodTemplate(), appParam.getK8sJmPodTemplate())
|| ObjectUtils.trimNoEquals(
application.getK8sTmPodTemplate(), appParam.getK8sTmPodTemplate())
|| ObjectUtils.trimNoEquals(
application.getK8sPodTemplates(), appParam.getK8sPodTemplates())
|| ObjectUtils.trimNoEquals(
application.getK8sHadoopIntegration(), appParam.getK8sHadoopIntegration())
|| ObjectUtils.trimNoEquals(application.getFlinkImage(), appParam.getFlinkImage())) {
application.setBuild(true);
}
}
// 3) flink version changed
if (!application.getBuild()
&& !Objects.equals(application.getVersionId(), appParam.getVersionId())) {
application.setBuild(true);
}
// 4) yarn application mode change
if (!application.getBuild()) {
if (!application.getExecutionMode().equals(appParam.getExecutionMode())) {
if (appParam.getExecutionModeEnum().equals(ExecutionMode.YARN_APPLICATION)
|| application.getExecutionModeEnum().equals(ExecutionMode.YARN_APPLICATION)) {
application.setBuild(true);
}
}
}
appParam.setJobType(application.getJobType());
// changes to the following parameters need to be re-release to take effect
application.setJobName(appParam.getJobName());
application.setVersionId(appParam.getVersionId());
application.setArgs(appParam.getArgs());
application.setOptions(appParam.getOptions());
application.setDynamicProperties(appParam.getDynamicProperties());
application.setResolveOrder(appParam.getResolveOrder());
application.setExecutionMode(appParam.getExecutionMode());
application.setClusterId(appParam.getClusterId());
application.setFlinkImage(appParam.getFlinkImage());
application.setK8sNamespace(appParam.getK8sNamespace());
application.updateHotParams(appParam);
application.setK8sRestExposedType(appParam.getK8sRestExposedType());
application.setK8sPodTemplate(appParam.getK8sPodTemplate());
application.setK8sJmPodTemplate(appParam.getK8sJmPodTemplate());
application.setK8sTmPodTemplate(appParam.getK8sTmPodTemplate());
application.setK8sHadoopIntegration(appParam.getK8sHadoopIntegration());
// changes to the following parameters do not affect running tasks
application.setModifyTime(new Date());
application.setDescription(appParam.getDescription());
application.setAlertId(appParam.getAlertId());
application.setRestartSize(appParam.getRestartSize());
application.setCpFailureAction(appParam.getCpFailureAction());
application.setCpFailureRateInterval(appParam.getCpFailureRateInterval());
application.setCpMaxFailureInterval(appParam.getCpMaxFailureInterval());
application.setTags(appParam.getTags());
switch (appParam.getExecutionModeEnum()) {
case YARN_APPLICATION:
case YARN_PER_JOB:
case KUBERNETES_NATIVE_APPLICATION:
application.setFlinkClusterId(null);
break;
case REMOTE:
case YARN_SESSION:
case KUBERNETES_NATIVE_SESSION:
application.setFlinkClusterId(appParam.getFlinkClusterId());
break;
default:
break;
}
// Flink Sql job...
if (application.isFlinkSqlJob()) {
updateFlinkSqlJob(application, appParam);
return true;
}
if (application.isStreamParkJob()) {
configService.update(appParam, application.isRunning());
} else {
application.setJar(appParam.getJar());
application.setMainClass(appParam.getMainClass());
}
this.updateById(application);
return true;
}