Guoliang Li created ZEPPELIN-6102:
-------------------------------------
Summary: Cannot disable cron setting
Key: ZEPPELIN-6102
URL: https://issues.apache.org/jira/browse/ZEPPELIN-6102
Project: Zeppelin
Issue Type: Bug
Components: zeppelin-server
Affects Versions: 0.11.2
Reporter: Guoliang Li
Attachments: image-2024-09-25-11-37-42-528.png
After updating notebook with cron setting, you can't diable it back.
!image-2024-09-25-11-37-42-528.png!
This bug was introduced by a bug fix as below:
[[ZEPPELIN-6035] fix Cron setting for Notebook by johannesschillinger-dm · Pull
Request #4777 · apache/zeppelin
(github.com)|https://github.com/apache/zeppelin/pull/4777]
The underlying error is, that the frontend sends the roles as an empty string
when disabling the cron, which will cause NullPointerException inside class
AuthenticationInfo:
{code:java}
AuthenticationInfo requestingAuth = new
AuthenticationInfo((String)config.get("cronExecutingUser"),(String)
config.get("cronExecutingRoles"), null);
String requestCronUser = requestingAuth.getUser();
Set<String> requestCronRoles = requestingAuth.getRoles(); {code}
the roles is empty string, so rolesList is null, so `new HashSet<>(rolesList)`
throw NullPointerException.
{code:java}
public AuthenticationInfo(String user, String roles, String ticket) {
this.user = user;
this.ticket = ticket;
List<String> rolesList = GSON.fromJson(roles, ArrayList.class);
if (roles == null) {
this.roles = new HashSet<>();
} else {
this.roles = new HashSet<>(rolesList);
}
} {code}
Traceback was as below:
ERROR [2024-09-24 06:23:05,826] (\{qtp992802731-1725}
NotebookServer.java[onMessage]:494) - Can't handle message:
{"op":"NOTE_UPDATE","data":{"id":"2GZXSDYKB","name":"liguoliang-test","config":{"isZeppelinNotebo
okCronEnable":true,"looknfeel":"default","personalizedMode":"false","cronExecutingUser":"","cronExecutingRoles":""}},"principal":"admin","ticket":"f3059116-f5b9-4959-bb01-e5442f008543","roles":"["admin"]","msgId":"eopyf-12"}
java.lang.NullPointerException
at java.util.HashSet.(HashSet.java:119)
at org.apache.zeppelin.user.AuthenticationInfo.(AuthenticationInfo.java:72)
at
org.apache.zeppelin.service.NotebookService.lambda$updateNote$17(NotebookService.java:901)
at org.apache.zeppelin.notebook.Notebook.lambda$processNote$9(Notebook.java:495)
at
org.apache.zeppelin.notebook.NoteManager$NoteNode.loadAndProcessNote(NoteManager.java:631)
at org.apache.zeppelin.notebook.NoteManager.processNote(NoteManager.java:330)
at org.apache.zeppelin.notebook.Notebook.processNote(Notebook.java:483)
at org.apache.zeppelin.notebook.Notebook.processNote(Notebook.java:469)
at
org.apache.zeppelin.service.NotebookService.updateNote(NotebookService.java:875)
at org.apache.zeppelin.socket.NotebookServer.updateNote(NotebookServer.java:966)
at org.apache.zeppelin.socket.NotebookServer.onMessage(NotebookServer.java:417)
at org.apache.zeppelin.socket.NotebookServer.onMessage(NotebookServer.java:278)
at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)