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;

Reply via email to