Skip to content

请求回退连接池创建线程逻辑,使用1.2.21遇到连接池关闭问题的都过来 #5771

@codedad1983

Description

@codedad1983

执行单元测试MySqlHexTest就能看到死循环效果:

Caused by: java.net.UnknownHostException: hbase-01
  at java.net.InetAddress.getAllByName0(InetAddress.java:1281)
  at java.net.InetAddress.getAllByName(InetAddress.java:1193)
  at java.net.InetAddress.getAllByName(InetAddress.java:1127)
  at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:130)
  at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)
  ... 9 more

原因是MySqlHexTest测试类配置的jdbcUrl是jdbc:mysql://hbase-01:3306/sonar,而测试环境并没有配置hbase-01的ip地址。
建议借鉴这个PR的做法,把RunTime异常和SQL异常处理合并,如果一次连接都没有创建成功过,就break中止,否则按原来SQL异常处理分支处理。

Originally posted by @zrlw in #4885 (comment)

@zrlw 你提出的场景与 @shilei1987 描述的问题完全不是一码事。测试环境并没有配置hbase-01的ip地址并不会导致真实物理连接被创建,也不存在消耗数据库连接的问题。如此修改这个创建过程逻辑导致我们应用在启动刚开始的故障自恢复能力完全失效。

建议恢复原始逻辑!!!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions