You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2018/03/11 06:28:11 UTC

[kylin] 02/04: KYLIN-3271 Optimize sub-path check of ResourceTool

This is an automated email from the ASF dual-hosted git repository.

liyang pushed a commit to branch sync
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 24d2d6590d1e31edb5f5b7da11c51c477f9d2dcf
Author: nichunen <ch...@kyligence.io>
AuthorDate: Fri Mar 2 17:29:12 2018 +0800

    KYLIN-3271 Optimize sub-path check of ResourceTool
---
 .../apache/kylin/common/persistence/ResourceTool.java    | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java
index 6c6189d..f270743 100644
--- a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java
+++ b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java
@@ -25,6 +25,7 @@ import java.io.InputStreamReader;
 import java.util.List;
 import java.util.NavigableSet;
 import java.util.Set;
+import java.util.TreeSet;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.kylin.common.KylinConfig;
@@ -32,16 +33,22 @@ import org.apache.kylin.common.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 
 public class ResourceTool {
 
     private static String[] includes = null;
     private static String[] excludes = null;
+    private static final TreeSet<String> pathsSkipChildrenCheck = new TreeSet<>();
+
     private static final Logger logger = LoggerFactory.getLogger(ResourceTool.class);
 
     private static final Set<String> IMMUTABLE_PREFIX = Sets.newHashSet("/UUID");
 
+    private static final List<String> SKIP_CHILDREN_CHECK_RESOURCE_ROOT = Lists
+            .newArrayList(ResourceStore.EXECUTE_RESOURCE_ROOT, ResourceStore.EXECUTE_OUTPUT_RESOURCE_ROOT);
+
     public static void main(String[] args) throws IOException {
         args = StringUtil.filterSystemArgs(args);
 
@@ -166,6 +173,9 @@ public class ResourceTool {
 
         logger.info("Copy from {} to {}", src, dst);
 
+        for (String resourceRoot : SKIP_CHILDREN_CHECK_RESOURCE_ROOT) {
+            pathsSkipChildrenCheck.addAll(src.listResourcesRecursively(resourceRoot));
+        }
         copyR(src, dst, path, copyImmutableResource);
     }
 
@@ -203,7 +213,11 @@ public class ResourceTool {
             return;
         }
 
-        NavigableSet<String> children = src.listResources(path);
+        NavigableSet<String> children = null;
+
+        if (!pathsSkipChildrenCheck.contains(path)) {
+            children = src.listResources(path);
+        }
 
         if (children == null) {
             // case of resource (not a folder)

-- 
To stop receiving notification emails like this one, please contact
liyang@apache.org.