第 5 章 修复的问题
这个 Eclipse Vert.x 版本包含了来自社区版本 4.3.7 的所有程序错误修复。在社区版本中解决的问题在 Eclipse Vert.x 4.3.7 Wiki 页面中列出。
5.1. 修复了 4.3 发行版本中的问题 复制链接链接已复制到粘贴板!
这部分论述了在 Eclipse Vert.x 4.3 中修复的问题。
在 Eclipse Vert.x 4.3.4 或更早版本中,Google 远程过程调用(gRPC)客户端和服务器间的通信会阻止线程,并导致 io.vertx.core.VertxException 错误。如果可用事件循环线程的数量不足,这会导致 Eclipse Vert.x gRPC Server (vertx-grpc-server)或 Eclipse Vert.x gRPC Client (vertx-grpc-client)改为 self-deadlock。
这个问题已在 Eclipse Vert.x 4.3.5 版本中解决。SSL 初始化的内部上下文现在使用 worker 上下文而不是 event-loop 上下文。
5.1.2. 按 ROWID搜索表数据时 JDBCClient 错误 复制链接链接已复制到粘贴板!
在 Eclipse Vert.x 4.2 中,当尝试使用 ROWID 检索表数据时,vertx-jdbc-client 带有 Oracle JDBC 驱动程序 threw a java.sql.SQLException。出现这个问题的原因是,在 Eclipse Vert.x 4.2 中,ROWID 作为一个字节数组提供。在较早版本的 Eclipse Vert.x 中,ROWID 作为一个字符串类型提供。
这个问题已在 Eclipse Vert.x 4.3.1 发行版本中解决。Eclipse Vert.x 4.2 根据普通 Java 类型执行自定义类型。虽然此行为通常会生成正确的结果,但可能会错误地识别特殊数据库类型。由于自定义类型广播不是现代 JDBC 驱动程序的内置功能,所以 JDBC 客户端现在依赖于驱动程序执行特定于供应商的广播,这些广播更适合于旧的 Eclipse Vert.x heuristics。
5.1.3. 解析 ROWID时 JDBCPool 错误 复制链接链接已复制到粘贴板!
在 Eclipse Vert.x 4.2 中,在尝试解析 ROWID 时,JDBC 池 threw 是一个 java.lang.UnsupportedOperationException。出现这个问题的原因是,在 Eclipse Vert.x 4.2 中,ROWID 无法直接解析为字节数组。在之前的 {VertX 版本中,ROWID 可以解析为字符串类型。
这个问题已在 Eclipse Vert.x 4.3.1 发行版中解决,它基于前面部分所述的解决方案。
5.1.4. 意外的结果是,在使用 PostgreSQL JDBC 驱动程序 9.0 或更高版本时存储的步骤调用 复制链接链接已复制到粘贴板!
在 Eclipse Vert.x 4.2 中,vertx-jdbc-client 带有 PostgreSQL JDBC 驱动程序 9.0 或更高版本,从而导致存储过程调用。出现这个问题的原因是,在 Eclipse Vert.x 4.2 中,vertx-jdbc-client 不支持现代 PostgreSQL 数据库驱动程序和服务器在执行可调用语句时需要的显式 SQL 类型信息。
这个问题已在 Eclipse Vert.x 4.3.1 发行版本中解决。现在,可从查询涉及的所有源中提取可调用的 ResultSet 元数据,以及组成响应一部分的独立结果集。完整信息允许 JDBC 客户端正确识别列中的数据类型并执行正确的广播。