开发者社区> 问答> 正文

数据源创建失败后建议终止CreateConnectionThread线程

数据源创建失败后,后台CreateConnectionThread线程不断报错,即时设置了connectionErrorRetryAttempts也不起作用。建议超过失败重试次数后就终止该线程。

原提问者GitHub用户gooree

展开
收起
山海行 2023-07-05 21:36:08 145 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在使用数据库连接池时,如果数据源创建失败,建议终止CreateConnectionThread线程,以免线程一直运行导致资源浪费和性能下降。

    CreateConnectionThread是Druid连接池中的一个线程,它负责创建连接并将连接加入连接池。如果数据源创建失败,连接池无法正常工作,CreateConnectionThread线程将一直处于运行状态,占用系统资源。

    为了解决这个问题,可以在数据源创建失败后,调用DruidDataSource的close()方法来关闭连接池,并终止CreateConnectionThread线程。例如:

    Copy
    try {
    // 创建数据源
    DruidDataSource dataSource = new DruidDataSource();
    // 设置连接池配置
    // ...
    dataSource.init();
    } catch (Exception e) {
    // 数据源创建失败,关闭连接池
    dataSource.close();
    }
    在这个示例中,如果数据源创建失败,就会调用dataSource.close()方法来关闭连接池。在关闭连接池的过程中,CreateConnectionThread线程也会被终止,从而释放系统资源。

    2023-07-30 09:39:48
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    当数据源创建失败后,如果后台的CreateConnectionThread线程不断报错且无法通过设置connectionErrorRetryAttempts生效,终止该线程是一种合理的做法。这可以防止不必要的重试和错误日志的积累。

    在终止CreateConnectionThread线程之前,你可以考虑添加一些条件判断,以避免过早地终止线程。例如,你可以检查失败次数是否超过一定阈值,或者在达到失败次数后增加一段延迟时间再终止线程,以确保有足够的时间处理其他可能的操作。

    具体的实现方法可能因你的代码结构和业务逻辑而有所不同,你可能需要进行适当的修改。请确保在终止线程前,首先考虑线程的安全退出和释放资源,以避免可能的问题。

    另外,建议你仔细检查报错日志和数据源创建的相关代码,以确认错误原因并尽可能修复问题。如果问题仍然存在,可以考虑向Druid的开发团队或社区反馈该问题,以获取更准确的解决方案和支持。

    2023-07-11 17:10:00
    赞同 展开评论 打赏
  • DruidDataSource源码1973行开始,CreateConnectionThread函数里面。errorCount>connectionErrorRetryAttempts条件不成立,会一直出现打印日志的情况。如果breakAfterAcquireFailure设置为true,就会停止

                if (errorCount > connectionErrorRetryAttempts && timeBetweenConnectErrorMillis > 0) {
                    if (breakAfterAcquireFailure) {
                        break;
                    }
    
                    try {
                        Thread.sleep(timeBetweenConnectErrorMillis);
                    } catch (InterruptedException interruptEx) {
                        break;
                    }
                }
    

    原回答者GitHub用户zhangjianweibj

    2023-07-06 12:16:41
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载