in streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/application/impl/SparkApplicationManageServiceImpl.java [401:489]
public boolean update(SparkApplication appParam) {
SparkApplication application = getById(appParam.getId());
/* If the original mode is remote, k8s-session, yarn-session, check cluster status */
SparkDeployMode sparkDeployMode = application.getDeployModeEnum();
boolean success = validateQueueIfNeeded(application, appParam);
ApiAlertException.throwIfFalse(
success,
String.format(ERROR_APP_QUEUE_HINT, appParam.getYarnQueue(), appParam.getTeamId()));
application.setRelease(ReleaseStateEnum.NEED_RELEASE.get());
// 1) jar job jar file changed
if (application.isFromUploadJob()) {
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 = org.apache.commons.io.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);
}
}
}
}
// 3) flink version changed
if (!application.getBuild()
&& !Objects.equals(application.getVersionId(), appParam.getVersionId())) {
application.setBuild(true);
}
// 4) yarn application mode change
if (!application.getBuild() && isYarnApplicationModeChange(application, appParam)) {
application.setBuild(true);
}
appParam.setJobType(application.getJobType());
// changes to the following parameters need to be re-release to take effect
application.setVersionId(appParam.getVersionId());
application.setAppName(appParam.getAppName());
application.setDeployMode(appParam.getDeployMode());
application.setAppProperties(appParam.getAppProperties());
application.setAppArgs(appParam.getAppArgs());
application.setOptions(appParam.getOptions());
application.setYarnQueue(appParam.getYarnQueue());
application.resolveYarnQueue();
application.setK8sMasterUrl(appParam.getK8sMasterUrl());
application.setK8sContainerImage(appParam.getK8sContainerImage());
application.setK8sImagePullPolicy(appParam.getK8sImagePullPolicy());
application.setK8sServiceAccount(appParam.getK8sServiceAccount());
application.setK8sNamespace(appParam.getK8sNamespace());
// changes to the following parameters do not affect running tasks
application.setDescription(appParam.getDescription());
application.setAlertId(appParam.getAlertId());
application.setRestartSize(appParam.getRestartSize());
application.setTags(appParam.getTags());
switch (appParam.getDeployModeEnum()) {
case YARN_CLUSTER:
case YARN_CLIENT:
application.setHadoopUser(appParam.getHadoopUser());
break;
default:
break;
}
if (application.isSparkSqlJob()) {
updateSparkSqlJob(application, appParam);
} else if (application.isSparkJarJob()) {
application.setJar(appParam.getJar());
application.setMainClass(appParam.getMainClass());
}
// update config
configService.update(appParam, application.isRunning());
this.updateById(application);
return true;
}