{"record":{"id":"00c432b66e05d549","repo":"apache/dolphinscheduler","slug":"zeppelin-datasource-param-is-not-valid","errorCode":null,"errorMessage":"zeppelin datasource param is not valid","messagePattern":"zeppelin datasource param is not valid","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-zeppelin/src/main/java/org/apache/dolphinscheduler/plugin/datasource/zeppelin/param/ZeppelinDataSourceProcessor.java","lineNumber":52,"sourceCode":"import lombok.extern.slf4j.Slf4j;\n\nimport com.google.auto.service.AutoService;\n\n@AutoService(DataSourceProcessor.class)\n@Slf4j\npublic class ZeppelinDataSourceProcessor extends AbstractDataSourceProcessor {\n\n    @Override\n    public BaseDataSourceParamDTO castDatasourceParamDTO(String paramJson) {\n        return JSONUtils.parseObject(paramJson, ZeppelinDataSourceParamDTO.class);\n    }\n\n    @Override\n    public void checkDatasourceParam(BaseDataSourceParamDTO datasourceParamDTO) {\n        ZeppelinDataSourceParamDTO zeppelinDataSourceParamDTO = (ZeppelinDataSourceParamDTO) datasourceParamDTO;\n        if (StringUtils.isEmpty(zeppelinDataSourceParamDTO.getRestEndpoint())\n                || StringUtils.isEmpty(zeppelinDataSourceParamDTO.getUserName())) {\n            throw new IllegalArgumentException(\"zeppelin datasource param is not valid\");\n        }\n    }\n\n    @Override\n    public String getDatasourceUniqueId(ConnectionParam connectionParam, DbType dbType) {\n        ZeppelinConnectionParam baseConnectionParam = (ZeppelinConnectionParam) connectionParam;\n        return MessageFormat.format(\"{0}@{1}@{2}@{3}\", dbType.getName(), baseConnectionParam.getRestEndpoint(),\n                baseConnectionParam.getUsername(), PasswordUtils.encodePassword(baseConnectionParam.getPassword()));\n    }\n\n    @Override\n    public BaseDataSourceParamDTO createDatasourceParamDTO(String connectionJson) {\n        ZeppelinConnectionParam connectionParams = (ZeppelinConnectionParam) createConnectionParams(connectionJson);\n        ZeppelinDataSourceParamDTO zeppelinDataSourceParamDTO = new ZeppelinDataSourceParamDTO();\n\n        zeppelinDataSourceParamDTO.setUserName(connectionParams.getUsername());\n        zeppelinDataSourceParamDTO.setPassword(connectionParams.getPassword());\n        zeppelinDataSourceParamDTO.setRestEndpoint(connectionParams.getRestEndpoint());","sourceCodeStart":34,"sourceCodeEnd":70,"githubUrl":"https://github.com/apache/dolphinscheduler/blob/02eac45a1b6676e639fcbfb4be2243de5771b05d/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-zeppelin/src/main/java/org/apache/dolphinscheduler/plugin/datasource/zeppelin/param/ZeppelinDataSourceProcessor.java#L34-L70","documentation":"Validation in ZeppelinDataSourceProcessor.checkDatasourceParam: the Zeppelin datasource is rejected when restEndpoint or userName is empty — the REST endpoint is required to reach the Zeppelin server and the user is required for Zeppelin authentication.","triggerScenarios":"Thrown at dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-zeppelin/src/main/java/org/apache/dolphinscheduler/plugin/datasource/zeppelin/param/ZeppelinDataSourceProcessor.java:52 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set restEndpoint to the full Zeppelin URL, e.g. http://zeppelin-host:8080","Provide the Zeppelin userName (and credentials if anonymous access is disabled)","Re-save and use connection test to verify"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"02eac45a1b6676e639fcbfb4be2243de5771b05d","analyzedAt":"2026-09-06T17:43:00.555Z","contentChangedAt":"2026-09-06T17:43:00.555Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}