DolphinScheduler运行流程实例时报空指针与邮件认证失败问题
问题背景
已通过Standalone模式成功部署DolphinScheduler 1.3.0版本,运行流程实例时出现两处报错,对应报错信息和解决方案如下:
1. WorkerServer空指针报错
报错栈信息:
java.lang.NullPointerException: null at org.apache.dolphinscheduler.server.worker.processor.TaskExecuteProcessor.getTaskLogPath(TaskExecuteProcessor.java:129) ~[dolphinscheduler-server-1.3.0.jar:1.3.0] at org.apache.dolphinscheduler.server.worker.processor.TaskExecuteProcessor.buildAckCommand(TaskExecuteProcessor.java:152) ~[dolphinscheduler-server-1.3.0.jar:1.3.0] at org.apache.dolphinscheduler.server.worker.processor.TaskExecuteProcessor.doAck(TaskExecuteProcessor.java:117) ~[dolphinscheduler-server-1.3.0.jar:1.3.0] at org.apache.dolphinscheduler.server.worker.processor.TaskExecuteProcessor.process(TaskExecuteProcessor.java:108) ~[dolphinscheduler-server-1.3.0.jar:1.3.0] at org.apache.dolphinscheduler.remote.handler.NettyServerHandler$1.run(NettyServerHandler.java:118) ~[dolphinscheduler-remote-1.3.0.jar:1.3.0] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_311] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_311] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_311] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_311] at java.lang.Thread.run(Unknown Source) [na:1.8.0_311]
报错原因
空指针出现在获取任务日志路径的逻辑中,是因为DolphinScheduler的日志存储目录没有正确配置,或者运行进程的用户对配置的日志目录没有读写权限,1.3.0版本未对该场景做非空校验,直接调用路径相关方法导致异常。
解决方案
- 打开
conf/worker.properties配置文件,检查dolphinscheduler.task.log.path配置项,确保填写的是已存在的绝对路径 - 给日志目录授予DolphinScheduler运行用户的读写权限,执行命令:
chown -R <dolphinscheduler运行用户名>:<用户组> <配置的日志目录路径> - 重启Worker服务后重试即可
2. 邮件告警发送报错
报错栈信息:
org.apache.commons.mail.EmailException: Sending the email to the following server failed : xxx.xxx.com:25 at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1469) at org.apache.commons.mail.Email.send(Email.java:1496) at org.apache.dolphinscheduler.alert.utils.MailUtils.getStringObjectMap(MailUtils.java:309) at org.apache.dolphinscheduler.alert.utils.MailUtils.sendMails(MailUtils.java:124) at org.apache.dolphinscheduler.alert.manager.EmailManager.send(EmailManager.java:39) at org.apache.dolphinscheduler.alert.plugin.EmailAlertPlugin.process(EmailAlertPlugin.java:96) at org.apache.dolphinscheduler.alert.runner.AlertSender.run(AlertSender.java:84) at org.apache.dolphinscheduler.alert.AlertServer.start(AlertServer.java:82) at org.apache.dolphinscheduler.alert.AlertServer.main(AlertServer.java:89) Caused by: javax.mail.AuthenticationFailedException: 535 5.7.8 Error: authentication failed: authentication failure at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:965) at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:876) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:780) at javax.mail.Service.connect(Service.java:388) at javax.mail.Service.connect(Service.java:246) at javax.mail.Service.connect(Service.java:195) at javax.mail.Transport.send0(Transport.java:254) at javax.mail.Transport.send(Transport.java:124) at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1459)
报错原因
该报错是SMTP邮件服务认证失败,要么是邮件账号、密码配置错误,要么是SMTP服务端口、加密配置和邮件服务商要求不一致。
解决方案
- 打开
conf/alert.properties配置文件,逐一核对以下配置项:mail.host:填写正确的SMTP服务器地址mail.port:非加密连接填25,SSL加密一般填465,TLS加密一般填587mail.username:填写完整的发件人邮箱地址mail.password:注意大部分邮箱需要填写授权码而非邮箱登录密码,需要到邮箱后台开启SMTP服务后获取授权码填写- 如果开启SSL加密,需确认
mail.ssl.enable配置为true,端口对应调整为服务商要求的SSL端口
- 修改配置后重启Alert服务即可生效,无需重启整个DolphinScheduler集群
内容的提问来源于stack exchange,提问作者Alexander Chen
相关产品推荐
相关产品推荐

