You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
com.alibaba.druid.pool.DataSourceNotAvailableException: null
at com.alibaba.druid.pool.DruidDataSource.pollLast(DruidDataSource.java:1931)
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1458)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1255)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1235)
弄了个工程来复现这个问题 https://github.com/tankilo/druidbug1
生产环境问题现象
mysql连接数满了,导致应用无法创建物理连接,但是mysql恢复以后发现有一个连接池仍然无法继续创建物理连接,并且没有create connection报错,dump显示poolingCount为0,failContinuous为true,createError为null,lastCreateError在一天前,但是连到这个mysql的其他druid连接池可以创建连接。
业务线程获取链接报错 也一直为
分析
下面是一些猜测,因为出问题后因为一些限制,没法获取很多信息,只是发现这种猜想是可以导致这个问题发生。
在mysql连接数缓解一些后,应用代码里直接调用连接池的createPhysicalConnection来获取物理连接,这里会把createError清空。
poolingCount 一直为0,notEmptyWaitThreadCount因为业务线程获取连接时在failContinuous那行提前报DataSourceNotAvailableException 也一直为0
CreateConnectionTask运行的时候在下面return,导致连接池无法创建出连接。
从语义上来说如果连接池能直接创建出物理连接,失败就没有继续了,failContinuous应该为false。请确认。
The text was updated successfully, but these errors were encountered: