Quellcode durchsuchen

Merge pull request #557 from qiaozhanwei/dev-1.1.0

 determine whether the tenant path exists when the tenant deletes and user chanage tenant update
乔占卫 vor 5 Jahren
Ursprung
Commit
e0da46d64f

+ 14 - 16
escheduler-api/src/main/java/cn/escheduler/api/service/TenantService.java

@@ -239,24 +239,25 @@ public class TenantService extends BaseService{
     if (PropertyUtils.getResUploadStartupState()){
       String tenantPath = HadoopUtils.getHdfsDataBasePath() + "/" + tenant.getTenantCode();
 
-      String resourcePath = HadoopUtils.getHdfsDir(tenant.getTenantCode());
-      FileStatus[] fileStatus = HadoopUtils.getInstance().listFileStatus(resourcePath);
-      if (fileStatus.length > 0) {
-        putMsg(result, Status.HDFS_TERANT_RESOURCES_FILE_EXISTS);
-        return result;
-      }
-      fileStatus = HadoopUtils.getInstance().listFileStatus(HadoopUtils.getHdfsUdfDir(tenant.getTenantCode()));
-      if (fileStatus.length > 0) {
-        putMsg(result, Status.HDFS_TERANT_UDFS_FILE_EXISTS);
-        return result;
-      }
+      if (HadoopUtils.getInstance().exists(tenantPath)){
+        String resourcePath = HadoopUtils.getHdfsDir(tenant.getTenantCode());
+        FileStatus[] fileStatus = HadoopUtils.getInstance().listFileStatus(resourcePath);
+        if (fileStatus.length > 0) {
+          putMsg(result, Status.HDFS_TERANT_RESOURCES_FILE_EXISTS);
+          return result;
+        }
+        fileStatus = HadoopUtils.getInstance().listFileStatus(HadoopUtils.getHdfsUdfDir(tenant.getTenantCode()));
+        if (fileStatus.length > 0) {
+          putMsg(result, Status.HDFS_TERANT_UDFS_FILE_EXISTS);
+          return result;
+        }
 
-      HadoopUtils.getInstance().delete(tenantPath, true);
+        HadoopUtils.getInstance().delete(tenantPath, true);
+      }
     }
 
     tenantMapper.deleteById(id);
     putMsg(result, Status.SUCCESS);
-    
     return result;
   }
 
@@ -269,9 +270,6 @@ public class TenantService extends BaseService{
   public Map<String, Object> queryTenantList(User loginUser) {
 
     Map<String, Object> result = new HashMap<>(5);
-//    if (checkAdmin(loginUser, result)) {
-//      return result;
-//    }
 
     List<Tenant> resourceList = tenantMapper.queryAllTenant();
     result.put(Constants.DATA_LIST, resourceList);

+ 20 - 20
escheduler-api/src/main/java/cn/escheduler/api/service/UsersService.java

@@ -245,35 +245,35 @@ public class UsersService extends BaseService {
             Tenant newTenant = tenantMapper.queryById(tenantId);
             if (newTenant != null) {
                 // if hdfs startup
-                if (PropertyUtils.getResUploadStartupState()){
+                if (PropertyUtils.getResUploadStartupState() && oldTenant != null){
                     String newTenantCode = newTenant.getTenantCode();
                     String oldResourcePath = HadoopUtils.getHdfsDataBasePath() + "/" + oldTenant.getTenantCode() + "/resources";
                     String oldUdfsPath = HadoopUtils.getHdfsUdfDir(oldTenant.getTenantCode());
 
+                    if (HadoopUtils.getInstance().exists(oldResourcePath)){
+                        String newResourcePath = HadoopUtils.getHdfsDataBasePath() + "/" + newTenantCode + "/resources";
+                        String newUdfsPath = HadoopUtils.getHdfsUdfDir(newTenantCode);
 
-                    String newResourcePath = HadoopUtils.getHdfsDataBasePath() + "/" + newTenantCode + "/resources";
-                    String newUdfsPath = HadoopUtils.getHdfsUdfDir(newTenantCode);
-
-                    //file resources list
-                    List<Resource> fileResourcesList = resourceMapper.queryResourceCreatedByUser(userId, 0);
-                    if (CollectionUtils.isNotEmpty(fileResourcesList)) {
-                        for (Resource resource : fileResourcesList) {
-                            HadoopUtils.getInstance().copy(oldResourcePath + "/" + resource.getAlias(), newResourcePath, false, true);
+                        //file resources list
+                        List<Resource> fileResourcesList = resourceMapper.queryResourceCreatedByUser(userId, 0);
+                        if (CollectionUtils.isNotEmpty(fileResourcesList)) {
+                            for (Resource resource : fileResourcesList) {
+                                HadoopUtils.getInstance().copy(oldResourcePath + "/" + resource.getAlias(), newResourcePath, false, true);
+                            }
                         }
-                    }
 
-                    //udf resources
-                    List<Resource> udfResourceList = resourceMapper.queryResourceCreatedByUser(userId, 1);
-                    if (CollectionUtils.isNotEmpty(udfResourceList)) {
-                        for (Resource resource : udfResourceList) {
-                            HadoopUtils.getInstance().copy(oldUdfsPath + "/" + resource.getAlias(), newUdfsPath, false, true);
+                        //udf resources
+                        List<Resource> udfResourceList = resourceMapper.queryResourceCreatedByUser(userId, 1);
+                        if (CollectionUtils.isNotEmpty(udfResourceList)) {
+                            for (Resource resource : udfResourceList) {
+                                HadoopUtils.getInstance().copy(oldUdfsPath + "/" + resource.getAlias(), newUdfsPath, false, true);
+                            }
                         }
-                    }
-
-                    //Delete the user from the old tenant directory
-                    String oldUserPath = HadoopUtils.getHdfsDataBasePath() + "/" + oldTenant.getTenantCode() + "/home/" + userId;
-                    HadoopUtils.getInstance().delete(oldUserPath, true);
 
+                        //Delete the user from the old tenant directory
+                        String oldUserPath = HadoopUtils.getHdfsDataBasePath() + "/" + oldTenant.getTenantCode() + "/home/" + userId;
+                        HadoopUtils.getInstance().delete(oldUserPath, true);
+                    }
 
                     //create user in the new tenant directory
                     String newUserPath = HadoopUtils.getHdfsDataBasePath() + "/" + newTenant.getTenantCode() + "/home/" + user.getId();