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)