当报错的时候
{"time":"2024-01-30 00:30:00.043","level":"ERROR","service":"cm","class":"c.c.a.i.f.j.ExamDataSynchronizationJob","thread":"pool-17-thread-8","trace":"[a2fb5577944eecda,0,a2fb5577944eecda]","uri":"","device-type":"","source-type":"","uid":"","msg":"定时任务
执行失败了,请维护"}
com.cc.common.exception.CcException: 获取当前用户ID失败at com.cc.common.bean.verifiedMyself(ResultBean.java:180) ~[utils-1.0.6.jar!/:1.0.6]at com.cc.api.service.impl.ExamTimeUserServiceImpl.saveExamLabel(ExamTimeUserServiceImpl.java:47) ~[classes!/:1.0.1]at com.api.service.impl.ExamTimeUserServiceImpl$$FastClassBySpringCGLIB$$59efe3bb.invoke(<generated>) ~[classes!/:1.0.1]at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684) ~[spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at com.api.service.impl.ExamTimeUserServiceImpl$$EnhancerBySpringCGLIB$$a0d4f76b.saveExamLabel(<generated>) ~[classes!/:1.0.1]at com.api.job.ExamDataSynchronizationJob.lambda$rankingRecode2$1(ExamDataSynchronizationJob.java:471) ~[classes!/:1.0.1]at java.lang.Iterable.forEach(Iterable.java:75) ~[?:1.8.0_201]at com.api.job.ExamDataSynchronizationJob.rankingRecode2(ExamDataSynchronizationJob.java:453) [classes!/:1.0.1]at com.api.job.ExamDataSynchronizationJob$$FastClassBySpringCGLIB$$422a3489.invoke(<generated>) [classes!/:1.0.1]at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) [spring-core-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) [spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) [spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88) [spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at io.opentracing.contrib.spring.cloud.scheduled.ScheduledAspect.traceBackgroundThread(ScheduledAspect.java:55) [opentracing-spring-cloud-core-0.2.0.jar!/:?]at sun.reflect.GeneratedMethodAccessor896.invoke(Unknown Source) ~[?:?]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_201]at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201]at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) [spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) [spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) [spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) [spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) [spring-aop-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at com.api.job.ExamDataSynchronizationJob$$EnhancerBySpringCGLIB$$11f6065d.rankingRecode2(<generated>) [classes!/:1.0.1]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_201]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_201]at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201]at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) [spring-context-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) [spring-context-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:93) [spring-context-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_201]at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_201]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_201]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_201]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_201]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_201]at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
看到错误不要害怕,其实应该高兴,证明你编程还是有能进步的地方。
那么碰到这种问题怎么解决呢?
第一步
com.cc.common.exception.CcException: 获取当前用户ID失败
at com.cc.common.bean.verifiedMyself(ResultBean.java:180) ~[utils-1.0.6.jar!/:1.0.6]
错误码
当观察到错误码,那么根据错误码意思可以基本判断错误点。
第二步
com.cc.api.service.impl.ExamTimeUserServiceImpl.saveExamLabel(ExamTimeUserServiceImpl.java:47) ~[classes!/:1.0.1]
看下面一行,找到错误类ExamTimeUserServiceImpl,再看47行,则找到方法。
那么错误点就差不多找到了。
第四步
com.api.job.ExamDataSynchronizationJob.rankingRecode2(ExamDataSynchronizationJob.java:453) [classes!/:1.0.1]
at com.api.job.ExamDataSynchronizationJob F a s t C l a s s B y S p r i n g C G L I B FastClassBySpringCGLIB FastClassBySpringCGLIB422a3489.invoke() [classes!/:1.0.1]
因为第三步发现还是调用一个方法,所以继续往下找,找到方法rankingRecode2,这样再看代码是否存在问题。
第四步
根据整体意思,是否要ID,还不是不要ID,需要检查还是不要检查,调试一下就ok。
一般问题容易解决。
总结
看到问题不可怕,可怕的是当多分布式服务器运行时候,具体在哪个微服务存在问题,这才是难查,因为日志实时在运行,找不到就很麻烦,找到就容易解决。