一、该问题的重现步骤是什么?
1. 启动BladeX微服务
2. 停止 blade-log 服务,模拟正式环境下由于异常导致服务停止
3.访问任意带@ApiLog注解的接口
二、你期待的结果是什么?实际看到的又是什么?
访问带@ApiLog注解的接口,会自动触发写日志动作,但由于 blade-log 服务意外停止,写日志动作失败,而后,又自动触发后台错误写日志动作,该动作仍然失败,这样会导致重复触发,无限循环,本地log文件瞬间爆盘
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
BladeX 2.9.0.RELEASE Centos7
四、请提供详细的错误堆栈信息,这很重要。
java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: blade-log
at org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:91)
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:119)
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:89)
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:100)
at com.sun.proxy.$Proxy190.saveErrorLog(Unknown Source)
at org.springblade.core.log.event.ErrorLogListener.saveErrorLog(ErrorLogListener.java:54)
at org.springblade.core.log.event.ErrorLogListener$$FastClassBySpringCGLIB$$da38bbb0.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)
at org.springblade.core.log.aspect.LogTraceAspect.around(LogTraceAspect.java:41)
at sun.reflect.GeneratedMethodAccessor161.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
at org.springframework.aop.interceptor.ExposeI2022-12-19 10:21:06.138 ERROR 8302 --- [ async-task-6] o.s.c.b.c.BladeExecutorConfiguration : Unexpected exception occurred invoking async method: public void org.springblade.core.log.event.ErrorLogListener.saveErrorLog(org.springblade.core.log.event.ErrorLogEvent)
五、若有更多详细信息,请在下面提供。
解决方法
org.springblade.core.log.event.ErrorLogListener.java
在54行增加异常捕获得到解决
try{
logService.saveErrorLog(logError);
}catch (Exception e) {
}
扫一扫访问 Blade技术社区 移动端