在Async上下文中遇到@Retryable问题,我有一个返回SocketTimeOut异常的服务调用。我本来希望重试3次,我确实有@EnableRetry,但是我在日志中看到一些我很奇怪的东西,一个sleep interruptedException。这是堆栈跟踪的一部分。
引起:java.lang.InterruptedException:睡眠中断 在org.springframework.retry.interceptor.RetryOperationsInterceptor.invoke(RetryOperationsInterceptor.java:118)〜[spring-retry-1.2.1.RELEASE.jar!/:na] at someservice.somemethod(someservice.java)〜[classes /:na] 2018-01-18 18:59:39.818 INFO 14 --- [lTaskExecutor-1] someExceptionHandler:线程在睡眠时被中断;嵌套异常是java.lang.InterruptedException:sleep中断 在org.springframework.retry.backoff.ThreadWaitSleeper.sleep(ThreadWaitSleeper.java:30)〜[spring-retry-1.2.1.RELEASE.jar!/:na] 在org.springframework.retry.backoff.StatelessBackOffPolicy.backOff(StatelessBackOffPolicy.java:36)〜[spring-retry-1.2.1.RELEASE.jar!/:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266)[na:1.8.0_141] 在org.springframework.aop.framework.CglibAopProxy $ DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)〜[spring-aop-4.3.8.RELEASE.jar!/:4.3.8.RELEASE] 在org.springframework.aop.framework.CglibAopProxy $ CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)〜[spring-aop-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
不确定这是否是红鲱鱼,但是在读取超时发生后会发生这种情况,我本来希望它重试但我会在日志中看到这一点。我知道Spring重试的默认等待时间为1秒,我想知道它是否被中断,从而对其重试能力产生影响。
T.I.A
答案 0 :(得分:0)
引起:java.lang.InterruptedException:睡眠中断
只是意味着你的应用程序中的其他内容正在等待backOff时中断线程,从而中止了重试场景。
这是设计......
if (this.logger.isDebugEnabled()) {
this.logger
.debug("Abort retry because interrupted: count="
+ context.getRetryCount());
}
...当你打断一个帖子时,你明确告诉它要停止它正在做的事情(如果它正在做一些可以中断的事情,比如睡觉)。