You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by GitBox <gi...@apache.org> on 2021/05/07 15:26:45 UTC

[GitHub] [dolphinscheduler] ruanwenjun opened a new issue #5427: [Bug][Service] All tasks that need to send attachment will fail

ruanwenjun opened a new issue #5427:
URL: https://github.com/apache/dolphinscheduler/issues/5427


   **Describe the bug**
   When I execute a `sql` task and set to sent an email, the task will fail. But the email is sent successfully.
   **To Reproduce**
   Steps to reproduce the behavior, for example:
   1. Create a `sql` task and set send email.
   ![image](https://user-images.githubusercontent.com/22415594/117470554-84e65500-af89-11eb-8768-70b1f6ef4e04.png)
   2. execute
   3. See error in work log
   ```java
   [INFO] 2021-05-07 23:05:11.932 org.apache.dolphinscheduler.service.alert.AlertClientService:[100] - sync alert send, host : localhost, port : 50052, groupId : 2, title : Ds test
   [ERROR] 2021-05-07 23:05:21.944 org.apache.dolphinscheduler.service.alert.AlertClientService:[110] - sync alert send error
   org.apache.dolphinscheduler.remote.exceptions.RemotingTimeoutException: wait response on the channel Host{address='localhost:50052', ip='localhost', port=50052} timeout 10000
   	at org.apache.dolphinscheduler.remote.NettyRemotingClient.sendSync(NettyRemotingClient.java:278)
   	at org.apache.dolphinscheduler.service.alert.AlertClientService.sendAlert(AlertClientService.java:105)
   	at org.apache.dolphinscheduler.service.alert.AlertClientService.sendAlert(AlertClientService.java:87)
   	at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.sendAttachment(SqlTask.java:458)
   	at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.resultProcess(SqlTask.java:332)
   	at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.executeFuncAndSql(SqlTask.java:264)
   	at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.handle(SqlTask.java:153)
   	at org.apache.dolphinscheduler.server.worker.runner.TaskExecuteThread.run(TaskExecuteThread.java:169)
   	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
   	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
   	at java.util.concurrent.FutureTask.run(FutureTask.java)
   	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   	at java.lang.Thread.run(Thread.java:748)
   [ERROR] 2021-05-07 23:05:21.945  - [taskAppId=TASK-8-211-220]:[276] - execute sql error: null
   [ERROR] 2021-05-07 23:05:21.945  - [taskAppId=TASK-8-211-220]:[159] - sql task error: java.lang.NullPointerException
   [ERROR] 2021-05-07 23:05:21.945 org.apache.dolphinscheduler.server.worker.runner.TaskExecuteThread:[182] - task scheduler failure
   java.lang.NullPointerException: null
   	at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.sendAttachment(SqlTask.java:459)
   	at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.resultProcess(SqlTask.java:332)
   	at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.executeFuncAndSql(SqlTask.java:264)
   	at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.handle(SqlTask.java:153)
   	at org.apache.dolphinscheduler.server.worker.runner.TaskExecuteThread.run(TaskExecuteThread.java:169)
   	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
   	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
   	at java.util.concurrent.FutureTask.run(FutureTask.java)
   	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   	at java.lang.Thread.run(Thread.java:748)
   [WARN] 2021-05-07 23:05:21.949 org.apache.dolphinscheduler.remote.NettyRemotingClient:[366] - connect to Host{address='192.168.1.3:49735', ip='192.168.1.3', port=49735} error
   io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /192.168.1.3:49735
   Caused by: java.net.ConnectException: Connection refused
   	at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
   	at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716)
   	at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:330)
   	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
   	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:702)
   	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
   	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
   	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
   	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
   	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
   	at java.lang.Thread.run(Thread.java:748)
   ```
   
   
   **Which version of Dolphin Scheduler:**
    -[dev]
   
   **Additional context**
   This is mainly caused by the following code, you can find in `NettyRemotingClient`. When we send an attachment, `AlertClientService` will use `NettyRemotingClient` to call `AlertServer`.
   The `responseFuture.waitResponse()` will always be null, and this method will throw exception.
   ```java
   final ResponseFuture responseFuture = new ResponseFuture(opaque, timeoutMillis, null, null);
   channel.writeAndFlush(command).addListener(future -> {
       if (future.isSuccess()) {
           responseFuture.setSendOk(true);
           return;
       } else {
           responseFuture.setSendOk(false);
       }
       responseFuture.setCause(future.cause());
       responseFuture.putResponse(null);
       logger.error("send command {} to host {} failed", command, host);
   });
   /*
    * sync wait for result
    */
   Command result = responseFuture.waitResponse();
   if (result == null) {
       if (responseFuture.isSendOK()) {
           throw new RemotingTimeoutException(host.toString(), timeoutMillis, responseFuture.getCause());
       } else {
           throw new RemotingException(host.toString(), responseFuture.getCause());
       }
   }
   ```
   BYW, there seems to be no difference between `send` and `sendSync` in `NettyRemotingClient`
   **Requirement or improvement**
   Use a handler to decode the result of `channel.writeAndFlush(command)` or discard the result.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [dolphinscheduler] github-actions[bot] commented on issue #5427: [Bug][Service] All tasks that need to send attachment will fail

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on issue #5427:
URL: https://github.com/apache/dolphinscheduler/issues/5427#issuecomment-834522937


   Hi:
   * Thank you for your feedback, we have received your issue, Please wait patiently for a reply.
   * In order for us to understand your request as soon as possible, please provide detailed information、version or pictures.
   * If you haven't received a reply for a long time, you can subscribe to the developer's email,Mail subscription steps reference https://dolphinscheduler.apache.org/zh-cn/community/development/subscribe.html ,Then write the issue URL in the email content and send question to dev@dolphinscheduler.apache.org.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [dolphinscheduler] CalvinKirs closed issue #5427: [Bug][Service] All tasks that need to send attachment will fail due to chennel idle

Posted by GitBox <gi...@apache.org>.
CalvinKirs closed issue #5427:
URL: https://github.com/apache/dolphinscheduler/issues/5427


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org