Message Queue 4.4 Update 1 包含新的错误修复程序,并且还包含在 Message Queue 4.x 系列以前的发行版中修复的错误。
以下各部分列出了在相应发行版中修复的错误:
下表介绍了 Message Queue 4.4 Update 1 中修复的错误。其中一些问题标记为 "(OpenMQ)",这表示该问题已在 Open Message Queue 开源项目中修复,Sun GlassFish Message Queue 以此开源项目为基础。
表 1–7 Message Queue 4.4 Update 1 中修复的错误
错误 |
描述 |
---|---|
6590909 |
覆盖地址列表时,DIRECT 模式 MDB 没有连接到远程代理 |
6616704 |
在会话内创建了很多使用方时,代理内存会增加 |
6745761 |
在同一 XA TX 中使用两个连接时(通过 JMSJCA),XAResource.isSameRM() 应返回 true |
6745763 |
在同一 XA TX 中使用两个连接时(JMSRA DIRECT 模式),XAResource.isSameRM() 应返回 true |
6745768 |
在同一 XA TX 中使用两个连接时 (JMSRA LOCAL/REMOTE),XAResource.isSameRM() 应返回 true |
6760450 |
如果重新引导机器时没有停止 MQ (GF) 实例,则会破坏消息存储库 |
6766241 |
UMS: SendMsg.html AJAX 示例将 /ums 用作默认上下文根目录。应该使用 /imqums |
6766852 |
DirectXAResource 将代理 CONFLICT 状态转换为 "TxID is already in use"(TxID 已在使用中) |
6799428 |
无法使用但可以浏览 DMQ 中的非持久性消息/非长期存放消息。 |
6799428 |
无法使用但可以浏览 DMQ 中的非持久性消息/非长期存放消息。 |
6809353 |
使用 posgtresql (8.1) 的 openmq 4.3 HA 不起作用(imqbrokerd 无法启动) |
6809750 |
客户端 ID 连接无法通过 JMSRA 进行连接入池。 |
6812198 |
使用 MQ 主题度量监视时抛出 Classcast 异常 |
6832000 |
MQ reapExcessConnection JDBC 连接进入“高 CPU”自旋 |
6833109 |
MQClusterMonitor JMX 样例应用程序在使用 JDK6 的 AIX 中抛出异常 |
6835420 |
NoGCDefault 的默认值计算错误。内存较低时可能导致过多 GC。 |
6852018 |
错误消息 "Cannot add durable consumer{0}. No ClientID was set on connection."(无法添加长期使用方 {0}。连接上未设定客户端 ID。)会误导用户 |
6856991 |
代理重新启动然后回滚长期使用方 PREPARED 事务后发生 NullPointerException |
6874125 |
WARNING: MQJMSRA_DC2001: connectionId=555670328604044289:_destroy(): 对未关闭的连接调用 |
6878945 |
RFE: JMSBridge: 允许指定用户名/密码以从连接工厂创建连接 |
6881493 |
不应为 HA 代理存储管理临时目的地 |
6881753 |
RFE JMSBridge: 允许在传输到目标之前使用 jmsbridge 名称标记每条消息 |
6884673 |
MQ 4.4 代理无法与 MQ 3.7/3.6 代理建立群集连接 |
6886390 |
传送至 DMQ 的持久/Txn 发布的消息可导致从 DMQ 使用它们时发生“找不到 mq.sys.dmq”错误 |
6886515 |
使用 JMX 删除嵌入式代理中的目的地时发生 AccessControlException |
6890628 |
设置代理属性“imq.autocreate.destination.isLocalOnly=true”没有效果 |
6891615 |
在 glassfish 中运行代理 4.3 时选定器并非始终正常工作 |
6891624 |
"imqcmd list dst" 中的“远程”消息数可大于“计数”消息数 |
6891629 |
选定器中出现计算异常时需要用户友好消息 |
6891717 |
如果 imq.transaction.autorollback=true,则未清除 autorollback PREPARED 确认会导致 TransactionAckExistEx |
6891802 |
接管远程 tx 确认后重新启动代理时,会显示 "[B4061]:Can not use Transaction ID..currently in use"([B4061]:无法使用事务 ID。当前正在使用”) |
6892512 |
内存泄漏:调用 tempDest.delete() 时没有从连接中删除临时目的地 |
6895040 |
如果主代理有临时目的地,则从代理无法在 uidprefix 锁定超时后启动 uidprefix |
6896230 |
与从代理同步后,重新启动主代理时,在主代理中创建的新使用方可能无法传播到所有代理 |
6896764 |
TransactionAcknowledgement 中的 equals 方法不正确。 |
6898355 |
重新启动代理时,群集管理员初始化过程中会复位接管锁定,而不等待接管完成 |
6901405 |
RFE: 记录 JDBC 供应商信息和供应商属性(如果指定) |
16 (OpenMQ) |
在 glassfish 中运行代理 4.3 时选定器并非始终正常工作 |
17 (OpenMQ) |
使用 posgtresql (8.1) 的 openmq 4.3 HA 不起作用(imqbrokerd 无法启动) |
22 (OpenMQ) |
安装程序引用不存在的二进制文件并失败 |
25 (OpenMQ) |
创建 TemporaryTopic 时发生内存泄漏。 |
29 (OpenMQ) |
代理隔离 |
30 (OpenMQ) |
"imqcmd list dst" 中的“远程”消息数可大于“计数”消息数 |
31 (OpenMQ) |
选定器中出现计算异常时需要用户友好消息 |
32 (OpenMQ) |
修复 int-> long 溢出 |
33 (OpenMQ) |
OpenMQ 安装程序:在 ja 语言环境下运行时出现 "Invalid SwiXML Descriptor"(无效的 SwiXML 描述符)错误 |
下表介绍了 Message Queue 4.4 中修复的错误。
表 1–8 Message Queue 4.4 中修复的错误
错误 |
描述 |
---|---|
6242247 |
如果同一计算机上的两个代理具有相同的名称,则 MQ 群集的主代理在启动后会挂起 |
6760937 |
重新启动代理时,代理不会重新连接到数据库 |
6763252 |
确认消息已过期/已删除消息时,代理应记录比 NPE 更有意义的消息 |
6765410 |
当长期订阅已处于活动状态时,主代理发送本地 Interest 2 次会导致从代理出现异常 |
6796506 |
如果在接收远程 PREPARE 回复时超时,则远程 PREPARED 消息在回滚后不会重新传送 |
6807708 |
如果没有运行主代理,则 TemporaryDestination.delete 会失败 |
6812037 |
RFE: 如果 MQMessageListenerFunc 返回错误,则会将 MQ_CALLBACK_RUNTIME_ERROR 传递到 afterMessageDelivery |
6812755 |
如果 before/afterMessageDelivery 回调返回错误,则 FINE 级别日志消息应为 WARNING |
6816023 |
发生非法字符异常时,Message.setStringProperty() 异常没有显示属性名称 |
6819095 |
RFE: 群集应支持设置输入/输出流缓冲区大小和 TcpNoDelay |
6820585 |
在等待远程代理完成时,"imqcmd list txn" 没有显示 COMMITTED 群集事务 |
6820588 |
使用本地和远程消息的群集事务在等待状态中保持为 COMMITTED |
6821639 |
在 MQRA-DIRECT 模式的 AS 恢复期间,rollback/commitTransaction 出现 NPE |
6823364 |
RFE: 将 C-API 编译器升级为 Solaris 中的 Sun Studio 12 |
6829113 |
重负载下,在 Tuxedo TM 回滚超时事务时发生 ConcurrentModificationException |
6832197 |
如果客户端没有请求 ackack,非事务性远程确认不应等待远程回复 |
6834735 |
Tuxedo TM 超时处于 START 状态的 txn 时,出现模糊的日志消息 "Unexpected Broker Interal Error"(意外的代理内部错误) |
6836364 |
如果通配符订阅者的主题先于订阅者创建,则该订阅者不会接收远程消息 |
6836691 |
HA(JCAPS): XA 接收器回滚并提交消息之后,接收时出现“消息已删除”异常 |
6836749 |
HA(JCAPS): 在回滚某个长期订阅并提交消息后,接收消息时出现“存储库中已存在确认”异常 |
6837671 |
HA(JCAPS): XAResourceImpl.rollback 在成功提交后无限重新传送已提交的消息 |
6839193 |
RFE: 将 C++ 编译器升级到 Visual Studio 2008 SP1 |
6845625 |
反复创建/关闭远程使用方时,代理进入低内存状态 |
6852207 |
向远程代理发送消息时发生的 NPE 导致远程代理在读取消息包时无法处理消息 |
6853822 |
结束 FAILED txn 时出现模糊的异常消息 "Cannot perform operation END_TRANSACTION"(无法执行操作 END_TRANSACTION) |
6854142 |
每 3 分钟就对远程代理报告一次 "Waiting for cluster connection"(等待到远程代理的群集连接)和 "Closed cluster connection"(已关闭群集连接) |
6858121 |
如果存在远程 txn,关于 "imqcmd list txn" 的代理日志中会出现模糊 WARNING "Unknow transaction"(未知事务) |
6858488 |
如果远程参与的代理已删除其 COMMITTED tx,则 COMMITTED txn 不会从 txn 主代理中删除 |
6858905 |
Consumer.destroyConsumer 中出现 ConcurrentModificationException |
6861362 |
RFE: JMSBridge: 支持将目标目的地自动映射到源 Message.getJMSDestination |
6861528 |
RFE: JMSBridge: 允许 MessageTransformer.transform() 将消息分支到目标中的其他目的地 |
6861653 |
发送过多群集 txn 信息以 COMMIT 高 txn 负载下未完成的中断远程代理 |
6862413 |
"mq://xxx.xxx.xx.xx:pppp/ ... is reachable within 60 seconds"(在 60 秒内可以访问 mq://xxx.xxx.xx.xx:pppp/ ...)的日志消息容易造成混淆 |
6863867 |
如果具有来自中断的远程代理的暂挂 COMMITTED,则 HA 代理重新启动时发生 MissingResourceException |
6867596 |
如果代理再次重新启动,则代理上次重新启动后恢复的 PREPARED txn 将返回 PREPARED 状态 |
6868525 |
建立链接时,将临时目的地转发到远程代理会产生 NullPointerException |
6868578 |
某些广播/单点传送不检查链接是否已建立,因此干扰链接握手并导致链接中断 |
6871612 |
HA: 如果暂挂代理中断,则使用远程消息时出现日志消息 "Cant notify transaction.completion.."(无法通知事务已完成。) |
6886391 |
如果已删除消息,则确认消息时会发生 NullPointerException |
下表介绍了 Message Queue 4.3 中修复的错误。
表 1–9 Message Queue 4.3 中修复的错误
错误 |
描述 |
---|---|
6634033 |
创建客户端时,群集协议没有将 imqConsumerFlowLimit 的值传递到远程代理。 |
6713012 |
如果在远程代理重新启动时,群集中某个代理的使用方被销毁,则将不传送某些消息。 |
6727555 |
代理日志消息 "Max bytes per msg exceeded"(超过每条消息的最大大小(字节))将实际的消息大小和每条消息的最大大小(字节)值进行了互换。 |
6737404 |
JMX 度量需要提供从目的地(主题和队列)分发但要传送给使用方的消息计数。 |
6740568 |
当单个事务中使用的消息过多时,代理抛出异常。 |
6758524 |
列出长期订阅的命令 (imqcmd list dur -d "foo.*") 不接受目的地名称中的通配符。 |
6758952 |
设置 imq.portmapper.hostname=localhost 导致多个代理无法连接到一个群集中。 |
6758817 |
设置 imq.cluster.hostname=localhost(不建议使用)导致不同计算机上的代理无法连接到一个群集中。 |
下表介绍了 Message Queue 4.2 中修复的错误。
表 1–10 Message Queue 4.2 中修复的错误
错误 |
描述 |
---|---|
6581592 |
在文本模式下运行安装程序 (installer –t) 或卸载程序时,“摘要”屏幕将显示包含日志/摘要文件的目录,但不会列出这些文件的名称。 |
6585911 |
安装程序的“JDK 选择”屏幕未正确包含与安装程序捆绑在一起并用于运行安装程序的 JRE。 |
6587112 |
在多字节语言环境中,安装程序“摘要”屏幕显示乱码。 |
6587127 |
在通过引用应答文件以运行安装程序 (installer -a filename -s) 时,如果该应答文件不存在,则错误消息不一致且含混不清。 |
6590969 |
在客户端连接验证中允许使用 DN 用户名格式。 |
6594381 |
如果系统上存在 Message Queue 本地化 RPM 的旧版本,Message Queue 4.1 本地化 RPM 安装(通过在“多语言软件包”屏幕上选中“安装 Message Queue 多语言软件包”复选框来执行此操作)将会失败。 |
6599144 |
在 Java SE 6 上卸载 Message Queue 4.2 时,闪屏和卸载程序将挂起,并且显示灰色空白屏幕,但在 Java SE 5 上,则可以正常工作。 |
6615741 |
如果回滚在使用方事务会话中传送的消息,并且在回滚之前关闭了原始使用方,则不会重新传送这些消息。 |
6629922 |
分布式事务处理程序未按正确的顺序将消息重新传送到非活动使用方。 |
6635130 |
代理在由于目的地已达到内存限制或消息限制而暂停后,不能通知非持久性消息的生成方恢复生成操作。 |
6641117 |
如果回滚在使用方事务会话中传送的消息,并且在回滚之后关闭了原始使用方,则不会重新传送这些消息。 |
6683897 |
尽管配置显示已成功完成,但 Message Queue 安装程序的“摘要”屏幕却报告以下配置错误:在某些计算机上,安装程序无法写入 /dev/sterr。 |
6684069 |
对于在使用方事务中将大量消息传送到远程客户端的代理群集,无法提交事务。 |
6688935 |
端口映射器读取超时的默认值太小。 |
6695238 |
如果代理的安装路径中包含空格,C 客户端应用程序将无法连接到该代理。 |
6710168 |
如果目的地暂停两次并且在两次暂停之间未进行恢复,使用方将不再使用消息。 |
6710169 |
JMX 操作 ConsumerManagerMonitor.getConsumerInfo 始终为确认模式返回 SESSION_TRANSACTED。 |
下表介绍了 Message Queue 4.1 中修复的错误。
表 1–11 Message Queue 4.1 中修复的错误
错误 |
描述 |
---|---|
6381703 |
如果传送消息的代理重新启动,则可能会两次提交处理的远程消息。 |
6388049 |
无法清除未完成的分布式事务。 |
6401169 |
imqcmd 的提交和回滚选项不提示进行确认。 |
6473052 |
自动创建的队列的默认设置应该为循环传送。(MaxNumberConsumers = -1)。 |
6474990 |
代理日志显示 imqcmd list dst 命令发生了 ConcurrentModificationException。 |
6487413 |
限制行为是 REMOVE_OLDEST 或 REMOVE_LOWER_PRIORITY 时发生内存泄漏。 |
6488340 |
代理自旋,并且客户端等待确认回复。 |
6502744 |
代理不遵循停用消息队列具有 1000 个消息的默认限制。 |
6517341 |
当客户端连接到增强的代理群集时,客户端运行时环境需要改进重新连接逻辑,以便允许客户端重新连接,而无论 imqReconnectEnabled 属性值是什么。 |
6528736 |
Windows 自动启动服务 (imqbrokersvc) 在启动过程中崩溃。 |
6561494 |
当两个使用方共享一个会话时,消息将传送到错误的使用方。 |
6567439 |
如果在代理重新启动后提交 PREPARED 事务中生成的消息,这些消息的传送顺序就会不正确。 |
下表介绍了 Message Queue 4.0 中修复的错误。
表 1–12 Message Queue 4.0 中修复的错误
错误号 |
描述 |
---|---|
4986481 |
在 Message Queue 3.5 中调用 Session.recover 时,可能会在自动重新连接模式下挂起。 |
4987325 |
在调用 Session.recover 后,将重新传送的消息的 Redelivered 标志设置为 false。 |
6157073 |
将新连接消息更改为既包含总连接数,也包含服务上的连接数。 |
6193884 |
在使用非 ASCII 字符显示消息的语言环境中,Message Queue 向系统日志输出垃圾消息。 |
6196233 |
无法使用 JMSMessageID 选择消息。 |
6251450 |
在群集关闭过程中,connectList 出现 ConcurrentModificationException。 |
6252763 |
java.nio.HeapByteBuffer.putLong/Int 出现 java.nio.BufferOverflowException。 |
6260076 |
使用 Oracle 存储库,在代理启动后的第一条消息发布完后,消息发布速度变得很慢。 |
6260814 |
对 JMSXUserID 进行处理的选择器始终得到 false 值。 |
6264003 |
队列浏览器显示属于尚未提交的事务的消息。 |
6271876 |
关闭具有未使用消息的使用方时,连接流控制无法正常工作。 |
6279833 |
Message Queue 不允许两个代理使用相同的 JDBC 表。 |
6293053 |
除非清除存储库中的内容(使用 —reset store),否则当系统的 IP 地址更改时,主代理将无法正确启动。 |
6294767 |
Message Queue 代理需要在其打开的网络套接字上设置 SO_REUSEADDR。 |
6304949 |
无法设置 TopicConnectionFactory 的 ClientID |
6307056 |
txn 日志成为性能瓶颈。 |
6320138 |
Message Queue C API 无法确定回复标头中的队列名称。 |
6320325 |
即使在 Solaris 上同时安装了 JDK 1.4 和 JDK 1.5,代理有时也会选取前者。 |
6321117 |
多代理群集初始化抛出 java.lang.NullPointerException。 |
6330053 |
从订户提交事务时,JMS 客户端抛出 java.lang.NoClassDefFoundError。 |
6340250 |
支持 C-API 中的 MESSAGE 类型。 |
6351293 |
添加对 Apache Derby 数据库的支持。 |