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