alibaba / druid

阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
https://github.com/alibaba/druid/wiki
Apache License 2.0
27.94k stars 8.57k forks source link

jpa 中使用druid Caused by: java.sql.SQLException: interrupt #2916

Open watemei opened 5 years ago

watemei commented 5 years ago

报错内容: 2018-11-16 17:58:47 marketingcenter [hystrix-UserRightController-1] INFO  c.t.common.aspect.log.ServiceAspect[43] [TxId :  , SpanId : ]- Service Exception      :      class javax.persistence.PersistenceException:javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection     at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)     at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)     at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:492)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:372)     at com.sun.proxy.$Proxy154.getResultList(Unknown Source)     at com.tiangong.marketing.service.bss.impl.UserRightServiceImpl.findPageByUserId(UserRightServiceImpl.java:108)     at com.tiangong.marketing.service.bss.impl.UserRightServiceImpl$$FastClassBySpringCGLIB$$8822e0c7.invoke(<generated>)     at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)     at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)     at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52)     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)     at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:84)     at com.tiangong.common.aspect.log.ServiceAspect.doAround(ServiceAspect.java:39)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     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:627)     at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616)     at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)     at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:52)     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)     at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)     at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671)     at com.tiangong.marketing.service.bss.impl.UserRightServiceImpl$$EnhancerBySpringCGLIB$$41923145.findPageByUserId(<generated>)     at com.tiangong.marketing.web.UserRightController.myUserright(UserRightController.java:181)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at com.netflix.hystrix.contrib.javanica.command.MethodExecutionAction.execute(MethodExecutionAction.java:116)     at com.netflix.hystrix.contrib.javanica.command.MethodExecutionAction.executeWithArgs(MethodExecutionAction.java:93)     at com.netflix.hystrix.contrib.javanica.command.MethodExecutionAction.execute(MethodExecutionAction.java:78)     at com.netflix.hystrix.contrib.javanica.command.GenericCommand$1.execute(GenericCommand.java:48)     at com.netflix.hystrix.contrib.javanica.command.AbstractHystrixCommand.process(AbstractHystrixCommand.java:145)     at com.netflix.hystrix.contrib.javanica.command.GenericCommand.run(GenericCommand.java:45)     at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:302)     at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:298)     at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)     at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)     at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)     at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)     at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)     at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)     at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)     at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)     at rx.Observable.unsafeSubscribe(Observable.java:10151)     at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)     at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)     at rx.Observable.unsafeSubscribe(Observable.java:10151)     at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)     at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)     at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)     at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)     at rx.Observable.unsafeSubscribe(Observable.java:10151)     at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)     at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:56)     at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:47)     at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction.call(HystrixContexSchedulerAction.java:69)     at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)     at java.util.concurrent.FutureTask.run(FutureTask.java:266)     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)     at java.lang.Thread.run(Thread.java:745) Caused by: org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection     at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)     at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)     at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:95)     at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:90)     at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:112)     at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:47)     at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:146)     at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:172)     at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:148)     at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1929)     at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1898)     at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1876)     at org.hibernate.loader.Loader.doQuery(Loader.java:919)     at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336)     at org.hibernate.loader.Loader.doList(Loader.java:2617)     at org.hibernate.loader.Loader.doList(Loader.java:2600)     at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2429)     at org.hibernate.loader.Loader.list(Loader.java:2424)     at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:336)     at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1967)     at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:322)     at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:125)     at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:606)     at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:483)     ... 69 more Caused by: java.sql.SQLException: interrupt     at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1404)     at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1247)     at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4619)     at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:680)     at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4615)     at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1225)     at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1217)     at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:90)     at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)     at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:386)     at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:87)     ... 89 more Caused by: java.lang.InterruptedException     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:1401)     ... 99 more https://blog.csdn.net/wxb880114/article/details/84143732

bayern01kahn commented 5 years ago

请问这个bug 修复了吗? 使用 1.1.12 .
遇到同样的问题:

20181212 02:20:15 WARN - - SqlExceptionHelper - SQL Error: 0, SQLState: null 20181212 02:20:15 ERROR- - SqlExceptionHelper - interrupt 2018-12-12 13:20:15.443 [pool-3-thread-629] ERROR c.c.c.api.decider.ApiServiceDecider - Processing xxx got exception org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:431) ~[spring-orm-4.3.20.RELEASE.jar:4.3.20.RELEASE] at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377) ~[spring-tx-4.3.20.RELEASE.jar:4.3.20.RELEASE] at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:461) ~[spring-tx-4.3.20.RELEASE.jar:4.3.20.RELEASE] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:277) ~[spring-tx-4.3.20.RELEASE.jar:4.3.20.RELEASE] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) ~[spring-tx-4.3.20.RELEASE.jar:4.3.20.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.20.RELEASE.jar:4.3.20.RELEASE] at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) ~[spring-aop-4.3.20.RELEASE.jar:4.3.20.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.20.RELEASE.jar:4.3.20.RELEASE] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) ~[spring-aop-4.3.20.RELEASE.jar:4.3.20.RELEASE] at com.cozitrip.hotelbed.service.HotelBedsService$$EnhancerBySpringCGLIB$$ba25d607.getBookingAgent() ~[classes/:na] at com.cozitrip.cicada.api.decider.ApiServiceDecider$3.call(ApiServiceDecider.java:620) [classes/:na] at com.cozitrip.cicada.api.decider.ApiServiceDecider$3.call(ApiServiceDecider.java:613) [classes/:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_65] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_65] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_65] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_65] Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.jpa.spi.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1771) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:64) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] at org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:67) ~[spring-orm-4.3.20.RELEASE.jar:4.3.20.RELEASE] at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:380) ~[spring-orm-4.3.20.RELEASE.jar:4.3.20.RELEASE] ... 15 common frames omitted Caused by: org.hibernate.exception.GenericJDBCException: Could not open connection at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:235) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:171) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:162) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1471) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:61) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] ... 17 common frames omitted Caused by: java.sql.SQLException: interrupt at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1430) ~[druid-1.1.12.jar:1.1.12] at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1272) ~[druid-1.1.12.jar:1.1.12] at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5007) ~[druid-1.1.12.jar:1.1.12] at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:680) ~[druid-1.1.12.jar:1.1.12] at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5003) ~[druid-1.1.12.jar:1.1.12] at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1250) ~[druid-1.1.12.jar:1.1.12] at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1242) ~[druid-1.1.12.jar:1.1.12] at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:89) ~[druid-1.1.12.jar:1.1.12] at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] ... 22 common frames omitted Caused by: java.lang.InterruptedException: null at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220) ~[na:1.8.0_65] at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335) ~[na:1.8.0_65] at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1427) ~[druid-1.1.12.jar:1.1.12]

watemei commented 5 years ago

我出错的原因应该是配置了hystrix导致不同线程访问出现的,查查代码里多线程方面的吧