Sun GlassFish Message Queue 4.4 Update 1 リリースノート

メッセージキュー 4.4 Update 1 で修正されたバグおよび最近のリリース

メッセージキュー 4.4 Update 1 には、新しいバグの修正と、メッセージキュー 4.x ファミリのこれまでのリリースで解決されたバグの修正が含まれます。

次の各節では、それぞれのリリースで修正されたバグの一覧を示します。

メッセージキュー 4.4 Update 1 で修正されたバグ

次の表に、メッセージキュー 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 で修正されたバグ

次の表に、メッセージキュー 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 で修正されたバグ

次の表に、メッセージキュー 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 で修正されたバグ

次の表に、メッセージキュー 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 で修正されたバグ

次の表に、メッセージキュー 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 で修正されたバグ

次の表に、メッセージキュー 4.0 で修正されたバグを示します。

表 1–12 メッセージキュー 4.0 で修正されたバグ

バグ番号 

説明 

4986481 

メッセージキュー 3.5 では、自動再接続モードでの Session.recover の呼び出しがハングすることがありました。

4987325 

Session.recover の呼び出し後に、再配信されたフラグは再配信されたメッセージに対して false に設定されました。

6157073 

新しく接続メッセージが変更され、接続の合計数のほかにサービス上の接続数も表示されるようになりました。 

6193884 

メッセージキュー は、メッセージに非アスキー文字を使用するロケールで文字化けメッセージを syslog に出力します。 

6196233 

JMSMessageID を使用したメッセージ選択が機能しません。

6251450 

クラスタのシャットダウン時、 connectListConcurrentModificationException が発生します。

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 

TopicConnectionFactoryClientID

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 データベースへのサポートを追加。