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

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

commit cf5fc3b9007d0c8fe0a5d106dd778535564c0363
Author: Zhiting Guo <35057824+fre...@users.noreply.github.com>
AuthorDate: Tue Jun 6 14:13:06 2023 +0800

    KYLIN-5706 [FOLLOW UP] fix bug
    
    ---------
    
    Co-authored-by: Zhiting Guo <zhiting....@kyligence.io>
---
 .../src/main/java/org/apache/kylin/common/util/StringHelper.java    | 5 ++++-
 .../test/java/org/apache/kylin/common/util/StringHelperTest.java    | 6 +++++-
 .../main/java/org/apache/kylin/tool/setup/KapGetClusterInfo.java    | 2 +-
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git 
a/src/core-common/src/main/java/org/apache/kylin/common/util/StringHelper.java 
b/src/core-common/src/main/java/org/apache/kylin/common/util/StringHelper.java
index f4cf35775e..7c31565573 100644
--- 
a/src/core-common/src/main/java/org/apache/kylin/common/util/StringHelper.java
+++ 
b/src/core-common/src/main/java/org/apache/kylin/common/util/StringHelper.java
@@ -248,7 +248,10 @@ public class StringHelper {
                 throw new IllegalArgumentException("Unexpected args found: " + 
Arrays.toString(args));
             }
             // a'b'c -> a b c -> 'a'\''b'\''c'
-            // ''a'b'c'' -> _ _ a b c _ _ -> \\'\\''a'\\''b'\\''c'\\'\\'
+            // ''a'b'c'' -> 'a'b'c' -> _ a b c _ -> \\''a'\\''b'\\''c'\\'
+            if (value.startsWith("'") && value.endsWith("'") && value.length() 
>= 2) {
+                value = value.substring(1, value.length() - 1);
+            }
             String[] splitValues = value.split("'", -1);
             value = Arrays.stream(splitValues).map(v -> v.isEmpty() ? v : "'" 
+ v + "'")
                     .collect(Collectors.joining("\\'"));
diff --git 
a/src/core-common/src/test/java/org/apache/kylin/common/util/StringHelperTest.java
 
b/src/core-common/src/test/java/org/apache/kylin/common/util/StringHelperTest.java
index 5f2d7befeb..517e5e08af 100644
--- 
a/src/core-common/src/test/java/org/apache/kylin/common/util/StringHelperTest.java
+++ 
b/src/core-common/src/test/java/org/apache/kylin/common/util/StringHelperTest.java
@@ -147,6 +147,10 @@ class StringHelperTest {
     void testEscapeArguments() {
         Assertions.assertEquals("", StringHelper.escapeShellArguments(""));
         Assertions.assertEquals("-u 'root'", 
StringHelper.escapeShellArguments("-u   root  "));
+        Assertions.assertEquals("-u 'root'", 
StringHelper.escapeShellArguments("-u   'root'  "));
+        Assertions.assertEquals("-u \\''root'\\'", 
StringHelper.escapeShellArguments("-u   ''root''  "));
+        Assertions.assertEquals("-u \\'", 
StringHelper.escapeShellArguments("-u '"));
+        Assertions.assertEquals("-u ", StringHelper.escapeShellArguments("-u 
''"));
         Assertions.assertEquals("-u 'root'", 
StringHelper.escapeShellArguments("-u root"));
         Assertions.assertEquals("-UserName 'root'", 
StringHelper.escapeShellArguments("-UserName root"));
         Assertions.assertEquals("-user='root'", 
StringHelper.escapeShellArguments("-user=root"));
@@ -156,7 +160,7 @@ class StringHelperTest {
         Assertions.assertEquals("-UserName 'root'\\''$(ls)'",
                 StringHelper.escapeShellArguments("-UserName root'$(ls)"));
         Assertions.assertEquals("-user='roo'\\''$(ls)t'", 
StringHelper.escapeShellArguments("-user=roo'$(ls)t"));
-        Assertions.assertEquals("-user=\\''roo'\\''$(ls)'\\''t'\\'",
+        Assertions.assertEquals("-user='roo'\\''$(ls)'\\''t'",
                 StringHelper.escapeShellArguments("-user='roo'$(ls)'t'"));
 
         Assertions.assertThrows(IllegalArgumentException.class, () -> 
StringHelper.escapeShellArguments("u root"));
diff --git 
a/src/tool/src/main/java/org/apache/kylin/tool/setup/KapGetClusterInfo.java 
b/src/tool/src/main/java/org/apache/kylin/tool/setup/KapGetClusterInfo.java
index fa8a2df26a..74d518c843 100644
--- a/src/tool/src/main/java/org/apache/kylin/tool/setup/KapGetClusterInfo.java
+++ b/src/tool/src/main/java/org/apache/kylin/tool/setup/KapGetClusterInfo.java
@@ -105,7 +105,7 @@ public class KapGetClusterInfo {
     public void getYarnMetrics() throws IOException, ShellException, 
YarnException {
         extractYarnMasterHost();
         String url = yarnMasterUrlBase + YARN_METRICS_SUFFIX;
-        if (StringHelper.validateUrl(url)) {
+        if (!StringHelper.validateUrl(url)) {
             throw new IllegalArgumentException("Url contains disallowed chars, 
url: " + url);
         }
         String command = "curl -s -k --negotiate -u : " + url;

Reply via email to