This is an automated email from the ASF dual-hosted git repository.
lidongdai pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 8b4eb20 fix NPE when grant resource or save process definition (#2434)
8b4eb20 is described below
commit 8b4eb20b5cd27121cfe1c4bd57bb2369fef884d8
Author: lgcareer <[email protected]>
AuthorDate: Wed Apr 15 22:28:49 2020 +0800
fix NPE when grant resource or save process definition (#2434)
Co-authored-by: dailidong <[email protected]>
---
.../api/service/ProcessDefinitionService.java | 6 ++++--
.../dolphinscheduler/api/service/UsersService.java | 21 ++++++++++++++-------
.../1.2.2_schema/mysql/dolphinscheduler_ddl.sql | 10 +++++-----
.../postgresql/dolphinscheduler_ddl.sql | 10 +++++-----
4 files changed, 28 insertions(+), 19 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
index eed9c78..3684923 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
@@ -173,8 +173,10 @@ public class ProcessDefinitionService extends
BaseDAGService {
for(TaskNode taskNode : tasks){
String taskParameter = taskNode.getParams();
AbstractParameters params =
TaskParametersUtils.getParameters(taskNode.getType(),taskParameter);
- Set<Integer> tempSet =
params.getResourceFilesList().stream().map(t->t.getId()).collect(Collectors.toSet());
- resourceIds.addAll(tempSet);
+ if (CollectionUtils.isNotEmpty(params.getResourceFilesList())) {
+ Set<Integer> tempSet =
params.getResourceFilesList().stream().map(t->t.getId()).collect(Collectors.toSet());
+ resourceIds.addAll(tempSet);
+ }
}
StringBuilder sb = new StringBuilder();
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java
index 4671188..220b4fc 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java
@@ -423,6 +423,7 @@ public class UsersService extends BaseService {
* @param projectIds project id array
* @return grant result code
*/
+ @Transactional(rollbackFor = Exception.class)
public Map<String, Object> grantProject(User loginUser, int userId, String
projectIds) {
Map<String, Object> result = new HashMap<>(5);
result.put(Constants.STATUS, false);
@@ -472,6 +473,7 @@ public class UsersService extends BaseService {
* @param resourceIds resource id array
* @return grant result code
*/
+ @Transactional(rollbackFor = Exception.class)
public Map<String, Object> grantResources(User loginUser, int userId,
String resourceIds) {
Map<String, Object> result = new HashMap<>(5);
//only admin can operate
@@ -484,17 +486,20 @@ public class UsersService extends BaseService {
return result;
}
- String[] resourceFullIdArr = resourceIds.split(",");
- // need authorize resource id set
Set<Integer> needAuthorizeResIds = new HashSet();
- for (String resourceFullId : resourceFullIdArr) {
- String[] resourceIdArr = resourceFullId.split("-");
- for (int i=0;i<=resourceIdArr.length-1;i++) {
- int resourceIdValue = Integer.parseInt(resourceIdArr[i]);
- needAuthorizeResIds.add(resourceIdValue);
+ if (StringUtils.isNotBlank(resourceIds)) {
+ String[] resourceFullIdArr = resourceIds.split(",");
+ // need authorize resource id set
+ for (String resourceFullId : resourceFullIdArr) {
+ String[] resourceIdArr = resourceFullId.split("-");
+ for (int i=0;i<=resourceIdArr.length-1;i++) {
+ int resourceIdValue = Integer.parseInt(resourceIdArr[i]);
+ needAuthorizeResIds.add(resourceIdValue);
+ }
}
}
+
//get the authorized resource id list by user id
List<Resource> oldAuthorizedRes =
resourceMapper.queryAuthorizedResourceList(userId);
//if resource type is UDF,need check whether it is bound by UDF functon
@@ -565,6 +570,7 @@ public class UsersService extends BaseService {
* @param udfIds udf id array
* @return grant result code
*/
+ @Transactional(rollbackFor = Exception.class)
public Map<String, Object> grantUDFFunction(User loginUser, int userId,
String udfIds) {
Map<String, Object> result = new HashMap<>(5);
@@ -611,6 +617,7 @@ public class UsersService extends BaseService {
* @param datasourceIds data source id array
* @return grant result code
*/
+ @Transactional(rollbackFor = Exception.class)
public Map<String, Object> grantDataSource(User loginUser, int userId,
String datasourceIds) {
Map<String, Object> result = new HashMap<>(5);
result.put(Constants.STATUS, false);
diff --git a/sql/upgrade/1.2.2_schema/mysql/dolphinscheduler_ddl.sql
b/sql/upgrade/1.2.2_schema/mysql/dolphinscheduler_ddl.sql
index 33d801d..7432396 100644
--- a/sql/upgrade/1.2.2_schema/mysql/dolphinscheduler_ddl.sql
+++ b/sql/upgrade/1.2.2_schema/mysql/dolphinscheduler_ddl.sql
@@ -167,7 +167,7 @@ CREATE PROCEDURE
ac_dolphin_T_t_ds_process_instance_A_worker_group()
AND TABLE_SCHEMA=(SELECT DATABASE())
AND COLUMN_NAME ='worker_group')
THEN
- ALTER TABLE t_ds_process_instance ADD `worker_group` varchar(255)
DEFAULT '' COMMENT 'worker group';
+ ALTER TABLE t_ds_process_instance ADD `worker_group` varchar(64)
DEFAULT '' COMMENT 'worker group';
END IF;
END;
@@ -207,7 +207,7 @@ CREATE PROCEDURE
ac_dolphin_T_t_ds_task_instance_A_worker_group()
AND TABLE_SCHEMA=(SELECT DATABASE())
AND COLUMN_NAME ='worker_group')
THEN
- ALTER TABLE t_ds_task_instance ADD `worker_group` varchar(255)
DEFAULT '' COMMENT 'worker group';
+ ALTER TABLE t_ds_task_instance ADD `worker_group` varchar(64) DEFAULT
'' COMMENT 'worker group';
END IF;
END;
@@ -247,7 +247,7 @@ CREATE PROCEDURE
ac_dolphin_T_t_ds_schedules_A_worker_group()
AND TABLE_SCHEMA=(SELECT DATABASE())
AND COLUMN_NAME ='worker_group')
THEN
- ALTER TABLE t_ds_schedules ADD `worker_group` varchar(255) DEFAULT ''
COMMENT 'worker group';
+ ALTER TABLE t_ds_schedules ADD `worker_group` varchar(64) DEFAULT ''
COMMENT 'worker group';
END IF;
END;
@@ -287,7 +287,7 @@ CREATE PROCEDURE ac_dolphin_T_t_ds_command_A_worker_group()
AND TABLE_SCHEMA=(SELECT DATABASE())
AND COLUMN_NAME ='worker_group')
THEN
- ALTER TABLE t_ds_command ADD `worker_group` varchar(255) DEFAULT ''
COMMENT 'worker group';
+ ALTER TABLE t_ds_command ADD `worker_group` varchar(64) DEFAULT ''
COMMENT 'worker group';
END IF;
END;
@@ -327,7 +327,7 @@ CREATE PROCEDURE
ac_dolphin_T_t_ds_error_command_A_worker_group()
AND TABLE_SCHEMA=(SELECT DATABASE())
AND COLUMN_NAME ='worker_group')
THEN
- ALTER TABLE t_ds_error_command ADD `worker_group` varchar(255)
DEFAULT '' COMMENT 'worker group';
+ ALTER TABLE t_ds_error_command ADD `worker_group` varchar(64) DEFAULT
'' COMMENT 'worker group';
END IF;
END;
diff --git a/sql/upgrade/1.2.2_schema/postgresql/dolphinscheduler_ddl.sql
b/sql/upgrade/1.2.2_schema/postgresql/dolphinscheduler_ddl.sql
index a4fdc2d..5312d89 100644
--- a/sql/upgrade/1.2.2_schema/postgresql/dolphinscheduler_ddl.sql
+++ b/sql/upgrade/1.2.2_schema/postgresql/dolphinscheduler_ddl.sql
@@ -164,7 +164,7 @@ BEGIN
AND TABLE_NAME='t_ds_process_instance'
AND COLUMN_NAME ='worker_group')
THEN
- ALTER TABLE t_ds_process_instance ADD COLUMN worker_group
varchar(255) DEFAULT null;
+ ALTER TABLE t_ds_process_instance ADD COLUMN worker_group varchar(64)
DEFAULT null;
END IF;
END;
$$ LANGUAGE plpgsql;
@@ -207,7 +207,7 @@ BEGIN
AND TABLE_NAME='t_ds_task_instance'
AND COLUMN_NAME ='worker_group')
THEN
- ALTER TABLE t_ds_task_instance ADD COLUMN worker_group varchar(255)
DEFAULT null;
+ ALTER TABLE t_ds_task_instance ADD COLUMN worker_group varchar(64)
DEFAULT null;
END IF;
END;
$$ LANGUAGE plpgsql;
@@ -249,7 +249,7 @@ BEGIN
AND TABLE_NAME='t_ds_schedules'
AND COLUMN_NAME ='worker_group')
THEN
- ALTER TABLE t_ds_schedules ADD COLUMN worker_group varchar(255)
DEFAULT null;
+ ALTER TABLE t_ds_schedules ADD COLUMN worker_group varchar(64)
DEFAULT null;
END IF;
END;
$$ LANGUAGE plpgsql;
@@ -291,7 +291,7 @@ BEGIN
AND TABLE_NAME='t_ds_command'
AND COLUMN_NAME ='worker_group')
THEN
- ALTER TABLE t_ds_command ADD COLUMN worker_group varchar(255) DEFAULT
null;
+ ALTER TABLE t_ds_command ADD COLUMN worker_group varchar(64) DEFAULT
null;
END IF;
END;
$$ LANGUAGE plpgsql;
@@ -333,7 +333,7 @@ BEGIN
AND TABLE_NAME='t_ds_error_command'
AND COLUMN_NAME ='worker_group')
THEN
- ALTER TABLE t_ds_error_command ADD COLUMN worker_group varchar(255)
DEFAULT null;
+ ALTER TABLE t_ds_error_command ADD COLUMN worker_group varchar(64)
DEFAULT null;
END IF;
END;
$$ LANGUAGE plpgsql;