【问题标题】:Can java SSLException: closing inbound before receiving peer's close_notify be safely ignored?java SSLException:在接收对等方的 close_notify 之前关闭入站可以安全地忽略吗?
【发布时间】:2021-10-25 11:26:47
【问题描述】:

我正在使用MySQL Connector/J 5.1.47 (2018-08-17) 从 java 1.8 应用程序连接到 MySQL 5.7 服务器。我知道这是一个旧版本的库,但我需要使用它,因为我还需要从同一个 java 应用程序连接到 MySQL 5.5 数据库,这是我知道的支持 5.5 和 5.7 的最后一个版本.我连接到两个数据库都没有问题,但是当我尝试关闭其中一个连接时,我的日志中打印出以下错误:

Wed Aug 25 10:48:03 IST 2021 WARN: Caught while disconnecting...

EXCEPTION STACK TRACE:

** BEGIN NESTED EXCEPTION ** 

javax.net.ssl.SSLException
MESSAGE: closing inbound before receiving peer's close_notify

STACKTRACE:

javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
    at sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:726)
    at sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:705)
    at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:2249)
    at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4232)
    at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1472)
    at ie.myapp.Database.closeConnection(Database.java:115)

** END NESTED EXCEPTION **

注意这里没有抛出异常。此警告正在java.sql.Connection.close() 调用中的某处打印。有对这个错误的引用,但我遇到的一个常见建议是在连接上禁用 SSL(我不能/不会这样做)。

无论如何,基于this conversation regarding a pull request for the MySQL connector library,我的理解是警告被抑制或从更高版本的库中删除,这表明警告是无害的?

另外,我已经编写了一些测试来确认在关闭与我的数据库的连接后,数据库确实没有用户/会话的记录,例如select id, user... from information_schema.processlist 粗略检查数据库上没有资源泄漏。

所以,我的问题是:任何了解此警告(或了解可能导致此警告的原因)的人都可以告诉我忽略它是否会产生任何副作用吗? (除了用那个警告填充我的日志)。

【问题讨论】:

    标签: java mysql jdbc mysql-connector


    【解决方案1】:

    实际上,这是 Java 11 上的 MySQL 驱动程序的问题。此问题已在 Connector/J 版本 8.0.16 中得到修复。此 SSLException 日志在此升级后未出现。 错误参考:https://bugs.mysql.com/bug.php?id=93590

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 2019-03-27
      • 1970-01-01
      • 2019-04-07
      • 2019-09-25
      • 2017-03-12
      • 2015-11-03
      • 2014-01-08
      • 1970-01-01
      相关资源
      最近更新 更多