This is an automated email from the ASF dual-hosted git repository.
tbonelee 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 7d840af6d4 [ZEPPELIN-6596] Improve editor fallback logging
7d840af6d4 is described below
commit 7d840af6d46869da1c3fefd819480e55c6bfe19d
Author: 백형준 <[email protected]>
AuthorDate: Sun Aug 9 15:49:28 2026 +0900
[ZEPPELIN-6596] Improve editor fallback logging
## What is this PR for?
Improve warning logs emitted when
`InterpreterSettingManager#getEditorSetting` falls back to the default editor.
The previous logs only recorded `e.getMessage()`, which could be null and
did not preserve the stack trace. The updated logs include the relevant note,
interpreter group, or interpreter name together with the throwable.
The existing `DEFAULT_EDITOR` fallback behavior is unchanged. Paragraph
text is not logged because it may contain notebook code or sensitive
information.
## What type of PR is it?
Bug Fix
## What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-6596
## How should this be tested?
```bash
./mvnw test -pl zeppelin-server \
-Dtest=InterpreterSettingManagerTest
Result:
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
Closes #5396 from vividbaek/ZEPPELIN-6596-editor-fallback-logging.
Signed-off-by: ChanHo Lee <[email protected]>
---
.../interpreter/InterpreterSettingManager.java | 14 ++++--
.../interpreter/InterpreterSettingManagerTest.java | 54 ++++++++++++++++++++++
2 files changed, 65 insertions(+), 3 deletions(-)
diff --git
a/zeppelin-server/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
b/zeppelin-server/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
index f6086f4d06..08d11629ba 100644
---
a/zeppelin-server/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
+++
b/zeppelin-server/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
@@ -611,7 +611,10 @@ public class InterpreterSettingManager implements
NoteEventListener {
try {
return interpreterSetting.getDefaultInterpreterInfo().getEditor();
} catch (Exception e) {
- LOGGER.warn(e.getMessage());
+ LOGGER.warn(
+ "Failed to resolve editor setting for the default interpreter of
note {}; "
+ + "using default editor",
+ noteId, e);
return DEFAULT_EDITOR;
}
} else {
@@ -648,7 +651,9 @@ public class InterpreterSettingManager implements
NoteEventListener {
}
return interpreterSetting.getDefaultInterpreterInfo().getEditor();
} catch (Exception e) {
- LOGGER.warn(e.getMessage());
+ LOGGER.warn(
+ "Failed to resolve editor setting for interpreter group {};
using default editor",
+ intpGroupName, e);
return DEFAULT_EDITOR;
}
}
@@ -660,7 +665,10 @@ public class InterpreterSettingManager implements
NoteEventListener {
InterpreterSetting interpreterSetting =
getInterpreterSettingByName(intpGroupName);
return interpreterSetting.getInterpreterInfo(intpName).getEditor();
} catch (Exception e) {
- LOGGER.warn(e.getMessage());
+ LOGGER.warn(
+ "Failed to resolve editor setting for interpreter {} in group
{}; "
+ + "using default editor",
+ intpName, intpGroupName, e);
return DEFAULT_EDITOR;
}
}
diff --git
a/zeppelin-server/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java
b/zeppelin-server/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java
index 54d3ffaeb0..95e126fedf 100644
---
a/zeppelin-server/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java
+++
b/zeppelin-server/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java
@@ -18,6 +18,10 @@
package org.apache.zeppelin.interpreter;
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.spi.LoggingEvent;
import org.apache.zeppelin.conf.ZeppelinConfiguration;
import org.apache.zeppelin.dep.Dependency;
import org.apache.zeppelin.display.AngularObjectRegistryListener;
@@ -219,6 +223,31 @@ class InterpreterSettingManagerTest extends
AbstractInterpreterTest {
assertEquals("python", editor.get("language"));
}
+ @Test
+ void testGetEditorFallbackLogging() {
+ Logger logger = Logger.getLogger(InterpreterSettingManager.class);
+ TestAppender appender = new TestAppender();
+ logger.addAppender(appender);
+
+ try {
+ Map<String, Object> editor =
+ interpreterSettingManager.getEditorSetting("%test.nonexistent",
note1Id);
+
+ assertEquals("text", editor.get("language"));
+ assertEquals(false, editor.get("editOnDblClick"));
+
+ LoggingEvent warning = appender.getWarnEvent();
+ assertNotNull(warning);
+ assertNotNull(warning.getRenderedMessage());
+ assertTrue(warning.getRenderedMessage().contains("test"));
+ assertTrue(warning.getRenderedMessage().contains("nonexistent"));
+ assertNotNull(warning.getThrowableInformation());
+ assertNotNull(warning.getThrowableInformation().getThrowable());
+ } finally {
+ logger.removeAppender(appender);
+ }
+ }
+
@Test
void testRestartShared() throws InterpreterException {
InterpreterSetting interpreterSetting =
interpreterSettingManager.getByName("test");
@@ -342,4 +371,29 @@ class InterpreterSettingManagerTest extends
AbstractInterpreterTest {
System.clearProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_INTERPRETER_EXCLUDES.getVarName());
}
}
+
+ private static class TestAppender extends AppenderSkeleton {
+ private final List<LoggingEvent> events = new ArrayList<>();
+
+ @Override
+ protected void append(LoggingEvent event) {
+ events.add(event);
+ }
+
+ LoggingEvent getWarnEvent() {
+ return events.stream()
+ .filter(event -> Level.WARN.equals(event.getLevel()))
+ .findFirst()
+ .orElse(null);
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public boolean requiresLayout() {
+ return false;
+ }
+ }
}