in streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java [647:701]
public AppExistsState checkExists(Application appParam) {
if (!checkJobName(appParam.getJobName())) {
return AppExistsState.INVALID;
}
boolean existsByJobName = this.existsByJobName(appParam.getJobName());
if (appParam.getId() != null) {
Application app = getById(appParam.getId());
if (app.getJobName().equals(appParam.getJobName())) {
return AppExistsState.NO;
}
if (existsByJobName) {
return AppExistsState.IN_DB;
}
FlinkAppState state = FlinkAppState.of(app.getState());
// has stopped status
if (state.equals(FlinkAppState.ADDED)
|| state.equals(FlinkAppState.CREATED)
|| state.equals(FlinkAppState.FAILED)
|| state.equals(FlinkAppState.CANCELED)
|| state.equals(FlinkAppState.LOST)
|| state.equals(FlinkAppState.KILLED)) {
// check whether jobName exists on yarn
if (ExecutionMode.isYarnMode(appParam.getExecutionMode())
&& YarnUtils.isContains(appParam.getJobName())) {
return AppExistsState.IN_YARN;
}
// check whether clusterId, namespace, jobId on kubernetes
else if (ExecutionMode.isKubernetesMode(appParam.getExecutionMode())
&& k8SFlinkTrackMonitor.checkIsInRemoteCluster(toTrackId(appParam))) {
return AppExistsState.IN_KUBERNETES;
}
}
} else {
if (existsByJobName) {
return AppExistsState.IN_DB;
}
// check whether jobName exists on yarn
if (ExecutionMode.isYarnMode(appParam.getExecutionMode())
&& YarnUtils.isContains(appParam.getJobName())) {
return AppExistsState.IN_YARN;
}
// check whether clusterId, namespace, jobId on kubernetes
else if (ExecutionMode.isKubernetesMode(appParam.getExecutionMode())
&& k8SFlinkTrackMonitor.checkIsInRemoteCluster(toTrackId(appParam))) {
return AppExistsState.IN_KUBERNETES;
}
}
return AppExistsState.NO;
}