From eaed3ee4f592a0e14de8b0d04f662e9614796190 Mon Sep 17 00:00:00 2001 From: zkyTech Date: Wed, 31 Dec 2025 20:13:03 +0800 Subject: [PATCH] Fix NullPointerException when updating interpreter settings from frontend When updating interpreter configuration from the frontend, the new InterpreterOption object is deserialized from JSON without zConf being set (as it's a transient field). This causes NPE when executing paragraphs and checking user authorization. Changes: - InterpreterSetting.setOption(): Automatically set zConf on the new option to ensure configuration consistency - InterpreterOption.getOwners(): Add null check for zConf to prevent NPE in edge cases Fixes the issue where modifying interpreter settings in the UI causes NullPointerException during paragraph execution. --- .../org/apache/zeppelin/interpreter/InterpreterOption.java | 2 +- .../org/apache/zeppelin/interpreter/InterpreterSetting.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterOption.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterOption.java index f7b17e362e6..a487ab0b6db 100644 --- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterOption.java +++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterOption.java @@ -73,7 +73,7 @@ public void setUserPermission(boolean setPermission) { } public List getOwners() { - if (null != owners && zConf.isUsernameForceLowerCase()) { + if (null != owners && zConf != null && zConf.isUsernameForceLowerCase()) { List lowerCaseUsers = new ArrayList<>(); for (String owner : owners) { lowerCaseUsers.add(owner.toLowerCase()); diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java index 2adaa55a42b..4181ff761ec 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java @@ -699,6 +699,10 @@ public InterpreterOption getOption() { public void setOption(InterpreterOption option) { this.option = option; + // Ensure zConf is set for the new option to avoid NullPointerException + if (this.zConf != null) { + this.option.setConf(this.zConf); + } } public String getInterpreterDir() {