You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by zj...@apache.org on 2020/03/09 02:18:46 UTC
[zeppelin] branch master updated: [ZEPPELIN-4647].
zeppelin.notebook.cron.folders doesn't work for regular folder
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 b1a99c1 [ZEPPELIN-4647]. zeppelin.notebook.cron.folders doesn't work for regular folder
b1a99c1 is described below
commit b1a99c1a7bd5eaf6c914ec9de536ca41c451f60e
Author: Jeff Zhang <zj...@apache.org>
AuthorDate: Fri Feb 28 17:45:27 2020 +0800
[ZEPPELIN-4647]. zeppelin.notebook.cron.folders doesn't work for regular folder
### What is this PR for?
This PR fix the issue of `zeppelin.notebook.cron.folders` doesn't work for regular folder, but only for regular expression. IMHO, specify regular folder is enough for users, regular expression is not necessary. So I change `zeppelin.notebook.cron.folders` to regular folder instead of regular expression.
### What type of PR is it?
[Bug Fix]
### Todos
* [ ] - Task
### What is the Jira issue?
* https://github.com/zjffdu/zeppelin/tree/ZEPPELIN-4647
### How should this be tested?
* CI pass
### Screenshots (if appropriate)
### Questions:
* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No
Author: Jeff Zhang <zj...@apache.org>
Closes #3666 from zjffdu/ZEPPELIN-4647 and squashes the following commits:
3ab0409be [Jeff Zhang] [ZEPPELIN-4647]. zeppelin.notebook.cron.folders doesn't work for regular folder
---
docs/usage/other_features/cron_scheduler.md | 2 +-
.../test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java | 5 ++++-
.../src/main/java/org/apache/zeppelin/notebook/Note.java | 7 ++-----
.../src/main/java/org/apache/zeppelin/notebook/NoteManager.java | 2 ++
.../src/test/java/org/apache/zeppelin/notebook/NotebookTest.java | 5 ++---
5 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/docs/usage/other_features/cron_scheduler.md b/docs/usage/other_features/cron_scheduler.md
index 2a835a3..05fabd7 100644
--- a/docs/usage/other_features/cron_scheduler.md
+++ b/docs/usage/other_features/cron_scheduler.md
@@ -57,4 +57,4 @@ Set property **zeppelin.notebook.cron.enable** to **true** in `$ZEPPELIN_HOME/co
### Run cron selectively on folders
-In `$ZEPPELIN_HOME/conf/zeppelin-site.xml` make sure the property **zeppelin.notebook.cron.enable** is set to **true**, and then set property **zeppelin.notebook.cron.folders** to the desired folder as comma-separated values, e.g. `*yst*, Sys?em, System`. This property accepts wildcard and joker.
+In `$ZEPPELIN_HOME/conf/zeppelin-site.xml` make sure the property **zeppelin.notebook.cron.enable** is set to **true**, and then set property **zeppelin.notebook.cron.folders** to the desired folder as comma-separated values, e.g. `/cron,/test/cron`.
diff --git a/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java b/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java
index 871d926..f353429 100644
--- a/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java
+++ b/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java
@@ -590,6 +590,7 @@ public class ZeppelinRestApiTest extends AbstractTestRestApi {
// create a note and a paragraph
Note note = null;
try {
+ System.setProperty(ConfVars.ZEPPELIN_NOTEBOOK_CRON_ENABLE.getVarName(), "true");
note = TestUtils.getInstance(Notebook.class).createNote("note1_testJobs", anonymous);
note.setName("note for run test");
@@ -630,6 +631,7 @@ public class ZeppelinRestApiTest extends AbstractTestRestApi {
if (null != note) {
TestUtils.getInstance(Notebook.class).removeNote(note.getId(), anonymous);
}
+ System.clearProperty(ConfVars.ZEPPELIN_NOTEBOOK_CRON_ENABLE.getVarName());
}
}
@@ -658,7 +660,7 @@ public class ZeppelinRestApiTest extends AbstractTestRestApi {
postCron.releaseConnection();
System.setProperty(ConfVars.ZEPPELIN_NOTEBOOK_CRON_ENABLE.getVarName(), "true");
- System.setProperty(ConfVars.ZEPPELIN_NOTEBOOK_CRON_FOLDERS.getVarName(), "System/*");
+ System.setProperty(ConfVars.ZEPPELIN_NOTEBOOK_CRON_FOLDERS.getVarName(), "/System");
note.setName("System/test2");
note.runAll(AuthenticationInfo.ANONYMOUS, false);
@@ -679,6 +681,7 @@ public class ZeppelinRestApiTest extends AbstractTestRestApi {
if (null != note) {
TestUtils.getInstance(Notebook.class).removeNote(note.getId(), anonymous);
}
+ System.clearProperty(ConfVars.ZEPPELIN_NOTEBOOK_CRON_ENABLE.getVarName());
}
}
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java
index 0f902f6..ab7016a 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java
@@ -129,7 +129,6 @@ public class Note implements JsonSerializable {
public Note() {
generateId();
- setCronSupported(ZeppelinConfiguration.create());
}
public Note(String path, String defaultInterpreterGroup, InterpreterFactory factory,
@@ -395,12 +394,11 @@ public class Note implements JsonSerializable {
public Boolean isCronSupported(ZeppelinConfiguration config) {
if (config.isZeppelinNotebookCronEnable()) {
config.getZeppelinNotebookCronFolders();
- if (config.getZeppelinNotebookCronFolders() == null) {
+ if (StringUtils.isBlank(config.getZeppelinNotebookCronFolders())) {
return true;
} else {
for (String folder : config.getZeppelinNotebookCronFolders().split(",")) {
- folder = folder.replaceAll("\\*", "\\.*").replaceAll("\\?", "\\.");
- if (getName().matches(folder)) {
+ if (this.path.startsWith(folder)) {
return true;
}
}
@@ -1116,7 +1114,6 @@ public class Note implements JsonSerializable {
public static Note fromJson(String json) throws IOException {
try {
Note note = gson.fromJson(json, Note.class);
- note.setCronSupported(ZeppelinConfiguration.create());
convertOldInput(note);
note.info.remove("isRunning");
note.postProcessParagraphs();
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NoteManager.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NoteManager.java
index b64dd4d..9e06750 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NoteManager.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/NoteManager.java
@@ -19,6 +19,7 @@
package org.apache.zeppelin.notebook;
import org.apache.commons.lang3.StringUtils;
+import org.apache.zeppelin.conf.ZeppelinConfiguration;
import org.apache.zeppelin.notebook.repo.NotebookRepo;
import org.apache.zeppelin.scheduler.Job;
import org.apache.zeppelin.user.AuthenticationInfo;
@@ -523,6 +524,7 @@ public class NoteManager {
} else {
note.setPath(parent.toString() + "/" + note.getName());
}
+ note.setCronSupported(ZeppelinConfiguration.create());
note.setLoaded(true);
}
return note;
diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
index 94956ae..17d8c85 100644
--- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
+++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
@@ -615,7 +615,7 @@ public class NotebookTest extends AbstractInterpreterTest implements ParagraphJo
@Test
public void testScheduleDisabledWithName() throws InterruptedException, IOException {
- System.setProperty(ConfVars.ZEPPELIN_NOTEBOOK_CRON_FOLDERS.getVarName(), "System/*");
+ System.setProperty(ConfVars.ZEPPELIN_NOTEBOOK_CRON_FOLDERS.getVarName(), "/System");
try {
final int timeout = 10;
final String everySecondCron = "* * * * * ?";
@@ -638,8 +638,7 @@ public class NotebookTest extends AbstractInterpreterTest implements ParagraphJo
terminateScheduledNote(note);
afterStatusChangedListener = null;
- final Note noteNameSystem = notebook.createNote("note1", anonymous);
- noteNameSystem.setName("System/test1");
+ final Note noteNameSystem = notebook.createNote("/System/test1", anonymous);
final CountDownLatch jobsToExecuteCountNameSystem = new CountDownLatch(5);
executeNewParagraphByCron(noteNameSystem, everySecondCron);