修复 [DruidDataSource.java] shrink 方法中 keeplive的一个bug 导致数据库连接不断增多 #5220
System.arraycopy(connections, removeCount, connections, 0, poolingCount - removeCount); Arrays.fill(connections, poolingCount - removeCount, poolingCount, null);
shrink方法中这两行代码从connections[]数组移除的数据库连接,和shrink方法中这两行代码上面的添加到keepAliveConnections[]数组中的连接不一致
异常结果:
正常的连接引用直接丢失,也就是既不在connections[]数组,也不在keepAliveConnections[]数组 会不断触发新建数据库连接,导致泄露解决办法:
在将连接添加到keepAliveConnections[]数组之后,立即将connections[]数组对应的连接置为null 最后在处理下connections[]数组,将null元素往后排整理下即可;经过验证,连接恢复正常