xuxueli / xxl-job

A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)
http://www.xuxueli.com/xxl-job/
GNU General Public License v3.0
27.46k stars 10.86k forks source link

com.xxl.rpc.util.XxlRpcException: java.lang.InterruptedException #2106

Open johnsonwang14 opened 3 years ago

johnsonwang14 commented 3 years ago

使用 XXL-JOB 2.1.1-SNAPSHOT时经常能遇到下面的错误: msg:com.xxl.rpc.util.XxlRpcException: java.lang.InterruptedException at com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean$1.invoke(XxlRpcReferenceBean.java:227) at com.sun.proxy.$Proxy79.run(Unknown Source) at com.xxl.job.admin.core.trigger.XxlJobTrigger.runExecutor(XxlJobTrigger.java:196) at com.xxl.job.admin.core.trigger.XxlJobTrigger.processTrigger(XxlJobTrigger.java:149) at com.xxl.job.admin.core.trigger.XxlJobTrigger.trigger(XxlJobTrigger.java:74) at com.xxl.job.admin.core.thread.JobTriggerPoolHelper$3.run(JobTriggerPoolHelper.java:76) 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) Caused by: java.lang.InterruptedException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at io.netty.util.concurrent.DefaultPromise.await(DefaultPromise.java:221) at io.netty.channel.DefaultChannelPromise.await(DefaultChannelPromise.java:131) at io.netty.channel.DefaultChannelPromise.await(DefaultChannelPromise.java:30) at io.netty.util.concurrent.DefaultPromise.sync(DefaultPromise.java:328) at io.netty.channel.DefaultChannelPromise.sync(DefaultChannelPromise.java:119) at io.netty.channel.DefaultChannelPromise.sync(DefaultChannelPromise.java:30) at com.xxl.rpc.remoting.net.impl.netty_http.client.NettyHttpConnectClient.init(NettyHttpConnectClient.java:64) at com.xxl.rpc.remoting.net.common.ConnectClient.getPool(ConnectClient.java:111) at com.xxl.rpc.remoting.net.common.ConnectClient.asyncSend(ConnectClient.java:41) at com.xxl.rpc.remoting.net.impl.netty_http.client.NettyHttpClient.asyncSend(NettyHttpClient.java:18) at com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean$1.invoke(XxlRpcReferenceBean.java:216) ... 8 more 上面这个问题似乎没有调用到业务服务中,而在此调用前业务日志中也有以下错误: 2020-12-02 07:48:43.105 [Thread-615] [,,,] INFO c.x.j.c.t.JobThread - >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[Thread-615,10,main] at at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84) at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421) at at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202) at at de.siegmar.logbackgelf.AbstractGelfAppender.append(AbstractGelfAppender.java:104) at at ch.qos.logback.classic.Logger.info(Logger.java:583) 07:48:43,106 |-ERROR in de.siegmar.logbackgelf.GelfUdpAppender[GELF] - Error sending GELF message java.nio.channels.ClosedByInterruptException at java.nio.channels.ClosedByInterruptException at at de.siegmar.logbackgelf.GelfUdpAppender$RobustChannel.send(GelfUdpAppender.java:112) at at de.siegmar.logbackgelf.GelfUdpAppender.appendMessage(GelfUdpAppender.java:82) at at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:398) at at com.xxl.job.core.thread.JobThread.run(JobThread.java:214) at at sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:473) at at de.siegmar.logbackgelf.AbstractGelfAppender.append(AbstractGelfAppender.java:27) at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51) at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270) at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257) 2020-12-02 07:48:43.894 [http-nio-8080-exec-4] [,,,] INFO c.c.c.r.f.RpcRequestFilter - request.url=/actuator/health 2020-12-02 07:48:45.615 [Thread-617] [,,,] INFO c.x.j.c.t.JobThread - >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[Thread-617,10,main] at at sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:473) at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257) at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421) at at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202) at at de.siegmar.logbackgelf.GelfUdpAppender.appendMessage(GelfUdpAppender.java:82) at at com.xxl.job.core.thread.JobThread.run(JobThread.java:214) at at de.siegmar.logbackgelf.AbstractGelfAppender.append(AbstractGelfAppender.java:104) at at de.siegmar.logbackgelf.AbstractGelfAppender.append(AbstractGelfAppender.java:27) at at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84) at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51) 07:48:45,616 |-ERROR in de.siegmar.logbackgelf.GelfUdpAppender[GELF] - Error sending GELF message java.nio.channels.ClosedByInterruptException at java.nio.channels.ClosedByInterruptException at at de.siegmar.logbackgelf.GelfUdpAppender$RobustChannel.send(GelfUdpAppender.java:112) at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270) at at ch.qos.logback.classic.Logger.info(Logger.java:583) at at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:398) 感觉上是线程之间存在交叉混乱一样,尤其业务中的这个错误日志 存在大数据稍微长点的时间就会重复出现很频繁

