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 bd28cbb  [hotfix] Fix CI test (DirAccessTest)
bd28cbb is described below

commit bd28cbba991dff161db95ffea9d999b1ab349755
Author: Jeff Zhang <zjf...@apache.org>
AuthorDate: Sun Feb 16 16:21:11 2020 +0800

    [hotfix] Fix CI test (DirAccessTest)
---
 .travis.yml                                        |   2 +-
 .../apache/zeppelin/helium/DevZeppelinContext.java |   4 +-
 kotlin/README.md                                   |   2 +-
 .../spark/kotlin/KotlinZeppelinBindings.java       |   6 +-
 .../zeppelin-interpreter-api/pom.xml               | 181 ---------------------
 .../apache/zeppelin/cluster/ClusterManager.java    |  14 +-
 .../zeppelin/cluster/ClusterManagerClient.java     |  14 +-
 .../zeppelin/cluster/ClusterManagerServer.java     |  18 +-
 .../zeppelin/conf/ZeppelinConfiguration.java       |   4 +
 .../remote/RemoteInterpreterServer.java            |   7 +-
 .../zeppelin/cluster/ClusterMultiNodeTest.java     |   6 +-
 .../zeppelin/cluster/ClusterSingleNodeTest.java    |   9 +-
 .../{zeppelin-site.xml => zeppelin-site-test.xml}  |   0
 .../launcher/ClusterInterpreterCheckThread.java    |   4 +-
 .../launcher/ClusterInterpreterLauncher.java       |   4 +-
 .../interpreter/launcher/ClusterMockTest.java      |   6 +-
 .../org/apache/zeppelin/rest/ClusterRestApi.java   |  12 +-
 .../org/apache/zeppelin/server/ZeppelinServer.java |  15 +-
 .../org/apache/zeppelin/socket/NotebookServer.java |   2 +-
 .../apache/zeppelin/cluster/ClusterEventTest.java  |  15 +-
 .../zeppelin/cluster/ZeppelinServerMock.java       |   7 +-
 .../org/apache/zeppelin/recovery/RecoveryTest.java |   3 +-
 .../apache/zeppelin/rest/AbstractTestRestApi.java  |  15 +-
 .../apache/zeppelin/security/DirAccessTest.java    |  44 +++--
 .../interpreter/InterpreterSettingManager.java     |   2 +-
 .../zeppelin/notebook/AuthorizationService.java    |   2 +-
 .../org/apache/zeppelin/plugin/PluginManager.java  |   9 +-
 .../recovery/FileSystemRecoveryStorageTest.java    |   5 +-
 28 files changed, 151 insertions(+), 261 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 896b593..2311bf2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -97,7 +97,7 @@ matrix:
     - sudo: required
       jdk: "openjdk8"
       dist: xenial
-      env: BUILD_PLUGINS="false" PYTHON="3" R="true" PROFILE="-Phelium-dev 
-Pexamples" BUILD_FLAG="install -Pbuild-distr -DskipRat -DskipTests" 
TEST_FLAG="verify -Pusing-packaged-distr -DskipRat" MODULES="-pl 
zeppelin-server,spark/spark-dependencies,markdown,angular,shell -am" 
TEST_PROJECTS="-Dtests.to.exclude=**/org/apache/zeppelin/spark/*,**/HeliumApplicationFactoryTest.java
 -DfailIfNoTests=false"
+      env: BUILD_PLUGINS="true" PYTHON="3" R="true" PROFILE="-Phelium-dev 
-Pexamples" BUILD_FLAG="install -Pbuild-distr -DskipRat -DskipTests" 
TEST_FLAG="verify -Pusing-packaged-distr -DskipRat" MODULES="-pl 
zeppelin-server,zeppelin-web,spark/spark-dependencies,markdown,angular,shell 
-am" 
TEST_PROJECTS="-Dtests.to.exclude=**/org/apache/zeppelin/spark/*,**/HeliumApplicationFactoryTest.java
 -DfailIfNoTests=false"
 
     # Test selenium with spark module for spark 2.3
     - jdk: "openjdk8"
diff --git 
a/helium-dev/src/main/java/org/apache/zeppelin/helium/DevZeppelinContext.java 
b/helium-dev/src/main/java/org/apache/zeppelin/helium/DevZeppelinContext.java
index d3bf08f..1ac4afe 100644
--- 
a/helium-dev/src/main/java/org/apache/zeppelin/helium/DevZeppelinContext.java
+++ 
b/helium-dev/src/main/java/org/apache/zeppelin/helium/DevZeppelinContext.java
@@ -18,7 +18,7 @@
 
 package org.apache.zeppelin.helium;
 
-import org.apache.zeppelin.interpreter.BaseZeppelinContext;
+import org.apache.zeppelin.interpreter.ZeppelinContext;
 import org.apache.zeppelin.interpreter.InterpreterHookRegistry;
 
 import java.util.List;
@@ -27,7 +27,7 @@ import java.util.Map;
 /**
  * ZeppelinContext for DevInterpreter
  */
