dbtype:mysql/oceanbasedbversion:5.7/4.3druid verion:1.2.20stacktrace info:
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
at java.base/java.util.concurrent.CopyOnWriteArrayList.elementAt(CopyOnWriteArrayList.java:390)
at java.base/java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:403)
at com.alibaba.druid.filter.FilterChainImpl.nextFilter(FilterChainImpl.java:455)
at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:530)
at com.alibaba.druid.filter.FilterAdapter.connection_prepareStatement(FilterAdapter.java:908)
at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:531)
at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.prepareStatement(ConnectionProxyImpl.java:328)
at com.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:369)
error info:在多线程使用由druid创建的同一个数据库连接时,会抛出上述异常。具体的报错原因是程序在调用FilterChainImpl:nextFilter()时因该方法并未进行并发控制且pos++没有使用原子操作,导致并发时pos值超过filtersize大小引起数组越界。
dbtype:mysql/oceanbase dbversion:5.7/4.3 druid verion:1.2.20 stacktrace info: Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2 at java.base/java.util.concurrent.CopyOnWriteArrayList.elementAt(CopyOnWriteArrayList.java:390) at java.base/java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:403) at com.alibaba.druid.filter.FilterChainImpl.nextFilter(FilterChainImpl.java:455) at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:530) at com.alibaba.druid.filter.FilterAdapter.connection_prepareStatement(FilterAdapter.java:908) at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:531) at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.prepareStatement(ConnectionProxyImpl.java:328) at com.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:369) error info:在多线程使用由druid创建的同一个数据库连接时,会抛出上述异常。具体的报错原因是程序在调用FilterChainImpl:nextFilter()时因该方法并未进行并发控制且pos++没有使用原子操作,导致并发时pos值超过filtersize大小引起数组越界。