lemonwolfer commented 3 years ago

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: interrupt ### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: interrupt at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) at com.sun.proxy.$Proxy166.update(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:287) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) at com.sun.proxy.$Proxy170.updatexxUnknown Source) at org.kltb.loan.mybatis.impl.XXServiceImpl.updateAcceptInfoByNoAndStatus(RepayDetailsInfoServiceImpl.java:42) at org.kltb.loan.mybatis.impl.XXServiceImpl$$FastClassBySpringCGLIB$$ac889670.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684) at org.xx.loan.mybatis.impl.RepayDetailsInfoServiceImpl$$EnhancerBySpringCGLIB$$d11ce308.update() at org.xx.loan.job.xx.xxTask(xxTask.java:458) at org.xx.loan.job.xx.execute(RiskWithholdRepayTask.java:186) at org.xx.loan.job.xx$$FastClassBySpringCGLIB$$b79e99cc.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88) at org.kltb.xx.common.aspect.MdcLogAspect.process(MdcLogAspect.java:56) at sun.reflect.GeneratedMethodAccessor470.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:174) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) at org.kltb.loan.job.RiskWithholdRepayTask$$EnhancerBySpringCGLIB$$7eee7be8.execute() at com.xxl.job.core.thread.JobThread$1.call(JobThread.java:134) at com.xxl.job.core.thread.JobThread$1.call(JobThread.java:131) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: interrupt ### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: interrupt at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:200) at sun.reflect.GeneratedMethodAccessor253.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426) ... 33 common frames omitted Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: interrupt at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:336) at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:84) at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198) ... 37 common frames omitted Caused by: java.sql.SQLException: interrupt at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1201) at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1086) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1066) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1056) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:104) at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:151) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78) ... 45 common frames omitted Caused by: java.lang.InterruptedException: null at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220) at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335) at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1198) ... 52


定时任务里面会有数据库操作,不知道为什么线程中断了,导致获得线程池连接interrupt exception了 请问xxl jobthread里面什么情况下会导致线程中断??

johnsonwang14 commented 3 years ago

org.mybatis.spring.MyBatisSystemException:嵌套异常是org.apache.ibatis.exceptions.PersistenceException:###更新数据库时出错。原因:org.springframework.jdbc.CannotGetJdbcConnectionException:无法获取JDBC连接。嵌套的异常是java.sql.SQLException:中断###原因:org.springframework.jdbc.CannotGetJdbcConnectionException:无法获取JDBC连接。嵌套异常是java.sql.SQLException:在org.mybatis.spring.SqlSessionTemplate $ SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)在org.mybatis.spring.SqlSessionTemplate $ SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)在org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)处中断.org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:287)上的.proxy。$ Proxy166.update(未知源)在org.apache.ibatis.binding.MapperMethod.execute(MapperMethod。748)原因:org.apache.ibatis.exceptions.PersistenceException:###更新数据库时出错。原因:org.springframework.jdbc.CannotGetJdbcConnectionException:无法获取JDBC连接。嵌套的异常是java.sql.SQLException:中断###原因:org.springframework.jdbc.CannotGetJdbcConnectionException:无法获取JDBC连接;无法获取JDBC连接。嵌套异常是java.sql.SQLException:在org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:200)的org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)处中断在org.mybatis.spring上的java.lang.reflect.Method.invoke(Method.java:498)上的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)上的sun.reflect.GeneratedMethodAccessor253.invoke(未知源) .SqlSessionTemplate $ SqlSessionInterceptor。invoke(SqlSessionTemplate.java:426)...省略了33个共同的框架。嵌套异常是java.sql.SQLException:在org.org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)在org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)在org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81)处中断org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:336)的.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor .java:84),位于org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49),位于org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)。

定时任务里面会有数据库操作,不知道为什么线程中断了,导致获得线程池连接中断异常 请请xxl jobthread里面什么情况下会导致线程中断??

你这个好像和我不是一个问题吧 我没遇到过