-public class DevZeppelinContext extends BaseZeppelinContext {
+public class DevZeppelinContext extends ZeppelinContext {
   public DevZeppelinContext(InterpreterHookRegistry hooks, int maxResult) {
     super(hooks, maxResult);
   }
diff --git a/kotlin/README.md b/kotlin/README.md
index 8e3420c..d66c5a7 100644
--- a/kotlin/README.md
+++ b/kotlin/README.md
@@ -51,7 +51,7 @@ as in `sparkContext` option `spark.repl.class.outputDir`.
 
 ### Kotlin Spark Interpreter
 Kotlin interpreter in Spark intepreter group takes `SparkSession`, 
`JavaSparkContext`, `SQLContext` 
-and `BaseZeppelinContext` from `SparkInterpreter` in the same session and 
binds them in its scope.
+and `ZeppelinContext` from `SparkInterpreter` in the same session and binds 
them in its scope.
   
 ## Testing
 Kotlin Interpreter and Spark Kotlin Interpreter come with unit tests. 
diff --git 
a/spark/interpreter/src/main/java/org/apache/zeppelin/spark/kotlin/KotlinZeppelinBindings.java
 
b/spark/interpreter/src/main/java/org/apache/zeppelin/spark/kotlin/KotlinZeppelinBindings.java
index 252a936..f315838 100644
--- 
a/spark/interpreter/src/main/java/org/apache/zeppelin/spark/kotlin/KotlinZeppelinBindings.java
+++ 
b/spark/interpreter/src/main/java/org/apache/zeppelin/spark/kotlin/KotlinZeppelinBindings.java
@@ -25,15 +25,15 @@ public class KotlinZeppelinBindings {
   //Simpler Kotlin syntax for z.select
   public static final String Z_SELECT_KOTLIN_SYNTAX =
       "import org.apache.zeppelin.display.ui.OptionInput.ParamOption\n" +
-      "import org.apache.zeppelin.interpreter.BaseZeppelinContext\n" +
+      "import org.apache.zeppelin.interpreter.ZeppelinContext\n" +
       "\n" +
-      "fun BaseZeppelinContext.select(name: String, defaultValue: Any?, " +
+      "fun ZeppelinContext.select(name: String, defaultValue: Any?, " +
           "options: List<Pair<Any?, String>>): Any? {\n" +
       "    return select(name, defaultValue, " +
           "options.map{ ParamOption(it.first, it.second) }.toTypedArray())\n" +
       "}\n" +
       "\n" +
-      "fun BaseZeppelinContext.select(name: String, options: List<Pair<Any?, 
String>>): Any? {\n" +
+      "fun ZeppelinContext.select(name: String, options: List<Pair<Any?, 
String>>): Any? {\n" +
       "    return select(name, \"\", options)\n" +
       "}";
 
diff --git a/zeppelin-interpreter-shaded/zeppelin-interpreter-api/pom.xml 
b/zeppelin-interpreter-shaded/zeppelin-interpreter-api/pom.xml
deleted file mode 100644
index d2cb882..0000000
--- a/zeppelin-interpreter-shaded/zeppelin-interpreter-api/pom.xml
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~    http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <artifactId>zeppelin</artifactId>
-    <groupId>org.apache.zeppelin</groupId>
-    <version>0.9.0-SNAPSHOT</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <groupId>org.apache.zeppelin</groupId>
-  <artifactId>zeppelin-interpreter-shaded</artifactId>
-  <packaging>jar</packaging>
-  <version>0.9.0-SNAPSHOT</version>
-  <name>Zeppelin: Interpreter Shaded</name>
-  <description>Zeppelin Interpreter Shaded</description>
-
-  <properties>
-    <!--plugin versions-->
-    <plugin.shade.version>2.3</plugin.shade.version>
-    
<shaded.dependency.prefix>org.apache.zeppelin.shaded</shaded.dependency.prefix>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.zeppelin</groupId>
-      <artifactId>zeppelin-interpreter</artifactId>
-      <version>0.9.0-SNAPSHOT</version>
-      <optional>true</optional>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-shade-plugin</artifactId>
-        <version>${plugin.shade.version}</version>
-        <configuration>
-          <artifactSet>
-            <excludes>
-              <!-- Leave slf4j unshaded so downstream users can configure 
logging. -->
-              <exclude>org.slf4j:slf4j-api</exclude>
-              <exclude>org.slf4j:slf4j-log4j12</exclude>
-              <!-- Leave commons-logging unshaded so downstream users can 
configure logging. -->
-              <exclude>commons-logging:commons-logging</exclude>
-              <!-- Leave commons-exec unshaded so downstream users can use 
ProcessLauncher. -->
-              <exclude>org.apache.commons:commons-exec</exclude>
-              <!-- Leave log4j unshaded so downstream users can configure 
logging. -->
-              <exclude>log4j:log4j</exclude>
-            </excludes>
-          </artifactSet>
-          <filters>
-            <filter>
-              <artifact>*:*</artifact>
-              <excludes>
-                <exclude>META-INF/*.SF</exclude>
-                <exclude>META-INF/*.DSA</exclude>
-                <exclude>META-INF/*.RSA</exclude>
-              </excludes>
-            </filter>
-          </filters>
-          <transformers>
-            <transformer 
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"
 />
-            <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-              <resource>reference.conf</resource>
-            </transformer>
-            <transformer 
implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer"/>
-            <transformer 
implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
-              <resource>NOTICE.txt</resource>
-            </transformer>
-            <transformer 
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
-              <resource>META-INF/LICENSE.txt</resource>
-              <file>${basedir}/../../LICENSE.txt</file>
-            </transformer>
-            <transformer 
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
-              <resource>META-INF/NOTICE.txt</resource>
-              <file>${basedir}/../../NOTICE.txt</file>
-            </transformer>
-          </transformers>
-          <relocations>
-            <relocation>
-              <pattern>org</pattern>
-              <shadedPattern>${shaded.dependency.prefix}.org</shadedPattern>
-              <excludes>
-                <exclude>org/apache/zeppelin/*</exclude>
-                <exclude>org/apache/zeppelin/**/*</exclude>
-                <exclude>org/apache/thrift/*</exclude>
-                <exclude>org/apache/thrift/**/*</exclude>
-                <exclude>org/slf4j/*</exclude>
-                <exclude>org/slf4j/**/*</exclude>
-                <exclude>org/apache/commons/logging/*</exclude>
-                <exclude>org/apache/commons/logging/**/*</exclude>
-                <exclude>org/apache/commons/exec/*</exclude>
-                <exclude>org/apache/commons/exec/**/*</exclude>
-                <exclude>org/apache/log4j/*</exclude>
-                <exclude>org/apache/log4j/**/*</exclude>
-                <exclude>org/sonatype/*</exclude>
-                <exclude>org/sonatype/**/*</exclude>
-                <exclude>**/pom.xml</exclude>
-
-                <!-- Not the org/ packages that are a part of the jdk -->
-                <exclude>org/ietf/jgss/*</exclude>
-                <exclude>org/omg/**/*</exclude>
-                <exclude>org/w3c/dom/*</exclude>
-                <exclude>org/w3c/dom/**/*</exclude>
-                <exclude>org/xml/sax/*</exclude>
-                <exclude>org/xml/sax/**/*</exclude>
-              </excludes>
-            </relocation>
-            <relocation>
-              <pattern>com.google</pattern>
-              
<shadedPattern>${shaded.dependency.prefix}.com.google</shadedPattern>
-            </relocation>
-            <relocation>
-              <pattern>io</pattern>
-              <shadedPattern>${shaded.dependency.prefix}.io</shadedPattern>
-            </relocation>
-            <relocation>
-              <pattern>com.esotericsoftware</pattern>
-              
<shadedPattern>${shaded.dependency.prefix}.com.esotericsoftware</shadedPattern>
-            </relocation>
-          </relocations>
-        </configuration>
-        <executions>
-          <execution>
-            <phase>package</phase>
-            <goals>
-              <goal>shade</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-antrun-plugin</artifactId>
-        <version>1.8</version>
-        <executions>
-          <execution>
-            <id>copy-to-interpreter</id>
-            <phase>package</phase>
-            <goals>
-              <goal>run</goal>
-            </goals>
-            <configuration>
-              <target>
-                <echo>ANT TASK - copying files....</echo>
-                <copy todir="${project.basedir}/../interpreter" 
overwrite="true" flatten="true">
-                  <fileset dir="${project.build.directory}" 
includes="zeppelin-interpreter-api-*.jar" >
-                  </fileset>
-                </copy>
-              </target>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-    </plugins>
-  </build>
-
-</project>
diff --git 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManager.java
 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManager.java
index 02135b4..1ccf41a 100644
--- 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManager.java
+++ 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManager.java
@@ -131,7 +131,7 @@ import static 
org.apache.zeppelin.cluster.meta.ClusterMetaType.INTP_PROCESS_META
 public abstract class ClusterManager {
   private static Logger LOGGER = LoggerFactory.getLogger(ClusterManager.class);
 
-  public final ZeppelinConfiguration zconf = ZeppelinConfiguration.create();
+  public ZeppelinConfiguration zConf;
 
   protected Collection<Node> clusterNodes = new ArrayList<>();
 
@@ -157,10 +157,11 @@ public abstract class ClusterManager {
 
   protected boolean isTest = false;
 
-  public ClusterManager() {
+  public ClusterManager(ZeppelinConfiguration zConf) {
     try {
+      this.zConf = zConf;
       zeplServerHost = RemoteInterpreterUtils.findAvailableHostAddress();
-      String clusterAddr = zconf.getClusterAddress();
+      String clusterAddr = this.zConf.getClusterAddress();
       if (!StringUtils.isEmpty(clusterAddr)) {
         String cluster[] = clusterAddr.split(",");
 
@@ -179,13 +180,14 @@ public abstract class ClusterManager {
           raftAddressMap.put(MemberId.from(memberId), address);
           clusterMemberIds.add(MemberId.from(memberId));
         }
+      } else {
+        throw new RuntimeException("No zeppelin.cluster.addr specified in 
zeppelin-site.xml");
       }
     } catch (UnknownHostException e) {
       LOGGER.error(e.getMessage());
     } catch (SocketException e) {
       LOGGER.error(e.getMessage());
     }
-
   }
 
   // Check if the raft environment is initialized
@@ -208,7 +210,7 @@ public abstract class ClusterManager {
   }
 
   public void start() {
-    if (!zconf.isClusterMode()) {
+    if (!zConf.isClusterMode()) {
       return;
     }
 
@@ -294,7 +296,7 @@ public abstract class ClusterManager {
 
   // cluster shutdown
   public void shutdown() {
-    if (!zconf.isClusterMode()) {
+    if (!zConf.isClusterMode()) {
       return;
     }
 
diff --git 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManagerClient.java
 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManagerClient.java
index 57d51e3..9526cc7 100644
--- 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManagerClient.java
+++ 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManagerClient.java
@@ -17,6 +17,7 @@
 package org.apache.zeppelin.cluster;
 
 import io.atomix.primitive.PrimitiveState;
+import org.apache.zeppelin.conf.ZeppelinConfiguration;
 
 import static 
org.apache.zeppelin.cluster.meta.ClusterMetaType.INTP_PROCESS_META;
 
@@ -26,17 +27,17 @@ import static 
org.apache.zeppelin.cluster.meta.ClusterMetaType.INTP_PROCESS_META
 public class ClusterManagerClient extends ClusterManager {
   private static ClusterManagerClient instance = null;
 
-  public static ClusterManagerClient getInstance() {
+  public static ClusterManagerClient getInstance(ZeppelinConfiguration zConf) {
     synchronized (ClusterManagerClient.class) {
       if (instance == null) {
-        instance = new ClusterManagerClient();
+        instance = new ClusterManagerClient(zConf);
       }
       return instance;
     }
   }
 
-  public ClusterManagerClient() {
-    super();
+  public ClusterManagerClient(ZeppelinConfiguration zConf) {
+    super(zConf);
   }
 
   @Override
@@ -56,7 +57,7 @@ public class ClusterManagerClient extends ClusterManager {
 
   // In the ClusterManagerClient metaKey equal interperterGroupId
   public void start(String metaKey) {
-    if (!zconf.isClusterMode()) {
+    if (!zConf.isClusterMode()) {
       return;
     }
     super.start();
@@ -67,11 +68,12 @@ public class ClusterManagerClient extends ClusterManager {
   }
 
   public void shutdown() {
-    if (!zconf.isClusterMode()) {
+    if (!zConf.isClusterMode()) {
       return;
     }
     clusterMonitor.shutdown();
 
     super.shutdown();
+    instance = null;
   }
 }
diff --git 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManagerServer.java
 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManagerServer.java
index 869188a..eb1a6b8 100644
--- 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManagerServer.java
+++ 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/cluster/ClusterManagerServer.java
@@ -35,6 +35,7 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.zeppelin.cluster.event.ClusterEventListener;
 import org.apache.zeppelin.cluster.meta.ClusterMeta;
 import org.apache.zeppelin.cluster.protocol.RaftServerMessagingProtocol;
+import org.apache.zeppelin.conf.ZeppelinConfiguration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -76,21 +77,21 @@ public class ClusterManagerServer extends ClusterManager {
   public static String CLUSTER_AUTH_EVENT_TOPIC = "CLUSTER_AUTH_EVENT_TOPIC";
   public static String CLUSTER_INTP_SETTING_EVENT_TOPIC = 
"CLUSTER_INTP_SETTING_EVENT_TOPIC";
 
-  private ClusterManagerServer() {
-    super();
+  private ClusterManagerServer(ZeppelinConfiguration zConf) {
+    super(zConf);
   }
 
-  public static ClusterManagerServer getInstance() {
+  public static ClusterManagerServer getInstance(ZeppelinConfiguration zConf) {
     synchronized (ClusterManagerServer.class) {
       if (instance == null) {
-        instance = new ClusterManagerServer();
+        instance = new ClusterManagerServer(zConf);
       }
       return instance;
     }
   }
 
   public void start() {
-    if (!zconf.isClusterMode()) {
+    if (!zConf.isClusterMode()) {
       return;
     }
 
@@ -227,7 +228,7 @@ public class ClusterManagerServer extends ClusterManager {
 
   @Override
   public void shutdown() {
-    if (!zconf.isClusterMode()) {
+    if (!zConf.isClusterMode()) {
       return;
     }
 
@@ -235,7 +236,9 @@ public class ClusterManagerServer extends ClusterManager {
       // delete local machine meta
       deleteClusterMeta(SERVER_META, getClusterNodeName());
       Thread.sleep(300);
-      clusterMonitor.shutdown();
+      if (clusterMonitor != null) {
+        clusterMonitor.shutdown();
+      }
       // wait raft commit metadata
       Thread.sleep(300);
     } catch (InterruptedException e) {
@@ -255,6 +258,7 @@ public class ClusterManagerServer extends ClusterManager {
     }
 
     super.shutdown();
+    instance = null;
   }
 
   // Obtain the server node whose resources are idle in the cluster
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 830fd6a..78fdb86 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
@@ -180,6 +180,10 @@ public class ZeppelinConfiguration extends 
XMLConfiguration {
     return conf;
   }
 
+  public static void reset() {
+    conf = null;
+  }
+
   private String getStringValue(String name, String d) {
     String value = this.properties.get(name);
     if (value != null) {
diff --git 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
index 06be89b..7668cc0 100644
--- 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
+++ 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
@@ -141,8 +141,8 @@ public class RemoteInterpreterServer extends Thread
   private boolean isTest;
 
   // cluster manager client
-  ClusterManagerClient clusterManagerClient = 
ClusterManagerClient.getInstance();
   ZeppelinConfiguration zconf = ZeppelinConfiguration.create();
+  ClusterManagerClient clusterManagerClient;
 
   public RemoteInterpreterServer(String intpEventServerHost,
                                  int intpEventServerPort,
@@ -191,7 +191,10 @@ public class RemoteInterpreterServer extends Thread
         new TThreadPoolServer.Args(serverTransport).processor(processor));
     remoteWorksResponsePool = Collections.synchronizedMap(new HashMap<String, 
Object>());
 
-    clusterManagerClient.start(interpreterGroupId);
+    if (zconf.isClusterMode()) {
+      clusterManagerClient = ClusterManagerClient.getInstance(zconf);
+      clusterManagerClient.start(interpreterGroupId);
+    }
   }
 
   @Override
diff --git 
a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/cluster/ClusterMultiNodeTest.java
 
b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/cluster/ClusterMultiNodeTest.java
index e2ce781..c4e88b0 100644
--- 
a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/cluster/ClusterMultiNodeTest.java
+++ 
b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/cluster/ClusterMultiNodeTest.java
@@ -39,6 +39,7 @@ public class ClusterMultiNodeTest {
 
   private static List<ClusterManagerServer> clusterServers = new ArrayList<>();
   private static ClusterManagerClient clusterClient = null;
+  private static ZeppelinConfiguration zconf;
 
   static final String metaKey = "ClusterMultiNodeTestKey";
 
@@ -56,7 +57,7 @@ public class ClusterMultiNodeTest {
         clusterAddrList += ",";
       }
     }
-    ZeppelinConfiguration zconf = ZeppelinConfiguration.create();
+    zconf = ZeppelinConfiguration.create();
     zconf.setClusterAddress(clusterAddrList);
 
     // mock cluster manager server
@@ -84,7 +85,7 @@ public class ClusterMultiNodeTest {
     }
 
     // mock cluster manager client
-    clusterClient = ClusterManagerClient.getInstance();
+    clusterClient = ClusterManagerClient.getInstance(zconf);
     clusterClient.start(metaKey);
 
     // Waiting for cluster startup
@@ -117,6 +118,7 @@ public class ClusterMultiNodeTest {
     for (ClusterManagerServer clusterServer : clusterServers) {
       clusterServer.shutdown();
     }
+    ZeppelinConfiguration.reset();
     LOGGER.info("stopCluster <<<");
   }
 
diff --git 
a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/cluster/ClusterSingleNodeTest.java
 
b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/cluster/ClusterSingleNodeTest.java
index d96f6ba..7f78b6e 100644
--- 
a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/cluster/ClusterSingleNodeTest.java
+++ 
b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/cluster/ClusterSingleNodeTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.zeppelin.cluster;
 
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.zeppelin.cluster.meta.ClusterMeta;
 import org.apache.zeppelin.cluster.meta.ClusterMetaType;
 import org.apache.zeppelin.conf.ZeppelinConfiguration;
@@ -44,7 +45,7 @@ public class ClusterSingleNodeTest {
   static final String metaKey = "ClusterSingleNodeTestKey";
 
   @BeforeClass
-  public static void startCluster() throws IOException, InterruptedException {
+  public static void startCluster() throws IOException, InterruptedException, 
ConfigurationException {
     LOGGER.info("startCluster >>>");
 
     zconf = ZeppelinConfiguration.create();
@@ -55,11 +56,12 @@ public class ClusterSingleNodeTest {
     zconf.setClusterAddress(zServerHost + ":" + zServerPort);
 
     // mock cluster manager server
-    clusterServer = ClusterManagerServer.getInstance();
+    
zconf.load(ClusterSingleNodeTest.class.getResource("/zeppelin-site-test.xml"));
+    clusterServer = ClusterManagerServer.getInstance(zconf);
     clusterServer.start();
 
     // mock cluster manager client
-    clusterClient = ClusterManagerClient.getInstance();
+    clusterClient = ClusterManagerClient.getInstance(zconf);
     clusterClient.start(metaKey);
 
     // Waiting for cluster startup
@@ -90,6 +92,7 @@ public class ClusterSingleNodeTest {
     if (null != clusterClient) {
       clusterServer.shutdown();
     }
+    ZeppelinConfiguration.reset();
     LOGGER.info("stopCluster");
   }
 
diff --git a/zeppelin-interpreter/src/test/resources/zeppelin-site.xml 
b/zeppelin-interpreter/src/test/resources/zeppelin-site-test.xml
similarity index 100%
rename from zeppelin-interpreter/src/test/resources/zeppelin-site.xml
rename to zeppelin-interpreter/src/test/resources/zeppelin-site-test.xml
diff --git 
a/zeppelin-plugins/launcher/cluster/src/main/java/org/apache/zeppelin/interpreter/launcher/ClusterInterpreterCheckThread.java
 
b/zeppelin-plugins/launcher/cluster/src/main/java/org/apache/zeppelin/interpreter/launcher/ClusterInterpreterCheckThread.java
index 099bad7..ef7bc68 100644
--- 
a/zeppelin-plugins/launcher/cluster/src/main/java/org/apache/zeppelin/interpreter/launcher/ClusterInterpreterCheckThread.java
+++ 
b/zeppelin-plugins/launcher/cluster/src/main/java/org/apache/zeppelin/interpreter/launcher/ClusterInterpreterCheckThread.java
@@ -19,6 +19,7 @@ package org.apache.zeppelin.interpreter.launcher;
 
 import org.apache.zeppelin.cluster.ClusterCallback;
 import org.apache.zeppelin.cluster.ClusterManagerServer;
+import org.apache.zeppelin.conf.ZeppelinConfiguration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -49,7 +50,8 @@ public class ClusterInterpreterCheckThread extends Thread {
   public void run() {
     LOGGER.info("ClusterInterpreterCheckThread run() >>>");
 
-    ClusterManagerServer clusterServer = ClusterManagerServer.getInstance();
+    ClusterManagerServer clusterServer = ClusterManagerServer.getInstance(
+            ZeppelinConfiguration.create());
 
     clusterServer.getIntpProcessStatus(intpGroupId, connectTimeout,
         new ClusterCallback<HashMap<String, Object>>() {
diff --git 
a/zeppelin-plugins/launcher/cluster/src/main/java/org/apache/zeppelin/interpreter/launcher/ClusterInterpreterLauncher.java
 
b/zeppelin-plugins/launcher/cluster/src/main/java/org/apache/zeppelin/interpreter/launcher/ClusterInterpreterLauncher.java
index 31d7184..b406ec3 100644
--- 
a/zeppelin-plugins/launcher/cluster/src/main/java/org/apache/zeppelin/interpreter/launcher/ClusterInterpreterLauncher.java
+++ 
b/zeppelin-plugins/launcher/cluster/src/main/java/org/apache/zeppelin/interpreter/launcher/ClusterInterpreterLauncher.java
@@ -51,11 +51,11 @@ public class ClusterInterpreterLauncher extends 
StandardInterpreterLauncher
   private static final Logger LOGGER = 
LoggerFactory.getLogger(ClusterInterpreterLauncher.class);
 
   private InterpreterLaunchContext context;
-  private ClusterManagerServer clusterServer = 
ClusterManagerServer.getInstance();
-
+  private ClusterManagerServer clusterServer;
   public ClusterInterpreterLauncher(ZeppelinConfiguration zConf, 
RecoveryStorage recoveryStorage)
       throws IOException {
     super(zConf, recoveryStorage);
+    this.clusterServer = ClusterManagerServer.getInstance(zConf);
     
clusterServer.addClusterEventListeners(ClusterManagerServer.CLUSTER_INTP_EVENT_TOPIC,
 this);
   }
 
diff --git 
a/zeppelin-plugins/launcher/cluster/src/test/java/org/apache/zeppelin/interpreter/launcher/ClusterMockTest.java
 
b/zeppelin-plugins/launcher/cluster/src/test/java/org/apache/zeppelin/interpreter/launcher/ClusterMockTest.java
index 285103f..dfacfa0 100644
--- 
a/zeppelin-plugins/launcher/cluster/src/test/java/org/apache/zeppelin/interpreter/launcher/ClusterMockTest.java
+++ 
b/zeppelin-plugins/launcher/cluster/src/test/java/org/apache/zeppelin/interpreter/launcher/ClusterMockTest.java
@@ -61,11 +61,11 @@ public class ClusterMockTest {
     zconf.setClusterAddress(zServerHost + ":" + zServerPort);
 
     // mock cluster manager server
-    clusterServer = ClusterManagerServer.getInstance();
+    clusterServer = ClusterManagerServer.getInstance(zconf);
     clusterServer.start();
 
     // mock cluster manager client
-    clusterClient = ClusterManagerClient.getInstance();
+    clusterClient = ClusterManagerClient.getInstance(zconf);
     clusterClient.start(metaKey);
 
     // Waiting for cluster startup
@@ -104,7 +104,7 @@ public class ClusterMockTest {
     }
 
     tSocket.close();
-
+    ZeppelinConfiguration.reset();
     LOGGER.info("stopCluster <<<");
   }
 
diff --git 
a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ClusterRestApi.java 
b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ClusterRestApi.java
index bcdb2be..ca85498 100644
--- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ClusterRestApi.java
+++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ClusterRestApi.java
@@ -47,11 +47,21 @@ public class ClusterRestApi {
   private static final Logger LOG = 
LoggerFactory.getLogger(ClusterRestApi.class);
   Gson gson = new Gson();
 
-  private ClusterManagerServer clusterManagerServer = 
ClusterManagerServer.getInstance();
+  private ClusterManagerServer clusterManagerServer;
+
 
   // Do not modify, Use by `zeppelin-web/src/app/cluster/cluster.html`
   private static String PROPERTIES = "properties";
 
+  public ClusterRestApi() {
+    ZeppelinConfiguration zConf = ZeppelinConfiguration.create();
+    if (zConf.isClusterMode()) {
+      clusterManagerServer = ClusterManagerServer.getInstance(zConf);
+    } else {
+      LOG.warn("Cluster mode id disabled, ClusterRestApi won't work");
+    }
+  }
+
   @GET
   @Path("/address")
   @ZeppelinApi
diff --git 
a/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java 
b/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java
index 35de52c..258c930 100644
--- 
a/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java
+++ 
b/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java
@@ -102,7 +102,13 @@ public class ZeppelinServer extends ResourceConfig {
   public static Server jettyWebServer;
   public static ServiceLocator sharedServiceLocator;
 
-  private static ZeppelinConfiguration conf = ZeppelinConfiguration.create();
+  private static ZeppelinConfiguration conf;
+
+  public static void reset() {
+    conf = null;
+    jettyWebServer = null;
+    sharedServiceLocator = null;
+  }
 
   @Inject
   public ZeppelinServer() {
@@ -112,7 +118,7 @@ public class ZeppelinServer extends ResourceConfig {
   }
 
   public static void main(String[] args) throws InterruptedException {
-    final ZeppelinConfiguration conf = ZeppelinConfiguration.create();
+    ZeppelinServer.conf = ZeppelinConfiguration.create();
     conf.setProperty("args", args);
 
     jettyWebServer = setupJettyServer(conf);
@@ -346,7 +352,8 @@ public class ZeppelinServer extends ResourceConfig {
 
   private static void setupClusterManagerServer(ServiceLocator serviceLocator) 
{
     if (conf.isClusterMode()) {
-      ClusterManagerServer clusterManagerServer = 
ClusterManagerServer.getInstance();
+      LOG.info("Cluster mode is enabled, starting ClusterManagerServer");
+      ClusterManagerServer clusterManagerServer = 
ClusterManagerServer.getInstance(conf);
 
       NotebookServer notebookServer = 
serviceLocator.getService(NotebookServer.class);
       
clusterManagerServer.addClusterEventListeners(ClusterManagerServer.CLUSTER_NOTE_EVENT_TOPIC,
 notebookServer);
@@ -373,6 +380,8 @@ public class ZeppelinServer extends ResourceConfig {
       }
 
       clusterManagerServer.start();
+    } else {
+      LOG.info("Cluster mode is disabled");
     }
   }
 
diff --git 
a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java 
b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
index 0f1188b..c16b912 100644
--- 
a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
+++ 
b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
@@ -671,7 +671,7 @@ public class NotebookServer extends WebSocketServlet
     }
 
     String msg = ClusterMessage.serializeMessage(clusterMessage);
-    ClusterManagerServer.getInstance().broadcastClusterEvent(
+    ClusterManagerServer.getInstance(conf).broadcastClusterEvent(
         ClusterManagerServer.CLUSTER_NOTE_EVENT_TOPIC, msg);
   }
 
diff --git 
a/zeppelin-server/src/test/java/org/apache/zeppelin/cluster/ClusterEventTest.java
 
b/zeppelin-server/src/test/java/org/apache/zeppelin/cluster/ClusterEventTest.java
index 7c8db0f..9514def 100644
--- 
a/zeppelin-server/src/test/java/org/apache/zeppelin/cluster/ClusterEventTest.java
+++ 
b/zeppelin-server/src/test/java/org/apache/zeppelin/cluster/ClusterEventTest.java
@@ -115,7 +115,7 @@ public class ClusterEventTest extends ZeppelinServerMock {
     // wait zeppelin cluster startup
     Thread.sleep(10000);
     // mock cluster manager client
-    clusterClient = ClusterManagerClient.getInstance();
+    clusterClient = ClusterManagerClient.getInstance(zconf);
     clusterClient.start(metaKey);
 
     // Waiting for cluster startup
@@ -154,7 +154,7 @@ public class ClusterEventTest extends ZeppelinServerMock {
       ZeppelinConfiguration zconf = ZeppelinConfiguration.create();
       zconf.setClusterAddress("");
     }
-
+    ZeppelinConfiguration.reset();
     LOGGER.info("stopCluster <<<");
   }
 
@@ -183,12 +183,15 @@ public class ClusterEventTest extends ZeppelinServerMock {
     return zconf;
   }
 
-  public static ClusterManagerServer startClusterSingleNode(String 
clusterAddrList, String clusterHost, int clusterPort)
+  public static ClusterManagerServer startClusterSingleNode(String 
clusterAddrList,
+                                                            String clusterHost,
+                                                            int clusterPort,
+                                                            
ZeppelinConfiguration zConf)
       throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException, InstantiationException {
     Class clazz = ClusterManagerServer.class;
-    Constructor constructor = clazz.getDeclaredConstructor();
+    Constructor constructor = 
clazz.getDeclaredConstructor(ZeppelinConfiguration.class);
     constructor.setAccessible(true);
-    ClusterManagerServer clusterServer = (ClusterManagerServer) 
constructor.newInstance();
+    ClusterManagerServer clusterServer = (ClusterManagerServer) 
constructor.newInstance(zConf);
     clusterServer.initTestCluster(clusterAddrList, clusterHost, clusterPort);
 
     
clusterServer.addClusterEventListeners(ClusterManagerServer.CLUSTER_NOTE_EVENT_TOPIC,
 notebookServer);
@@ -212,7 +215,7 @@ public class ClusterEventTest extends ZeppelinServerMock {
         int clusterPort = Integer.valueOf(parts[1]);
 
         ClusterManagerServer clusterServer
-            = startClusterSingleNode(clusterAddrList, clusterHost, 
clusterPort);
+            = startClusterSingleNode(clusterAddrList, clusterHost, 
clusterPort, zconf);
         clusterServers.add(clusterServer);
       }
     } catch (Exception e) {
diff --git 
a/zeppelin-server/src/test/java/org/apache/zeppelin/cluster/ZeppelinServerMock.java
 
b/zeppelin-server/src/test/java/org/apache/zeppelin/cluster/ZeppelinServerMock.java
index 4614dc4..58cc138 100644
--- 
a/zeppelin-server/src/test/java/org/apache/zeppelin/cluster/ZeppelinServerMock.java
+++ 
b/zeppelin-server/src/test/java/org/apache/zeppelin/cluster/ZeppelinServerMock.java
@@ -173,7 +173,6 @@ public class ZeppelinServerMock {
       LOG.info("ZeppelinServerMock shutDown...");
       ZeppelinServer.jettyWebServer.stop();
       executor.shutdown();
-      PluginManager.reset();
       
System.clearProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_HOME.getVarName());
       
System.clearProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_WAR.getVarName());
       
System.clearProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_CONF_DIR.getVarName());
@@ -194,7 +193,8 @@ public class ZeppelinServerMock {
         throw new RuntimeException("Can not stop Zeppelin server");
       }
 
-      ClusterManagerServer clusterManagerServer = 
ClusterManagerServer.getInstance();
+      ClusterManagerServer clusterManagerServer =
+              ClusterManagerServer.getInstance(ZeppelinConfiguration.create());
       clusterManagerServer.shutdown();
 
       LOG.info("ZeppelinServerMock terminated.");
@@ -202,6 +202,9 @@ public class ZeppelinServerMock {
       if (deleteConfDir) {
         FileUtils.deleteDirectory(confDir);
       }
+      PluginManager.reset();
+      ZeppelinConfiguration.reset();
+      ZeppelinServer.reset();
     }
   }
 
diff --git 
a/zeppelin-server/src/test/java/org/apache/zeppelin/recovery/RecoveryTest.java 
b/zeppelin-server/src/test/java/org/apache/zeppelin/recovery/RecoveryTest.java
index 0b47b16..e51eac3 100644
--- 
a/zeppelin-server/src/test/java/org/apache/zeppelin/recovery/RecoveryTest.java
+++ 
b/zeppelin-server/src/test/java/org/apache/zeppelin/recovery/RecoveryTest.java
@@ -59,13 +59,14 @@ public class RecoveryTest extends AbstractTestRestApi {
     
System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_RECOVERY_DIR.getVarName(),
             recoveryDir.getAbsolutePath());
     startUp(RecoveryTest.class.getSimpleName());
-    
//TestUtils.getInstance(Notebook.class).setParagraphJobListener(NotebookServer.getInstance());
   }
 
   @AfterClass
   public static void destroy() throws Exception {
     shutDown();
     FileUtils.deleteDirectory(recoveryDir);
+    
System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_RECOVERY_STORAGE_CLASS.getVarName(),
+            
ZeppelinConfiguration.ConfVars.ZEPPELIN_RECOVERY_STORAGE_CLASS.getStringValue());
   }
 
   @Before
diff --git 
a/zeppelin-server/src/test/java/org/apache/zeppelin/rest/AbstractTestRestApi.java
 
b/zeppelin-server/src/test/java/org/apache/zeppelin/rest/AbstractTestRestApi.java
index 3c3273c..2be4d54 100644
--- 
a/zeppelin-server/src/test/java/org/apache/zeppelin/rest/AbstractTestRestApi.java
+++ 
b/zeppelin-server/src/test/java/org/apache/zeppelin/rest/AbstractTestRestApi.java
@@ -181,10 +181,12 @@ public abstract class AbstractTestRestApi {
         withAuth, testClassName, withKnox);
 
     if (!WAS_RUNNING) {
+      ZeppelinConfiguration.reset();
       // copy the resources files to a temp folder
       zeppelinHome = new File("..");
       LOG.info("ZEPPELIN_HOME: " + zeppelinHome.getAbsolutePath());
       confDir = new File(zeppelinHome, "conf_" + testClassName);
+      LOG.info("ZEPPELIN_CONF_DIR: " + confDir.getAbsolutePath());
       confDir.mkdirs();
 
       
System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_HOME.getVarName(),
@@ -212,7 +214,7 @@ public abstract class AbstractTestRestApi {
       new File("../zeppelin-web/dist").mkdirs();
       new File("../zeppelin-web-angular/dist").mkdirs();
 
-      LOG.info("Staring test Zeppelin up...");
+      LOG.info("Starting Zeppelin Server...");
       ZeppelinConfiguration conf = ZeppelinConfiguration.create();
       LOG.info("zconf.getClusterAddress() = {}", conf.getClusterAddress());
 
@@ -252,8 +254,8 @@ public abstract class AbstractTestRestApi {
       if (started == false) {
         throw new RuntimeException("Can not start Zeppelin server");
       }
-      
//ZeppelinServer.notebook.setParagraphJobListener(NotebookServer.getInstance());
-      LOG.info("Test Zeppelin stared.");
+
+      LOG.info("Zeppelin Server is started.");
     }
   }
 
@@ -300,10 +302,11 @@ public abstract class AbstractTestRestApi {
       if (shiroIni != null) {
         FileUtils.deleteQuietly(shiroIni);
       }
-      LOG.info("Terminating test Zeppelin...");
+      LOG.info("Terminating Zeppelin Server...");
       ZeppelinServer.jettyWebServer.stop();
       executor.shutdown();
       PluginManager.reset();
+      ZeppelinConfiguration.reset();
 
       long s = System.currentTimeMillis();
       boolean started = true;
@@ -318,7 +321,7 @@ public abstract class AbstractTestRestApi {
         throw new RuntimeException("Can not stop Zeppelin server");
       }
 
-      LOG.info("Test Zeppelin terminated.");
+      LOG.info("Zeppelin Server is terminated.");
 
       if (isRunningWithAuth) {
         isRunningWithAuth = shiroIni.exists();
@@ -330,6 +333,8 @@ public abstract class AbstractTestRestApi {
         // properly
         FileUtils.deleteDirectory(confDir);
       }
+      TestUtils.clearInstances();
+      ZeppelinServer.reset();
     }
 
   }
diff --git 
a/zeppelin-server/src/test/java/org/apache/zeppelin/security/DirAccessTest.java 
b/zeppelin-server/src/test/java/org/apache/zeppelin/security/DirAccessTest.java
index dc281bc..d70f37d 100644
--- 
a/zeppelin-server/src/test/java/org/apache/zeppelin/security/DirAccessTest.java
+++ 
b/zeppelin-server/src/test/java/org/apache/zeppelin/security/DirAccessTest.java
@@ -24,32 +24,44 @@ import org.junit.Test;
 import org.apache.zeppelin.conf.ZeppelinConfiguration;
 import org.apache.zeppelin.rest.AbstractTestRestApi;
 
+import static org.junit.Assert.assertEquals;
+
 public class DirAccessTest extends AbstractTestRestApi {
   @Test
   public void testDirAccessForbidden() throws Exception {
     synchronized (this) {
-      
System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_SERVER_DEFAULT_DIR_ALLOWED
-              .getVarName(), "false");
-      AbstractTestRestApi.startUp(DirAccessTest.class.getSimpleName());
-      HttpClient httpClient = new HttpClient();
-      GetMethod getMethod = new GetMethod(getUrlToTest() + "/app/");
-      httpClient.executeMethod(getMethod);
-      AbstractTestRestApi.shutDown();
-      assert getMethod.getStatusCode() == HttpStatus.SC_FORBIDDEN;
+      try {
+        
System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_SERVER_DEFAULT_DIR_ALLOWED
+                .getVarName(), "false");
+        AbstractTestRestApi.startUp(DirAccessTest.class.getSimpleName());
+        HttpClient httpClient = new HttpClient();
+        GetMethod getMethod = new GetMethod(getUrlToTest() + "/app/");
+        LOG.info("Invoke getMethod");
+        httpClient.executeMethod(getMethod);
+        assertEquals(getMethod.getResponseBodyAsString(),
+                HttpStatus.SC_FORBIDDEN, getMethod.getStatusCode());
+      } finally {
+        AbstractTestRestApi.shutDown();
+      }
     }
   }
 
   @Test
   public void testDirAccessOk() throws Exception {
     synchronized (this) {
-      
System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_SERVER_DEFAULT_DIR_ALLOWED
-              .getVarName(), "true");
-      AbstractTestRestApi.startUp(DirAccessTest.class.getSimpleName());
-      HttpClient httpClient = new HttpClient();
-      GetMethod getMethod = new GetMethod(getUrlToTest() + "/app/");
-      httpClient.executeMethod(getMethod);
-      AbstractTestRestApi.shutDown();
-      assert getMethod.getStatusCode() == HttpStatus.SC_OK;
+      try {
+        
System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_SERVER_DEFAULT_DIR_ALLOWED
+                .getVarName(), "true");
+        AbstractTestRestApi.startUp(DirAccessTest.class.getSimpleName());
+        HttpClient httpClient = new HttpClient();
+        GetMethod getMethod = new GetMethod(getUrlToTest() + "/app/");
+        LOG.info("Invoke getMethod");
+        httpClient.executeMethod(getMethod);
+        assertEquals(getMethod.getResponseBodyAsString(),
+                HttpStatus.SC_OK, getMethod.getStatusCode());
+      } finally {
+        AbstractTestRestApi.shutDown();
+      }
     }
   }
 
diff --git 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
index 132bcb0..1202315 100644
--- 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
+++ 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
@@ -1143,7 +1143,7 @@ public class InterpreterSettingManager implements 
NoteEventListener, ClusterEven
     ClusterMessage message = new ClusterMessage(event);
     message.put("intpSetting", jsonIntpSetting);
     String msg = ClusterMessage.serializeMessage(message);
-    ClusterManagerServer.getInstance().broadcastClusterEvent(
+    ClusterManagerServer.getInstance(conf).broadcastClusterEvent(
         CLUSTER_INTP_SETTING_EVENT_TOPIC, msg);
   }
 
diff --git 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/AuthorizationService.java
 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/AuthorizationService.java
index f712aa0..75c3a0b 100644
--- 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/AuthorizationService.java
+++ 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/AuthorizationService.java
@@ -388,7 +388,7 @@ public class AuthorizationService implements 
ClusterEventListener {
     }.getType());
     message.put("set", json);
     String msg = ClusterMessage.serializeMessage(message);
-    ClusterManagerServer.getInstance().broadcastClusterEvent(
+    ClusterManagerServer.getInstance(conf).broadcastClusterEvent(
         ClusterManagerServer.CLUSTER_AUTH_EVENT_TOPIC, msg);
   }
 }
diff --git 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/plugin/PluginManager.java 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/plugin/PluginManager.java
index 4306185..6070c93 100644
--- 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/plugin/PluginManager.java
+++ 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/plugin/PluginManager.java
@@ -77,7 +77,8 @@ public class PluginManager {
     try {
       notebookRepo = (NotebookRepo) (Class.forName(notebookRepoClassName, 
true, pluginClassLoader)).newInstance();
     } catch (InstantiationException | IllegalAccessException | 
ClassNotFoundException e) {
-      LOGGER.warn("Fail to instantiate notebookrepo from plugin classpath:" + 
notebookRepoClassName, e);
+      LOGGER.warn("Fail to instantiate notebookrepo " + notebookRepoClassName +
+              " from plugin classpath:" + pluginsDir, e);
     }
 
     if (notebookRepo == null) {
@@ -120,7 +121,8 @@ public class PluginManager {
     try {
       notebookRepo = (OldNotebookRepo) 
(Class.forName(oldNotebookRepoClassName, true, 
pluginClassLoader)).newInstance();
     } catch (InstantiationException | IllegalAccessException | 
ClassNotFoundException e) {
-      LOGGER.warn("Fail to instantiate notebookrepo from plugin classpath:" + 
oldNotebookRepoClassName, e);
+      LOGGER.warn("Fail to instantiate notebookrepo " + 
oldNotebookRepoClassName +
+              " from plugin classpath:" + pluginsDir, e);
     }
 
     if (notebookRepo == null) {
@@ -159,7 +161,8 @@ public class PluginManager {
           .newInstance(zConf, recoveryStorage);
     } catch (InstantiationException | IllegalAccessException | 
ClassNotFoundException
         | NoSuchMethodException | InvocationTargetException e) {
-      LOGGER.warn("Fail to instantiate Launcher from plugin classpath:" + 
launcherPlugin, e);
+      LOGGER.warn("Fail to instantiate Launcher " + launcherPlugin +
+              " from plugin pluginDir: " + pluginsDir, e);
     }
 
     if (launcher == null) {
diff --git 
a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/recovery/FileSystemRecoveryStorageTest.java
 
b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/recovery/FileSystemRecoveryStorageTest.java
index 2eaed74..567823a 100644
--- 
a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/recovery/FileSystemRecoveryStorageTest.java
+++ 
b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/recovery/FileSystemRecoveryStorageTest.java
@@ -10,6 +10,7 @@ import org.apache.zeppelin.interpreter.InterpreterException;
 import org.apache.zeppelin.interpreter.InterpreterOption;
 import org.apache.zeppelin.interpreter.InterpreterSetting;
 import org.apache.zeppelin.interpreter.remote.RemoteInterpreter;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -31,10 +32,12 @@ public class FileSystemRecoveryStorageTest extends 
AbstractInterpreterTest {
     super.setUp();
   }
 
-  @Override
+  @After
   public void tearDown() throws Exception {
     super.tearDown();
     FileUtils.deleteDirectory(recoveryDir);
+    
System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_RECOVERY_STORAGE_CLASS.getVarName(),
+            
ZeppelinConfiguration.ConfVars.ZEPPELIN_RECOVERY_STORAGE_CLASS.getStringValue());
   }
 
   @Test

Reply via email to