メッセージキュー 4.4 Update 1 には、新しいバグの修正と、メッセージキュー 4.x ファミリのこれまでのリリースで解決されたバグの修正が含まれます。
次の各節では、それぞれのリリースで修正されたバグの一覧を示します。
次の表に、メッセージキュー 4.4 Update 1 で修正されたバグを示します。これらの問題の一部には、「(OpenMQ)」のマークが付いています。これは、Sun GlassFish メッセージキュー の基になっているオープンソースプロジェクト Open Message Queue で問題が解決されたことを示しています。
表 1–7 メッセージキュー 4.4 Update 1 で修正されたバグ
バグ |
説明 |
---|---|
6590909 |
アドレスリストが上書きされるときに、DIRECT モードの MDB がリモートブローカに接続しません。 |
6616704 |
1 つのセッション内に多数のコンシューマが作成されたときに、ブローカのメモリーが増大します。 |
6745761 |
2 つの接続が同じ XA TX で使用されている場合 (JMSJCA を使用)、XAResource.isSameRM() は true を返すべきです。 |
6745763 |
2 つの接続が同じ XA TX で使用されている場合 (JMSRA DIRECT モード)、XAResource.isSameRM() は true を返すべきです。 |
6745768 |
2 つの接続が同じ XA TX で使用されている場合 (JMSRA LOCAL/REMOTE)、XAResource.isSameRM() は true を返すべきです。 |
6760450 |
MQ (GF) インスタンスを停止せずにマシンを再起動すると、メッセージストアが破損します。 |
6766241 |
UMS: SendMsg.html の AJAX の例が、デフォルトのコンテキストルートとして /ums を使用します。/imqums を使用するべきです。 |
6766852 |
DirectXAResource が、ブローカの CONFLICT 状態を「TxID はすでに使用されています」に変換します。 |
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 サンプルアプリケーションが、JDK 6 を使用する AIX で例外をスローします。 |
6835420 |
NoGCDefault のデフォルト値の計算が間違っています。メモリーが少ないときに GC が大きくなりすぎます。 |
6852018 |
エラーメッセージの「永続コンシューマ {0} を追加できません。接続に対するクライアント ID が設定されていません。」は誤解を招きます |
6856991 |
ブローカを再起動して、永続コンシューマの PREPARED トランザクションをロールバックしたあとに、NullPointerException が発生します。 |
6874125 |
警告: MQJMSRA_DC2001: connectionId=555670328604044289:_destroy(): ... 接続で呼び出されました。 |
6878945 |
RFE: JMSBridge: ユーザー名とパスワードを指定して接続ファクトリから接続を作成することの許可。 |
6881493 |
管理一時送信先は、HA ブローカに保存されるべきではありません。 |
6881753 |
RFE JMSBridge: ターゲットに転送する前に各メッセージに jmsbridge 名のタグを付けることの許可。 |
6884673 |
MQ 4.4 Broker が MQ 3.7 または 3.6 Broker とクラスタ接続を確立できませんでした。 |
6886390 |
発行された持続またはトランザクションのメッセージが DMQ に送られると、これらを DMQ から消費するときに、mq.sys.dmq が見つからないというエラーが発生する場合があります。 |
6886515 |
JMX を使用して組み込みブローカ内の送信先を削除するときに、AccessControlException が発生します。 |
6890628 |
ブローカのプロパティー imq.autocreate.destination.isLocalOnly=true を設定しても効果がありません。 |
6891615 |
ブローカ 4.3 を GlassFish で実行する場合、常にセレクタが動作するわけではありません。 |
6891624 |
「imqcmd list dst」を実行したときに、メッセージの「Remote」が「Count」よりも大きくなる場合があります。 |
6891629 |
セレクタで算術例外が発生した場合は、ユーザーにわかりやすいメッセージが必要です。 |
6891717 |
ifimq.transaction.autorollback=true、autorollback の PREPARED の確認がクリアされていないと、TransactionAckExistEx が発生します。 |
6891802 |
リモートトランザクションの確認をテイクオーバーしたあと、ブローカを再起動すると、「[B4061]: トランザクション ID を使用できません。現在使用されています」と表示されます。 |
6892512 |
メモリーリーク: tempDest.delete() を呼び出したときに、一時送信先が接続から削除されません。 |
6895040 |
マスターブローカに一時送信先がある場合、uidprefix ロックのタイムアウトの経過後、スレーブブローカは起動時に uidprefix を取得できません。 |
6896230 |
マスターブローカをスレーブと同期したあと、マスターブローカの再起動中にマスターブローカで作成された新しいコンシューマが伝達されない場合があります。 |
6896764 |
TransactionAcknowledgement の equals メソッドが正しくありません。 |
6898355 |
ブローカ再起動時のクラスタマネージャーの初期化中に、テイクオーバーの完了を待たずに、テイクオーバーのロックがリセットされます。 |
6901405 |
RFE: 指定した場合に、JDBC ベンダー情報とベンダーのプロパティーをログに記録する。 |
16 (OpenMQ) |
ブローカ 4.3 を GlassFish で実行する場合、常にセレクタが動作するわけではありません。 |
17 (OpenMQ) |
posgtresql (8.1) では openmq 4.3 HA が動作しません (imqbrokerd を起動できません)。 |
22 (OpenMQ) |
存在していないバイナリをインストーラが参照して失敗します。 |
25 (OpenMQ) |
TemporaryTopic の作成時にメモリーがリークします。 |
29 (OpenMQ) |
ブローカの分離。 |
30 (OpenMQ) |
「imqcmd list dst」を実行したときに、メッセージの「Remote」が「Count」よりも大きくなる場合があります。 |
31 (OpenMQ) |
セレクタで算術例外が発生したときに、ユーザーにわかりやすいメッセージが必要です。 |
32 (OpenMQ) |
int-> long のオーバーフローの修正。 |
33 (OpenMQ) |
OpenMQ インストーラ: 日本語のロケールで実行したときに、「無効な SwiXML 記述子」のエラーが発生します。 |
次の表に、メッセージキュー 4.4 で修正されたバグを示します。
表 1–8 メッセージキュー 4.4 で修正されたバグ
バグ |
説明 |
---|---|
6242247 |
2 つのブローカが同じマシン上にあり、同じ名前である場合、マスターブローカを持つ MQ クラスタが起動後にハングアップします。 |
6760937 |
再起動されたブローカが DB に再接続しません。 |
6763252 |
期限切れまたは削除されたメッセージを確認するときに、ブローカは NPE よりも意味のあるメッセージをログに記録するべきです。 |
6765410 |
マスターブローカがローカルの配信対象に 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 |
クライアントが確認の確認を要求しなかった場合に、非トランザクションのリモート確認はリモートの応答を待つべきではありません。 |
6834735 |
Tuxedo TM が START 状態のトランザクションをタイムアウトするときに、混乱を招く「予期しないブローカ内部エラー」のログメッセージが記録されます。 |
6836364 |
トピックがサブスクライバより前に作成されている場合、ワイルドカードサブスクライバがリモートメッセージを受信しません。 |
6836691 |
HA(JCAPS): XA の受信側がメッセージをロールバックしてコミットしたあと、受信時に「メッセージがすでに削除されている」という例外が発生します。 |
6836749 |
HA(JCAPS): 永続サブスクリプションの 1 つでメッセージをロールバックしてコミットしたあと、受信時に「ストアに確認応答が存在する」という例外が発生します。 |
6837671 |
HA(JCAPS): コミットが成功したあと、XAResourceImpl.rollback の実行時にコミットしたメッセージが繰り返し配信されます。 |
6839193 |
RFE: C++ コンパイラの Visual Studio 2008 SP1 へのアップグレード。 |
6845625 |
リモートコンシューマの作成と終了を繰り返すと、ブローカが低メモリー状態になります。 |
6852207 |
リモートブローカにメッセージを送信したときの NPE により、メッセージパケットの読み取り時にリモートブローカがメッセージを処理できない状態になります。 |
6853822 |
FAILED トランザクションを終了するときの、「操作 END_TRANSACTION を実行できません」という例外のメッセージは混乱を招きます。 |
6854142 |
「クラスタ接続を待っています」、「クラスタ接続を終了しました」のメッセージが 3 分ごとにリモートブローカに送られます。 |
6858121 |
リモートトランザクションが存在する場合に、「imqcmd list txn」でブローカのログに記録される「不明なトランザクション」の警告は混乱を招きます。 |
6858488 |
リモート参加のブローカが COMMITTED トランザクションを削除した場合、その COMMITTED トランザクションはトランザクションのホームブローカから削除されません。 |
6858905 |
Consumer.destroyConsumer で ConcurrentModificationException が発生します。 |
6861362 |
RFE: JMSBridge: ターゲット送信先とソース Message.getJMSDestination の自動マップのサポート。 |
6861528 |
RFE: JMSBridge: MessageTransformer.transform() で、ターゲットにある別の送信先へのメッセージの分岐を許可する。 |
6861653 |
トランザクションの負荷が高い状態で、過度のクラスタトランザクション情報が COMMIT が完了していない停止中のリモートブローカに送信されます。 |
6862413 |
「mq://xxx.xxx.xx.xx:pppp/ ... に 60 秒以内に到達できます」のメッセージは混乱を招きます。 |
6863867 |
停止したリモートブローカからの保留中の COMMITTED がある場合、HA ブローカの再起動時に MissingResourceException が発生します。 |
6867596 |
ブローカの再起動後に回復した PREPARED トランザクションが、ブローカをもう一度再起動すると、再び PREPARED 状態に戻ります。 |
6868525 |
リンク確立時に一時送信先をリモートブローカに転送すると、NullPointerException が発生します。 |
6868578 |
ブロードキャストまたはユニキャストの一部は、リンクが確立されたことを確認しないため、リンクのハンドシェークに干渉してリンクが停止します。 |
6871612 |
HA:保留中のブローカが停止している場合、リモートメッセージを消費するときに、「トランザクションの完了を通知できません..」のメッセージが記録されます。 |
6886391 |
メッセージがすでに削除されている場合、メッセージの確認時に NullPointerException が発生します。 |
次の表に、メッセージキュー 4.3 で修正されたバグを示します。
表 1–9 Message Queue 4 で修正されたバグ3
バグ |
説明 |
---|---|
6634033 |
クライアントが作成されたときに、クラスタプロトコルが imqConsumerFlowLimit の値をリモートブローカに伝達しません。 |
6713012 |
リモートブローカの再起動と同時に、クラスタ内のブローカでコンシューマを破棄すると、一部のメッセージが配信されない場合があります。 |
6727555 |
ブローカのログメッセージ「Max bytes per msg exceeded」が実際のメッセージサイズを表し、max bytes per message の値と入れ替わっています。 |
6737404 |
JMX メトリックは、送信先 (トピックおよびキュー) からディスパッチされているが、まだコンシューマに配信されていないメッセージの数を示す必要があります。 |
6740568 |
単一のトランザクションで消費されたメッセージが多すぎると、ブローカが例外をスローします。 |
6758524 |
永続サブスクリプションを一覧表示するコマンド (imqcmd list dur -d "foo.*") で、送信先名にワイルドカード文字を使用できません。 |
6758952 |
imq.portmapper.hostname=localhost を設定すると、ブローカがクラスタ内に接続できなくなります。 |
6758817 |
imq.cluster.hostname=localhost (非推奨) を設定すると、別のマシンのブローカがクラスタ内に接続できなくなります。 |
次の表に、メッセージキュー 4.2 で修正されたバグを示します。
表 1–10 Message Queue 4.2 で修正されたバグ
バグ |
説明 |
---|---|
6581592 |
インストーラまたはアンインストーラがテキストモード (installer –t ) で実行されているときは、「概要」画面にログファイルまたは概要ファイルを含むディレクトリが表示されますが、これらのファイルの名前のリストは表示されません。 |
6585911 |
インストーラにバンドルされている、インストーラの実行に使用する JRE が、インストーラの「JDK の選択」画面に正しく表示されません。 |
6587112 |
複数バイトロケールで、インストーラの「概要」画面に無意味な文字が表示されます。 |
6587127 |
回答ファイルを参照して (installer -a filename -s) インストーラを実行するときに、回答ファイルが存在しない場合、矛盾した不明瞭なエラーメッセージが表示されます。 |
6590969 |
クライアント接続認証で、DN ユーザー名形式が許可されます。 |
6594381 |
Message Queue 4.1 ローカリゼーション RPM のインストール (「多言語パッケージ」画面で「Message Queue 多言語パッケージのインストール」チェックボックスにチェックマークを付けた場合に実行される) は、古いバージョンの Message Queue ローカリゼーション RPM がシステムに存在すると、異常終了します。 |
6599144 |
Message Queue 4.2 のアンインストール時に、Java SE 6 ではスプラッシュ画面とアンインストーラがハングアップして空のグレー画面になりますが、Java SE 5 では正しく動作します。 |
6615741 |
ロールバックの前に元のコンシューマが閉じられると、ロールバックされたトランザクションコンシューマセッションで配信されたメッセージは再配信されません。 |
6629922 |
分散トランザクションハンドラは、非アクティブなコンシューマ に正しい順序でメッセージを再配信しません。 |
6635130 |
送信先のメモリー制限またはメッセージ制限に達したために一時停止された後、ブローカは、非持続メッセージのプロデューサに 生成を再開するように通知できません。 |
6641117 |
ロールバックの後に元のコンシューマが閉じられると、ロールバックされたトランザクションコンシューマセッションで配信されたメッセージは再配信されません。 |
6683897 |
設定が正常に完了したように見える場合でも、Message Queue インストーラの概要画面に設定エラーが報告されます。インストーラは、一部のコンピュータの /dev/sterr に書き込むことができません。 |
6684069 |
コンシューマトランザクションで多数のメッセージがリモートクライアントに配信されるブローカクラスタで、トランザクションのコミットに障害が発生します。 |
6688935 |
Portmapper の読み取りのタイムアウトが短すぎます。 |
6695238 |
C クライアントアプリケーションは、パスにスペースが含まれている場所にインストールされたブローカに接続できません。 |
6710168 |
送信先が再開されないまま 2 回続けて一時停止されると、コンシューマはメッセージを消費しなくなります。 |
6710169 |
JMX 操作 ConsumerManagerMonitor.getConsumerInfo は、通知モードでは常に SESSION_TRANSACTED を返します。 |
次の表に、メッセージキュー 4.1 で修正されたバグを示します。
表 1–11 Message Queue 4.1 で修正されたバグ
バグ |
説明 |
---|---|
6381703 |
処理されたリモートメッセージが、そのメッセージの発信元のブローカが再起動された場合に、2 回コミットされることがあります。 |
6388049 |
未完了の分散トランザクションをクリーンアップできません。 |
6401169 |
imqcmd のコミットおよびロールバックオプションで、確認のプロンプトが表示されません。 |
6473052 |
自動作成されたキューのデフォルトはラウンドロビンであるべきです。(MaxNumberConsumers = -1)。 |
6474990 |
ブローカのログに、imqcmd list dst コマンドに対して ConcurrentModificationException が示されます。 |
6487413 |
LimitBehavior が REMOVE_OLDEST または REMOVE_LOWER_PRIORITY のときに、メモリーがリークします。 |
6488340 |
ブローカがスピンし、クライアントは確認に対する応答を待機します。 |
6502744 |
ブローカが、デッドメッセージキューのデフォルト制限 (1000 のメッセージ) を尊重しません。 |
6517341 |
クライアントが拡張ブローカクラスタへ接続している際の、再接続ロジックを、imqReconnectEnabled プロパティーの値に関係なく再接続を可能にするように改善すべきです。 |
6528736 |
起動時に Windows 自動起動サービス (imqbrokersvc) に障害が発生します。 |
6561494 |
両者が 1 つのセッションを共有していると、メッセージが間違ったコンシューマに配信されます。 |
6567439 |
PREPARED トランザクションの生成メッセージがブローカの再起動後にコミットされた場合、それらのメッセージは順序どおりに配信されません。 |
次の表に、メッセージキュー 4.0 で修正されたバグを示します。
表 1–12 メッセージキュー 4.0 で修正されたバグ
バグ番号 |
説明 |
---|---|
4986481 |
メッセージキュー 3.5 では、自動再接続モードでの Session.recover の呼び出しがハングすることがありました。 |
4987325 |
Session.recover の呼び出し後に、再配信されたフラグは再配信されたメッセージに対して false に設定されました。 |
6157073 |
新しく接続メッセージが変更され、接続の合計数のほかにサービス上の接続数も表示されるようになりました。 |
6193884 |
メッセージキュー は、メッセージに非アスキー文字を使用するロケールで文字化けメッセージを syslog に出力します。 |
6196233 |
JMSMessageID を使用したメッセージ選択が機能しません。 |
6251450 |
クラスタのシャットダウン時、 connectList に ConcurrentModificationException が発生します。 |
6252763 |
java.nio.HeapByteBuffer.putLong/Int に java.nio.BufferOverflowException が発生します。 |
6260076 |
Oracle ストレージを使用すると、起動後に発行される最初のメッセージが遅くなります。 |
6260814 |
JMSXUserID 上のセレクタ処理が、常に false と評価されてしまいます。 |
6264003 |
キューブラウザにコミットされていないメッセージが表示されます。 |
6271876 |
消費されていないメッセージを含むコンシューマを閉じようとすると、接続フロー制御が正しく動作しなくなります。 |
6279833 |
メッセージキュー では、2 つのブローカが同じ JDBC テーブルを使用することはできません。 |
6293053 |
システム IP アドレスが変更された場合、—reset store を使用してストアをクリアしていないと、マスターブローカが正しく起動しません。 |
6294767 |
メッセージキュー ブローカがネットワークソケットを開く場合、そのネットワークソケット上に SO_REUSEADDR を設定する必要があります。 |
6304949 |
TopicConnectionFactory に ClientID |
6307056 |
txn ログがパフォーマンス上のボトルネックになっています。 |
6320138 |
メッセージキュー C API では reply-to ヘッダーからキューの名前を決定することができません。 |
6320325 |
Solaris 上に JDK 1.4 と JDK 1.5 の両方がインストールされている場合、ブローカが JDK 1.5 より前に JDK 1.4 を検出してしまうことがあります。 |
6321117 |
マルチブローカクラスタの初期化で java.lang.NullPointerException が発生します。 |
6330053 |
サブスクライバからトランザクションをコミットしている場合、JMS クライアントで java.lang.NoClassDefFoundError が発生します。 |
6340250 |
C-API で MESSAGE タイプをサポート。 |
6351293 |
Apache Derby データベースへのサポートを追加。 |