alibaba / alibaba/druid

连接池报数据越界java.lang.ArrayIndexOutOfBoundsException

Open
#2,995 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
28.2k
Forks
8.6k
PR merge metrics
No merged PRs in 30d

Description

java.lang.ArrayIndexOutOfBoundsException: 15
at com.alibaba.druid.pool.DruidDataSource.putLast(DruidDataSource.java:1330) ~[druid-1.0.6.jar:1.0.6]
at com.alibaba.druid.pool.DruidDataSource.recycle(DruidDataSource.java:1195) [druid-1.0.6.jar:1.0.6]
at com.alibaba.druid.pool.DruidPooledConnection.recycle(DruidPooledConnection.java:285) [druid-1.0.6.jar:1.0.6]
at com.alibaba.druid.filter.FilterChainImpl.dataSource_recycle(FilterChainImpl.java:4534) [druid-1.0.6.jar:1.0.6]
at com.alibaba.druid.filter.FilterAdapter.dataSource_releaseConnection(FilterAdapter.java:2718) [druid-1.0.6.jar:1.0.6]
at com.alibaba.druid.filter.FilterChainImpl.dataSource_recycle(FilterChainImpl.java:4530) [druid-1.0.6.jar:1.0.6]
at com.alibaba.druid.pool.DruidPooledConnection.syncClose(DruidPooledConnection.java:262) [druid-1.0.6.jar:1.0.6]
at com.alibaba.druid.pool.DruidPooledConnection.close(DruidPooledConnection.java:221) [druid-1.0.6.jar:1.0.6]
at com.alibaba.druid.util.JdbcUtils.close(JdbcUtils.java:82) [druid-1.0.6.jar:1.0.6]
at com.alibaba.druid.pool.DruidDataSource.removeAbandoned(DruidDataSource.java:1804) [druid-1.0.6.jar:1.0.6]
at com.alibaba.druid.pool.DruidDataSource$DestroyConnectionThread.run(DruidDataSource.java:1741) [druid-1.0.6.jar:1.0.6]
2018-12-26 22:36:46.058 ERROR 10.203.121.31 Druid-ConnectionPool-Destory-2027549979 MS com.alibaba.druid.pool.DruidDataSource removeAbandoned abandon connection, open stackTrace
at java.lang.Thread.getStackTrace(Thread.java:1552)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:944)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4544)
at com.alibaba.druid.filter.FilterAdapter.dataSource_getConnection(FilterAdapter.java:2724)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4540)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:882)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:874)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:97)
at com.alibaba.druid.pool.DruidDataSource$$FastClassBySpringCGLIB$$b6170be0.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85)
at com.sf.framework.plugins.trace.db.DatasourceInterceptor.doAround(DatasourceInterceptor.java:30)
at sun.reflect.GeneratedMethodAccessor178.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
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:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

Contributor guide

Open the contributing guide

Research direction

Start in DruidDataSource.java at putLast (line 1330), then trace recycle and removeAbandoned from the stack trace. Reproduce the connection-pool failure around abandoned-connection cleanup and add a regression test showing that recycling no longer raises ArrayIndexOutOfBoundsException.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
database
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.