第4章 3.2.2 の変更点

4.1. エラータ

RHBA-2016:2049 - Red Hat Enterprise MRG Messaging 3.2.2 リリース

BZ#1146849: キューが削除されると自動削除に再送信に失敗する
メッセージング API で受信側の作成には、AMQP 0-10 を使用する際に 2 つの主要なネットワーク対話(キューを宣言し、これにサブスクライブする)が関係します。必要な場合は宣言によってキューが作成されますが、自動配信タイマーがリセットされませんでした。そのため、宣言後にキューが期限切れになる可能性があり、サブスクライブが失敗することを意味します。この問題を解決するために、宣言セマンティクスはキューに関連する auto-deletion タイマーをリセットします。今回のリリースより、キューは宣言とサブスクライブの間に期限切れになり、サブスクライブする呼び出しに失敗しなくなりました。
BZ#1316507 - [C++ client] Message::setContent("") does not work
メッセージ実装は、raw バイトまたはデコードオブジェクトフォームという 2 つのメッセージコンテンツのビューを保持することができます。これは独立して動作します(raw バイトに変更してもオブジェクトコンテンツは変更されません)。メッセージが受信時にオブジェクトフォームにデコードされた場合、再送信するために raw バイトを設定して更新すると、再送信されたメッセージは元のオブジェクトコンテンツを使用していました。今回のリリースより、保留されたオブジェクトコンテンツビューはリセットされるようになりました。さらに、環境変数または設定ファイルにより、オブジェクトフォームへのメッセージの自動デコードを無効にする設定が追加されました。メッセージの内容はアプリケーションのアクションを反映するようになりました。
BZ#1318180 - [MRG2] memory leak in a ring queue でメッセージを上書きする際に、プライマリーブローカーでメモリーリークが発生する
以前のリリースでは、プライマリー HA ブローカーはメッセージ ID と Terler の処理を累積し、メモリーリークが発生していました。HA ブローカーは、必要がなくなった場合にメッセージ ID および Terler の処理を解放し、メモリーリークを削除できるようになりました。
BZ#1324845 - フェデレーションが MRG-M 2 と 3 の間で相互運用されない
管理メソッド link.bridge は、MRG 2 と 3 の間に追加の「credit」引数を取得しました。これにより、MRG 2 ツールは MRG 3 ブローカーにリンクを追加することができませんでした。クレジット引数をサポートする 'broker.create' が導入された 'link.bridge' メソッドが非推奨になりました。MRG 2 および MRG 3 ツールは、MRG 3 ブローカーとともに使用できるようになりました。
BZ#1329582 - バックアップブローカーの優先度リングキューからメッセージを消費すると、ブローカーの segfault がトリガーされる可能性があります。
優先度キューは、コンシューマーが取得した場合でも、メッセージがキューから削除される可能性があります。この場合は、メッセージの状態が、メッセージが有効でなくなったことを示すように変更されます。ただし、コンシューマーセッションの終了時に確認されていないメッセージをリリースするコードは、メッセージがリリースされるようこの状態を確認しませんでした。つまり、デキューされたメッセージを解放しようとし、セグメンテーションフォールトが発生しました。今回のリリース前に状態がチェックされ、メッセージがデキューされている場合でもセグメンテーションフォールトを防ぐようになりました。
BZ#1330539: クライアントが期限切れのメッセージのクレジットを更新しない
クライアント側で期限切れとなるメッセージは、クレジットウィンドウの移動を含む通常のコードパスでは処理されません。したがって、クライアント側で期限切れになるメッセージが多数ある場合は、ウィンドウが前に移動しないため、メッセージのフローが停止する可能性があります。これは、クレジットカードウィンドウが期限切れのメッセージに対しても確実に移動することで修正されました。
BZ#1333437 - 並行してキューを再ルーティングおよび削除する際に segfault
キュー管理オブジェクトのロックがないと、同時キューの削除および管理操作により、ブローカーがクラッシュする可能性があります。本リリースでは適切なロックが追加され、ブローカーのクラッシュを防ぐようになりました。
BZ#1333767 - プライマリーフェイルオーバーの直前に多数のキューを作成し、削除する場合の Occasional segfault
以前のリリースでは、中断されたバックアップリカバリーでメモリーエラーが発生する可能性のある無効なデータが残されていました。本リリースでは、リカバリーが中断され、メモリーの安全性が改善された場合にクリーンアップが改善されました。
BZ#1339449 - [RFE] Improved broker logging for expired messages
今回のリリースには、期限切れのメッセージのブローカーロギングが改善されました。この機能は、キューククリーナーによって期限切れのメッセージがログに記録されなかったために追加されました。期限切れのメッセージは、デバッグレベルのログに含まれるキュー名とメッセージプロパティーとともに、他のメッセージと同じロギングを受け取るようになりました。
BZ#1350023 - ループで自動Del キューから送信解除した場合のプライマリーブローカーでのメモリーリーク
自動削除キューからのサブスクライブ解除時に、不要な情報がプライマリークラスターノードに保存され、リリースされることはありません。そのため、メモリー使用量は時間とともに増加します。不要な情報を保存するコードが削除され、メモリーが累積されなくなりました。
BZ#1359506 - exclusive subscription でキューのオーバーサブスクライブを試みると、Small memory leak
以前のバージョンでは、ワーカースレッドが長期間アイドル状態であった場合、通常のメモリーのフラッシュが行われなかった可能性があり、メモリーリークが発生していました。今回のリリースで、すべてのワーカースレッドが少なくとも 1 分以上アクティブになるようにします。つまり、メモリーは定期的にリリースされ、累積されません。