[Improve] mybatis-plus updateStrategy improvements (#3615)
* [improve] update global db update-strategy
* [improve] remove all @TableField(updateStrategy = FieldStrategy.IGNORED)
diff --git a/.licenserc.yaml b/.licenserc.yaml
index 1c66522..9313bb6 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -171,3 +171,5 @@
license: Eclipse Public License 2.0
- name: org.slf4j:slf4j-api
license: MIT License
+ - name: cn.hutool:hutool-core
+ license: MulanPSL-2.0
diff --git a/dist-material/release-docs/LICENSE b/dist-material/release-docs/LICENSE
index d8d8630..4936762 100644
--- a/dist-material/release-docs/LICENSE
+++ b/dist-material/release-docs/LICENSE
@@ -733,6 +733,13 @@
https://mvnrepository.com/artifact/com.github.scribejava/scribejava-apis/7.1.1 MIT
https://mvnrepository.com/artifact/com.github.scribejava/scribejava-core/7.1.1 MIT
+========================================================================
+MulanPSL-2.0 licenses
+========================================================================
+The following components are provided under the MulanPSL-2.0 License. See project link for details.
+The text of each license is also included in licenses/LICENSE-[project].txt.
+
+ https://mvnrepository.com/artifact/cn.hutool/hutool-core/5.8.26 MulanPSL-2.0
========================================================================
Public Domain licenses
diff --git a/dist-material/release-docs/licenses/license-cn.hutool-hutool-core.txt b/dist-material/release-docs/licenses/license-cn.hutool-hutool-core.txt
new file mode 100644
index 0000000..52f1fbc
--- /dev/null
+++ b/dist-material/release-docs/licenses/license-cn.hutool-hutool-core.txt
@@ -0,0 +1 @@
+License: {Name: MulanPSL-2.0, URL: http://license.coscl.org.cn/MulanPSL2, Distribution: repo, Comments: , }
diff --git a/streampark-console/streampark-console-service/pom.xml b/streampark-console/streampark-console-service/pom.xml
index f6b48a6..694ecb1 100644
--- a/streampark-console/streampark-console-service/pom.xml
+++ b/streampark-console/streampark-console-service/pom.xml
@@ -44,6 +44,7 @@
<knife4j-openapi3.version>4.0.0</knife4j-openapi3.version>
<springdoc-openapi-ui.version>1.6.9</springdoc-openapi-ui.version>
<commons-compress.version>1.21</commons-compress.version>
+ <hutool.version>5.8.27</hutool.version>
<javax-mail.version>1.4.7</javax-mail.version>
<shiro.version>1.10.0</shiro.version>
<jsch.version>0.2.11</jsch.version>
@@ -258,6 +259,13 @@
<artifactId>commons-lang3</artifactId>
</dependency>
+ <!-- hutool -->
+ <dependency>
+ <groupId>cn.hutool</groupId>
+ <artifactId>hutool-core</artifactId>
+ <version>${hutool.version}</version>
+ </dependency>
+
<!-- h2 -->
<dependency>
<groupId>com.h2database</groupId>
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/MybatisConfig.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/MybatisConfig.java
index df9b4f3..f6c193c 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/MybatisConfig.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/MybatisConfig.java
@@ -22,6 +22,7 @@
import org.apache.ibatis.type.JdbcType;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusPropertiesCustomizer;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
@@ -85,6 +86,7 @@
GlobalConfig globalConfig = GlobalConfigUtils.getGlobalConfig(mybatisConfiguration);
GlobalConfig.DbConfig dbConfig = globalConfig.getDbConfig();
dbConfig.setIdType(IdType.AUTO);
+ dbConfig.setUpdateStrategy(FieldStrategy.IGNORED);
// close mybatis-plus banner
globalConfig.setBanner(false);
properties.setGlobalConfig(globalConfig);
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Application.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Application.java
index 198cfe1..2349fc0 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Application.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Application.java
@@ -40,7 +40,6 @@
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -80,14 +79,11 @@
/** The name of the frontend and program displayed in yarn */
private String jobName;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String appId;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String jobId;
/** The address of the jobmanager, that is, the direct access address of the Flink web UI */
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String jobManagerUrl;
/** flink version */
@@ -128,7 +124,6 @@
private Boolean build;
/** max restart retries after job failed */
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private Integer restartSize;
/** has restart count */
@@ -137,7 +132,6 @@
private Integer optionState;
/** alert id */
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private Long alertId;
private String args;
@@ -146,7 +140,6 @@
private String options;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String hotParams;
private Integer resolveOrder;
@@ -169,7 +162,6 @@
private Date startTime;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private Date endTime;
private Long duration;
@@ -197,7 +189,6 @@
private Integer totalTask;
/** the cluster id bound to the task in remote mode */
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private Long flinkClusterId;
private String description;
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/ApplicationConfig.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/ApplicationConfig.java
index 5a096fb..58fc0ca 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/ApplicationConfig.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/ApplicationConfig.java
@@ -24,9 +24,7 @@
import org.apache.commons.collections.MapUtils;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -59,7 +57,6 @@
/** default version: 1 */
private Integer version = 1;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String content;
private Date createTime;
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/FlinkCluster.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/FlinkCluster.java
index 6763744..d2a80b3 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/FlinkCluster.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/FlinkCluster.java
@@ -31,9 +31,7 @@
import org.apache.flink.configuration.CoreOptions;
import org.apache.hc.client5.http.config.RequestConfig;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
@@ -59,10 +57,8 @@
@TableId(type = IdType.AUTO)
private Long id;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String address;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String jobManagerUrl;
private String clusterId;
@@ -98,7 +94,6 @@
private Integer resolveOrder;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String exception;
private Integer clusterState;
@@ -107,10 +102,8 @@
private Date startTime;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private Date endTime;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private Long alertId;
private transient Integer allJobs = 0;
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
index 40439be..d921830 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
@@ -30,9 +30,7 @@
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -68,13 +66,10 @@
private Date lastBuild;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String userName;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String password;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String prvkeyPath;
/** No salt value is returned */
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Setting.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Setting.java
index edd8659..fb76e49 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Setting.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Setting.java
@@ -17,9 +17,7 @@
package org.apache.streampark.console.core.entity;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -39,7 +37,6 @@
@TableId(type = IdType.INPUT)
private String settingKey;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String settingValue;
private Integer type;
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/YarnQueue.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/YarnQueue.java
index bb81b66..55c85da 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/YarnQueue.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/YarnQueue.java
@@ -41,7 +41,6 @@
/** yarn queue and label in format {queue} or {queue@label1} or {queue@label1,label2}. */
private String queueLabel;
- @TableField(updateStrategy = FieldStrategy.IGNORED)
private String description;
private Date createTime;
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/alert/impl/AlertConfigServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/alert/impl/AlertConfigServiceImpl.java
index 6d889a7..c25ce5e 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/alert/impl/AlertConfigServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/alert/impl/AlertConfigServiceImpl.java
@@ -26,6 +26,7 @@
import org.apache.streampark.console.core.mapper.AlertConfigMapper;
import org.apache.streampark.console.core.service.alert.AlertConfigService;
import org.apache.streampark.console.core.service.application.ApplicationInfoService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.commons.collections.CollectionUtils;
@@ -74,6 +75,16 @@
}
@Override
+ public boolean updateById(AlertConfig entity) {
+ AlertConfig alertConfig = baseMapper.selectById(entity.getId());
+ if (alertConfig == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, alertConfig, AlertConfig::getId, AlertConfig::getCreateTime);
+ return super.updateById(alertConfig);
+ }
+
+ @Override
public boolean removeById(Long id) throws AlertException {
long count =
applicationInfoService.count(
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/application/impl/ApplicationActionServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/application/impl/ApplicationActionServiceImpl.java
index 60047f4..0fbbb51 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/application/impl/ApplicationActionServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/application/impl/ApplicationActionServiceImpl.java
@@ -65,6 +65,7 @@
import org.apache.streampark.console.core.service.application.ApplicationActionService;
import org.apache.streampark.console.core.service.application.ApplicationInfoService;
import org.apache.streampark.console.core.service.application.ApplicationManageService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.streampark.console.core.utils.FlinkK8sDataTypeConverterStub;
import org.apache.streampark.console.core.watcher.FlinkAppHttpWatcher;
import org.apache.streampark.console.core.watcher.FlinkClusterWatcher;
@@ -251,7 +252,7 @@
}
application.setOptionTime(new Date());
- this.baseMapper.updateById(application);
+ updateById(application);
Long userId = commonService.getUserId();
if (!application.getUserId().equals(userId)) {
@@ -848,4 +849,19 @@
flinkClusterWatcher.getClusterState(flinkCluster) == ClusterState.RUNNING,
"[StreamPark] The flink cluster not running, please start it");
}
+
+ @Override
+ public boolean updateById(Application application) {
+ Application app = getById(application.getId());
+ BeanUtil.copyIgnoreNull(application, app, Application::getId, Application::getCreateTime);
+ app.setAppId(application.getAppId());
+ app.setJobId(application.getJobId());
+ app.setJobManagerUrl(application.getJobManagerUrl());
+ app.setRestartSize(application.getRestartSize());
+ app.setAlertId(application.getAlertId());
+ app.setEndTime(application.getEndTime());
+ app.setHotParams(application.getHotParams());
+ app.setFlinkClusterId(application.getFlinkClusterId());
+ return super.updateById(app);
+ }
}
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/application/impl/ApplicationManageServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/application/impl/ApplicationManageServiceImpl.java
index 0fce782..1af2784 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/application/impl/ApplicationManageServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/application/impl/ApplicationManageServiceImpl.java
@@ -54,6 +54,7 @@
import org.apache.streampark.console.core.service.SavePointService;
import org.apache.streampark.console.core.service.SettingService;
import org.apache.streampark.console.core.service.YarnQueueService;
+import org.apache.streampark.console.core.service.application.ApplicationActionService;
import org.apache.streampark.console.core.service.application.ApplicationManageService;
import org.apache.streampark.console.core.utils.FlinkK8sDataTypeConverterStub;
import org.apache.streampark.console.core.watcher.FlinkAppHttpWatcher;
@@ -139,6 +140,8 @@
@Autowired private FlinkClusterService flinkClusterService;
+ @Autowired private ApplicationActionService applicationActionService;
+
@PostConstruct
public void resetOptionState() {
this.baseMapper.resetOptionState();
@@ -609,7 +612,7 @@
application.setJar(appParam.getJar());
application.setMainClass(appParam.getMainClass());
}
- this.updateById(application);
+ applicationActionService.updateById(application);
return true;
}
@@ -682,7 +685,7 @@
}
}
}
- this.updateById(application);
+ applicationActionService.updateById(application);
this.configService.update(appParam, application.isRunning());
}
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
index 3370e66..ea04f7b 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
@@ -59,6 +59,7 @@
import org.apache.streampark.console.core.service.application.ApplicationActionService;
import org.apache.streampark.console.core.service.application.ApplicationInfoService;
import org.apache.streampark.console.core.service.application.ApplicationManageService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.streampark.console.core.watcher.FlinkAppHttpWatcher;
import org.apache.streampark.flink.packer.docker.DockerConf;
import org.apache.streampark.flink.packer.maven.Artifact;
@@ -648,6 +649,16 @@
return updateById(pipe);
}
+ @Override
+ public boolean updateById(AppBuildPipeline entity) {
+ AppBuildPipeline appBuildPipeline = baseMapper.selectById(entity.getAppId());
+ if (appBuildPipeline == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, appBuildPipeline, AppBuildPipeline::getAppId);
+ return super.updateById(appBuildPipeline);
+ }
+
/**
* Check if the jar exists, and upload a copy if it does not exist
*
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ExternalLinkServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ExternalLinkServiceImpl.java
index ebf979c..62ac4c8 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ExternalLinkServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ExternalLinkServiceImpl.java
@@ -24,6 +24,7 @@
import org.apache.streampark.console.core.mapper.ExternalLinkMapper;
import org.apache.streampark.console.core.service.ExternalLinkService;
import org.apache.streampark.console.core.service.application.ApplicationManageService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -65,8 +66,18 @@
if (!this.check(externalLink)) {
return;
}
- externalLink.setModifyTime(new Date());
- baseMapper.updateById(externalLink);
+ updateById(externalLink);
+ }
+
+ @Override
+ public boolean updateById(ExternalLink externalLink) {
+ ExternalLink link = baseMapper.selectById(externalLink.getId());
+ if (link == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(externalLink, link, ExternalLink::getId, ExternalLink::getCreateTime);
+ link.setModifyTime(new Date());
+ return super.updateById(link);
}
@Override
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkClusterServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkClusterServiceImpl.java
index ea80ed2..b3af94b 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkClusterServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkClusterServiceImpl.java
@@ -31,6 +31,7 @@
import org.apache.streampark.console.core.service.FlinkEnvService;
import org.apache.streampark.console.core.service.YarnQueueService;
import org.apache.streampark.console.core.service.application.ApplicationInfoService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.streampark.console.core.watcher.FlinkClusterWatcher;
import org.apache.streampark.console.core.watcher.FlinkK8sObserverStub;
import org.apache.streampark.flink.client.FlinkClient;
@@ -226,6 +227,21 @@
updateById(flinkCluster);
}
+ @Override
+ public boolean updateById(FlinkCluster entity) {
+ FlinkCluster flinkCluster = baseMapper.selectById(entity.getId());
+ if (flinkCluster == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, flinkCluster, FlinkCluster::getId, FlinkCluster::getCreateTime);
+ flinkCluster.setAddress(entity.getAddress());
+ flinkCluster.setJobManagerUrl(entity.getJobManagerUrl());
+ flinkCluster.setException(entity.getException());
+ flinkCluster.setEndTime(entity.getEndTime());
+ flinkCluster.setAlertId(entity.getAlertId());
+ return super.updateById(flinkCluster);
+ }
+
private void updateFlinkClusterForNonRemoteModes(
FlinkCluster paramOfCluster, FlinkCluster flinkCluster) {
flinkCluster.setClusterId(paramOfCluster.getClusterId());
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkEnvServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkEnvServiceImpl.java
index 17f41f5..dcb3c80 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkEnvServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkEnvServiceImpl.java
@@ -24,6 +24,7 @@
import org.apache.streampark.console.core.service.FlinkClusterService;
import org.apache.streampark.console.core.service.FlinkEnvService;
import org.apache.streampark.console.core.service.application.ApplicationInfoService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -154,6 +155,16 @@
checkOrElseAlert(flinkEnv);
}
+ @Override
+ public boolean updateById(FlinkEnv entity) {
+ FlinkEnv flinkEnv = baseMapper.selectById(entity.getId());
+ if (flinkEnv == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, flinkEnv, FlinkEnv::getId, FlinkEnv::getCreateTime);
+ return super.updateById(flinkEnv);
+ }
+
private void checkOrElseAlert(FlinkEnv flinkEnv) {
// 1.check exists
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
index 13f5a13..bb721d0 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
@@ -43,6 +43,7 @@
import org.apache.streampark.console.core.service.ProjectService;
import org.apache.streampark.console.core.service.application.ApplicationManageService;
import org.apache.streampark.console.core.task.ProjectBuildTask;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.streampark.console.core.watcher.FlinkAppHttpWatcher;
import org.apache.commons.lang3.StringUtils;
@@ -172,10 +173,23 @@
});
}
}
- baseMapper.updateById(project);
+ updateById(project);
return true;
}
+ @Override
+ public boolean updateById(Project entity) {
+ Project project = baseMapper.selectById(entity.getId());
+ if (project == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, project, Project::getId, Project::getCreateTime);
+ project.setUserName(entity.getUserName());
+ project.setPassword(entity.getPassword());
+ project.setPrvkeyPath(entity.getPrvkeyPath());
+ return super.updateById(project);
+ }
+
private static void updateInternal(Project projectParam, Project project) {
project.setName(projectParam.getName());
project.setUrl(projectParam.getUrl());
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ResourceServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ResourceServiceImpl.java
index f2f2ef3..4fc7324 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ResourceServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ResourceServiceImpl.java
@@ -41,6 +41,7 @@
import org.apache.streampark.console.core.service.FlinkSqlService;
import org.apache.streampark.console.core.service.ResourceService;
import org.apache.streampark.console.core.service.application.ApplicationManageService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.streampark.flink.packer.maven.Artifact;
import org.apache.streampark.flink.packer.maven.MavenTool;
@@ -209,7 +210,17 @@
}
findResource.setDescription(resource.getDescription());
- baseMapper.updateById(findResource);
+ updateById(findResource);
+ }
+
+ @Override
+ public boolean updateById(Resource entity) {
+ Resource resource = baseMapper.selectById(entity.getId());
+ if (resource == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, resource, Resource::getId, Resource::getCreateTime);
+ return super.updateById(resource);
}
@Override
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SavePointServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SavePointServiceImpl.java
index c973be1..9aba293 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SavePointServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SavePointServiceImpl.java
@@ -40,6 +40,7 @@
import org.apache.streampark.console.core.service.FlinkClusterService;
import org.apache.streampark.console.core.service.FlinkEnvService;
import org.apache.streampark.console.core.service.SavePointService;
+import org.apache.streampark.console.core.service.application.ApplicationActionService;
import org.apache.streampark.console.core.service.application.ApplicationManageService;
import org.apache.streampark.console.core.watcher.FlinkAppHttpWatcher;
import org.apache.streampark.flink.client.FlinkClient;
@@ -93,6 +94,8 @@
@Autowired private ApplicationManageService applicationManageService;
+ @Autowired private ApplicationActionService applicationActionService;
+
@Autowired private ApplicationConfigService configService;
@Autowired private FlinkClusterService flinkClusterService;
@@ -167,7 +170,7 @@
application.setOptionState(OptionStateEnum.SAVEPOINTING.getValue());
application.setOptionTime(new Date());
- this.applicationManageService.updateById(application);
+ this.applicationActionService.updateById(application);
flinkAppHttpWatcher.init();
FlinkEnv flinkEnv = flinkEnvService.getById(application.getVersionId());
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/VariableServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/VariableServiceImpl.java
index 928f79f..eb9b8eb 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/VariableServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/VariableServiceImpl.java
@@ -30,6 +30,7 @@
import org.apache.streampark.console.core.service.FlinkSqlService;
import org.apache.streampark.console.core.service.VariableService;
import org.apache.streampark.console.core.service.application.ApplicationManageService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -125,7 +126,7 @@
ApiAlertException.throwIfFalse(
findVariable.getVariableCode().equals(variable.getVariableCode()),
"Sorry, the variable code cannot be updated.");
- this.baseMapper.updateById(variable);
+ updateById(variable);
// endregion
// set Application's field release to NEED_RESTART
@@ -260,4 +261,17 @@
public boolean existsByTeamId(Long teamId) {
return this.baseMapper.existsByTeamId(teamId);
}
+
+ @Override
+ public boolean updateById(Variable entity) {
+ Variable variable = this.baseMapper.selectById(entity.getId());
+ if (variable == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, variable, Variable::getId, Variable::getCreateTime);
+ variable.setCreatorId(entity.getCreatorId());
+ variable.setTeamId(entity.getTeamId());
+ variable.setDesensitization(entity.getDesensitization());
+ return super.updateById(variable);
+ }
}
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/YarnQueueServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/YarnQueueServiceImpl.java
index 66235ea..3dd0bcf 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/YarnQueueServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/YarnQueueServiceImpl.java
@@ -31,6 +31,7 @@
import org.apache.streampark.console.core.service.FlinkClusterService;
import org.apache.streampark.console.core.service.YarnQueueService;
import org.apache.streampark.console.core.service.application.ApplicationManageService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -158,6 +159,17 @@
}
@Override
+ public boolean updateById(YarnQueue entity) {
+ YarnQueue yarnQueue = baseMapper.selectById(entity.getId());
+ if (yarnQueue == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, yarnQueue, YarnQueue::getId, YarnQueue::getCreateTime);
+ yarnQueue.setDescription(entity.getDescription());
+ return super.updateById(yarnQueue);
+ }
+
+ @Override
public void remove(YarnQueue yarnQueue) {
YarnQueue queueFromDB = getYarnQueueByIdWithPreconditions(yarnQueue);
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/utils/BeanUtil.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/utils/BeanUtil.java
new file mode 100644
index 0000000..23ba8fe
--- /dev/null
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/utils/BeanUtil.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.streampark.console.core.utils;
+
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.lang.func.Func1;
+
+/** Util class for bean */
+public class BeanUtil {
+
+ /**
+ * bean copy ignore null field
+ *
+ * @param source the source object for copy
+ * @param target the target object for copy
+ */
+ @SafeVarargs
+ public static <P, R> void copyIgnoreNull(
+ Object source, Object target, Func1<P, R>... ignoreProperties) {
+ cn.hutool.core.bean.BeanUtil.copyProperties(
+ source,
+ target,
+ CopyOptions.create().ignoreNullValue().setIgnoreProperties(ignoreProperties));
+ }
+}
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
index 3b98228..d7846d3 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
@@ -23,6 +23,7 @@
import org.apache.streampark.console.base.domain.RestResponse;
import org.apache.streampark.console.base.mybatis.pager.MybatisPager;
import org.apache.streampark.console.base.util.WebUtils;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.streampark.console.system.authentication.JWTToken;
import org.apache.streampark.console.system.authentication.JWTUtil;
import org.apache.streampark.console.system.entity.AccessToken;
@@ -116,14 +117,22 @@
? AccessToken.STATUS_DISABLE
: AccessToken.STATUS_ENABLE;
- AccessToken updateObj = new AccessToken();
- updateObj.setStatus(status);
- updateObj.setId(tokenId);
- return RestResponse.success(this.updateById(updateObj));
+ tokenInfo.setStatus(status);
+ return RestResponse.success(this.updateById(tokenInfo));
}
@Override
public AccessToken getByUserId(Long userId) {
return baseMapper.selectByUserId(userId);
}
+
+ @Override
+ public boolean updateById(AccessToken entity) {
+ AccessToken accessToken = baseMapper.selectById(entity.getId());
+ if (accessToken == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, accessToken, AccessToken::getId, AccessToken::getCreateTime);
+ return super.updateById(accessToken);
+ }
}
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java
index a03c74e..d1830cd 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java
@@ -21,6 +21,7 @@
import org.apache.streampark.console.base.domain.RestRequest;
import org.apache.streampark.console.base.exception.ApiAlertException;
import org.apache.streampark.console.base.mybatis.pager.MybatisPager;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.streampark.console.system.entity.Member;
import org.apache.streampark.console.system.entity.Team;
import org.apache.streampark.console.system.entity.User;
@@ -161,4 +162,14 @@
oldMember.setRoleId(member.getRoleId());
updateById(oldMember);
}
+
+ @Override
+ public boolean updateById(Member entity) {
+ Member member = baseMapper.selectById(entity.getId());
+ if (member == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, member, Member::getId, Member::getCreateTime);
+ return super.updateById(member);
+ }
}
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/RoleServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/RoleServiceImpl.java
index ed272fb..ae6e808 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/RoleServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/RoleServiceImpl.java
@@ -21,6 +21,7 @@
import org.apache.streampark.console.base.domain.RestRequest;
import org.apache.streampark.console.base.exception.ApiAlertException;
import org.apache.streampark.console.base.mybatis.pager.MybatisPager;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.streampark.console.system.entity.Role;
import org.apache.streampark.console.system.entity.RoleMenu;
import org.apache.streampark.console.system.mapper.RoleMapper;
@@ -102,7 +103,7 @@
@Override
public void updateRole(Role role) {
role.setModifyTime(new Date());
- baseMapper.updateById(role);
+ updateById(role);
LambdaQueryWrapper<RoleMenu> queryWrapper =
new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, role.getRoleId());
roleMenuMapper.delete(queryWrapper);
@@ -126,4 +127,14 @@
this.roleMenuMapper.insert(rm);
});
}
+
+ @Override
+ public boolean updateById(Role entity) {
+ Role role = baseMapper.selectById(entity.getRoleId());
+ if (role == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, role, Role::getRoleId, Role::getCreateTime);
+ return super.updateById(role);
+ }
}
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
index fea8bb8..5cc27fb 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
@@ -25,6 +25,7 @@
import org.apache.streampark.console.core.service.ProjectService;
import org.apache.streampark.console.core.service.VariableService;
import org.apache.streampark.console.core.service.application.ApplicationInfoService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.streampark.console.system.entity.Team;
import org.apache.streampark.console.system.entity.User;
import org.apache.streampark.console.system.mapper.TeamMapper;
@@ -135,6 +136,16 @@
}
@Override
+ public boolean updateById(Team entity) {
+ Team team = baseMapper.selectById(entity.getId());
+ if (team == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, team, Team::getId, Team::getCreateTime);
+ return super.updateById(team);
+ }
+
+ @Override
public List<Team> listByUserId(Long userId) {
User user =
Optional.ofNullable(userService.getById(userId))
diff --git a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
index 8ce2516..c63b109 100644
--- a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
+++ b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
@@ -31,6 +31,7 @@
import org.apache.streampark.console.core.service.ResourceService;
import org.apache.streampark.console.core.service.application.ApplicationInfoService;
import org.apache.streampark.console.core.service.application.ApplicationManageService;
+import org.apache.streampark.console.core.utils.BeanUtil;
import org.apache.streampark.console.system.authentication.JWTToken;
import org.apache.streampark.console.system.authentication.JWTUtil;
import org.apache.streampark.console.system.entity.Team;
@@ -136,6 +137,16 @@
return RestResponse.success();
}
+ @Override
+ public boolean updateById(User entity) {
+ User user = getById(entity.getUserId());
+ if (user == null) {
+ return false;
+ }
+ BeanUtil.copyIgnoreNull(entity, user, User::getUserId, User::getCreateTime);
+ return super.updateById(user);
+ }
+
private boolean needTransferResource(User existsUser, User user) {
if (User.STATUS_LOCK.equals(existsUser.getStatus())
|| User.STATUS_VALID.equals(user.getStatus())) {
@@ -162,7 +173,7 @@
String password = ShaHashUtils.encrypt(salt, userParam.getPassword());
user.setSalt(salt);
user.setPassword(password);
- this.baseMapper.updateById(user);
+ updateById(user);
}
@Override
@@ -199,7 +210,7 @@
User user = getById(userId);
AssertUtils.notNull(user);
user.setLastTeamId(teamId);
- this.baseMapper.updateById(user);
+ updateById(user);
}
@Override
@@ -229,7 +240,7 @@
if (teams.size() == 1) {
Team team = teams.get(0);
user.setLastTeamId(team.getId());
- this.baseMapper.updateById(user);
+ updateById(user);
}
}
}
diff --git a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/SavePointServiceTest.java b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/SavePointServiceTest.java
index e2851c4..ec6abbf 100644
--- a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/SavePointServiceTest.java
+++ b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/SavePointServiceTest.java
@@ -90,7 +90,7 @@
SavePointServiceImpl savePointServiceImpl = (SavePointServiceImpl) savePointService;
Application app = new Application();
Long appId = 1L;
- Long appCfgId = 1L;
+ Long appConfigId = 1L;
app.setId(appId);
// Test for non-(StreamPark job Or FlinkSQL job)
@@ -109,12 +109,13 @@
// Test for (StreamPark job Or FlinkSQL job) with application config just disabled checkpoint.
ApplicationConfig appCfg = new ApplicationConfig();
- appCfg.setId(appCfgId);
+ appCfg.setId(appConfigId);
appCfg.setAppId(appId);
appCfg.setContent("state.savepoints.dir=hdfs:///test");
appCfg.setFormat(ConfigFileTypeEnum.PROPERTIES.getValue());
configService.save(appCfg);
assertThat(savePointServiceImpl.getSavepointFromConfig(app)).isNull();
+ appCfg = configService.getById(appConfigId);
// Test for (StreamPark job or FlinkSQL job) with application config and enabled checkpoint and
// configured value.