From 76d29f5f6a35a5284bb4b22b80c0c5523cbee68c Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Sat, 16 Mar 2024 11:48:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=203.2.0=201.=E4=BC=98=E5=8C=96=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E9=87=8D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executor/job/RequestClientActor.java | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/job/RequestClientActor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/job/RequestClientActor.java index 79497cc04..fd4c77c9f 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/job/RequestClientActor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/job/RequestClientActor.java @@ -32,6 +32,7 @@ import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; +import java.lang.reflect.UndeclaredThrowableException; import java.util.Objects; /** @@ -56,6 +57,7 @@ public class RequestClientActor extends AbstractActor { } private void doExecute(RealJobExecutorDTO realJobExecutorDTO) { + long nowMilli = DateUtils.toNowMilli(); // 检查客户端是否存在 RegisterNodeInfo registerNodeInfo = CacheRegisterTable.getServerNode( realJobExecutorDTO.getGroupName(), @@ -64,8 +66,13 @@ public class RequestClientActor extends AbstractActor { if (Objects.isNull(registerNodeInfo)) { taskExecuteFailure(realJobExecutorDTO, "客户端不存在"); LogMetaDTO logMetaDTO = JobTaskConverter.INSTANCE.toJobLogDTO(realJobExecutorDTO); - logMetaDTO.setTimestamp( DateUtils.toNowMilli()); - EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败. 失败原因: 无可执行的客户端 <|>{}<|>", realJobExecutorDTO.getTaskId(), logMetaDTO); + logMetaDTO.setTimestamp(nowMilli); + if (realJobExecutorDTO.isRetry()) { + EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败执行重试. 失败原因: 无可执行的客户端. 重试次数:[{}]. <|>{}<|>", + realJobExecutorDTO.getTaskId(), realJobExecutorDTO.getRetryCount(), logMetaDTO); + } else { + EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败. 失败原因: 无可执行的客户端 <|>{}<|>", realJobExecutorDTO.getTaskId(), logMetaDTO); + } return; } @@ -93,9 +100,19 @@ public class RequestClientActor extends AbstractActor { throwable = re.getLastFailedAttempt().getExceptionCause(); } + if (e.getClass().isAssignableFrom(UndeclaredThrowableException.class)) { + UndeclaredThrowableException re = (UndeclaredThrowableException) e; + throwable = re.getUndeclaredThrowable(); + } + LogMetaDTO logMetaDTO = JobTaskConverter.INSTANCE.toJobLogDTO(realJobExecutorDTO); - logMetaDTO.setTimestamp( DateUtils.toNowMilli()); - EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败. <|>{}<|>", logMetaDTO.getTaskId(), logMetaDTO, throwable); + logMetaDTO.setTimestamp(nowMilli); + if (realJobExecutorDTO.isRetry()) { + EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败执行重试 重试次数:[{}]. <|>{}<|>", logMetaDTO.getTaskId(), + realJobExecutorDTO.getRetryCount(), logMetaDTO, throwable); + } else { + EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败. <|>{}<|>", logMetaDTO.getTaskId(), logMetaDTO, throwable); + } taskExecuteFailure(realJobExecutorDTO, throwable.getMessage()); @@ -129,11 +146,12 @@ public class RequestClientActor extends AbstractActor { private JobRpcClient buildRpcClient(RegisterNodeInfo registerNodeInfo, RealJobExecutorDTO realJobExecutorDTO) { int maxRetryTimes = realJobExecutorDTO.getMaxRetryTimes(); + boolean retry = realJobExecutorDTO.isRetry(); return RequestBuilder.newBuilder() .nodeInfo(registerNodeInfo) .namespaceId(registerNodeInfo.getNamespaceId()) - .failRetry(maxRetryTimes > 0) - .retryTimes(realJobExecutorDTO.getMaxRetryTimes()) + .failRetry(maxRetryTimes > 0 && !retry) + .retryTimes(maxRetryTimes) .retryInterval(realJobExecutorDTO.getRetryInterval()) .retryListener(new JobExecutorRetryListener(realJobExecutorDTO)) .client(JobRpcClient.class)