public boolean update()

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;
    }