You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by zj...@apache.org on 2020/04/04 15:28:57 UTC

[zeppelin] branch master updated: [ZEPPELIN-4718] Fix Regression HDFS Notebook Storage

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

zjffdu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git


The following commit(s) were added to refs/heads/master by this push:
     new 6c10bb2  [ZEPPELIN-4718] Fix Regression HDFS Notebook Storage
6c10bb2 is described below

commit 6c10bb2652c8eb9777c68f07941e453ef59f7008
Author: Philipp Dallig <ph...@gmail.com>
AuthorDate: Thu Apr 2 11:21:06 2020 +0200

    [ZEPPELIN-4718] Fix Regression HDFS Notebook Storage
    
    ### What is this PR for?
    Fixed a regression in #3668.
    With this fix zeppelin can save the notebook in HDFS.
    
    ### What type of PR is it?
    Regression Fix
    
    ### What is the Jira issue?
    * https://issues.apache.org/jira/browse/ZEPPELIN-4718
    
    ### How should this be tested?
    * **Travis-Link**: https://travis-ci.org/github/Reamer/zeppelin/builds/670126594
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No
    
    Author: Philipp Dallig <ph...@gmail.com>
    
    Closes #3713 from Reamer/notebook_dir_hdfs and squashes the following commits:
    
    0117609fd [Philipp Dallig] Check for filesystem with a scheme
---
 .../zeppelin/conf/ZeppelinConfiguration.java       | 12 +++++++++-
 .../zeppelin/conf/ZeppelinConfigurationTest.java   | 27 +++++++++++++++++++++-
 2 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
index cbd894e..75391de 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
@@ -20,6 +20,8 @@ package org.apache.zeppelin.conf;
 import com.google.common.annotations.VisibleForTesting;
 import java.io.File;
 import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -583,7 +585,7 @@ public class ZeppelinConfiguration extends XMLConfiguration {
   }
 
   public String getRelativeDir(String path) {
-    if (path != null && path.startsWith(File.separator) || isWindowsPath(path)) {
+    if (path != null && (path.startsWith(File.separator) || isWindowsPath(path) || isPathWithScheme(path))) {
       return path;
     } else {
       return getString(ConfVars.ZEPPELIN_HOME) + File.separator + path;
@@ -602,6 +604,14 @@ public class ZeppelinConfiguration extends XMLConfiguration {
     return path.matches("^[A-Za-z]:\\\\.*");
   }
 
+  public boolean isPathWithScheme(String path){
+      try {
+        return StringUtils.isNotBlank(new URI(path).getScheme());
+    } catch (URISyntaxException e) {
+        return false;
+    }
+  }
+
   public boolean isAnonymousAllowed() {
     if (anonymousAllowed == null) {
       anonymousAllowed = this.getShiroPath().equals(StringUtils.EMPTY);
diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/conf/ZeppelinConfigurationTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/conf/ZeppelinConfigurationTest.java
index c730e5f..001860b 100644
--- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/conf/ZeppelinConfigurationTest.java
+++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/conf/ZeppelinConfigurationTest.java
@@ -16,9 +16,10 @@
  */
 package org.apache.zeppelin.conf;
 
-import junit.framework.Assert;
+
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.zeppelin.conf.ZeppelinConfiguration.ConfVars;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -79,6 +80,30 @@ public class ZeppelinConfigurationTest {
   }
 
   @Test
+  public void isPathWithSchemeTestTrue() throws ConfigurationException {
+
+    ZeppelinConfiguration conf = new ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"));
+    Boolean isIt = conf.isPathWithScheme("hdfs://hadoop.example.com/zeppelin/notebook");
+    Assert.assertTrue(isIt);
+  }
+
+  @Test
+  public void isPathWithSchemeTestFalse() throws ConfigurationException {
+
+    ZeppelinConfiguration conf = new ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"));
+    Boolean isIt = conf.isPathWithScheme("~/test/file.xml");
+    Assert.assertFalse(isIt);
+  }
+
+  @Test
+  public void isPathWithInvalidSchemeTest() throws ConfigurationException {
+
+    ZeppelinConfiguration conf = new ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"));
+    Boolean isIt = conf.isPathWithScheme("c:\\test\\file.txt");
+    Assert.assertFalse(isIt);
+  }
+
+  @Test
   public void getNotebookDirTest() throws ConfigurationException {
     ZeppelinConfiguration conf = new ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"));
     String notebookLocation = conf.getNotebookDir();