Browse Source

fix NPE when grant resource or save process definition (#2434)

Co-authored-by: dailidong <dailidong66@gmail.com>
lgcareer 5 năm trước cách đây
mục cha
commit
8b4eb20b5c

+ 4 - 2
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();

+ 14 - 7
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);

+ 5 - 5
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;
 

+ 5 - 5
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;