第5章 既知の問題

このセクションでは、AMQ Broker 7.7 の既知の問題について詳しく説明します。

  • ENTMQBR-17 - AMQ222117: クラスター接続を開始できない

    IPv6 をサポートする環境では、ブローカークラスターが適切に初期化に失敗することがあります。この失敗は、ログメッセージ Can't assign requested address で示される SocketException が原因となります。この問題を回避するには、java.net.preferIPv4Stack システムプロパティーを true に設定します。

  • ENTMQBR-463 - クラスターリング設定の属性に順序の制約がある。エラーメッセージを改善するか、単に順序を無視した方がいい

    現時点で、クラスター接続設定の要素の順序は特定の順序で行う必要があります。回避策は、設定スキーマの順序に従うことです。

  • ENTMQBR-520: 別のアドレスにバインドされたキューと同じ名前のアドレスからの受信は許可されるべきではない

    アドレスと同じ名前のキューは、アドレスにのみ割り当てる必要があります。既存のアドレスと同じ名前で、異なる名前のアドレスにバインドされるキューを作成することは、無効な設定です。これを実行すると、誤ったメッセージがキューにルーティングされる可能性があります。

  • ENTMQBR-522 - シャットダウン時に一時ファイルを削除する際のウィンドウ書き込みの問題で実行されているブローカー

    Windows では、ブローカーはシャットダウン時に一時ファイルを正常にクリーンアップしません。この問題により、シャットダウンプロセスが遅くなりました。さらに、ブローカーによって削除されない一時ファイルが、時間の経過と共に累積されます。

  • ENTMQBR-569 - ID を OpenWire から AMQP へ変換すると、ID をバイナリーとして送信する

    A-MQ 6 OpenWire クライアントから AMQP クライアントに相互プロトコルを通信する場合、追加の情報はアプリケーションメッセージプロパティーにエンコードされます。これは、ブローカーによって内部で使用される無害な情報であり、無視することができます。

  • ENTMQBR-599 - Artemis cli によるトラストストアおよびキーストアを定義する

    --ssl-key--ssl-key-password--ssl-trust、および --ssl-trust-password パラメーターを使用したブローカーインスタンスの作成は機能しません。この問題を回避するには、ブローカーの作成後に bootstrap.xml で対応するプロパティーを手動で設定します。

  • ENTMQBR-636 - perf load (mpt) の下で、ジャーナルが破損し、JavaNullPointerException が発生する

    ブローカーが高負荷を管理しているときに IO 関連の問題が発生しないようにするには、JVM に十分なメモリーとヒープ領域が割り当てられていることを確認してください。ActiveMQ Artemis ドキュメントの Performance Tuning 章の Tuning the VM 項を参照してください。

  • ENTMQBR-648 - JMS Openwire クライアントは、定義された purgeOnNoConsumer またはキュー filter を持つキューにメッセージを送信できない

    A-MQ 6 JMS クライアントを使用して、purgeOnNoConsumer を持つキューが true に設定されたアドレスにメッセージを送信します。キューにコンシューマーがない場合は失敗します。A-MQ 6 JMS クライアントを使用する場合は、purgeOnNoConsumer オプションを設定しないことが推奨されます。

  • ENTMQBR-652 - 既知の amq-jon-plugin のバグの一覧

    amq-jon-plugin のこのバージョンでは、ブローカーおよびキューの MBean の既知の問題があります。

    ブローカーの MBean の問題:

    • 接続を閉じると java.net.SocketTimeoutException 例外が発生する
    • listSessions()java.lang.ClassCastException を出力する
    • アドレス設定を追加すると java.lang.IllegalArgumentException が発生する
    • getConnectorServices() 操作が見つからない
    • listConsumersAsJSON() 操作が見つからない
    • getDivertNames() 操作が見つからない
    • ネットワークトポロジーの一覧表示で IllegalArgumentException が発生する
    • 削除アドレス設定で、パラメーター名が間違っている

    キュー MBean の問題:

    • expireMessage() で引数型の不一致例外が発生する
    • listDeliveringMessages()IllegalArgumentException を出力する
    • listMessages()java.lang.Exception を出力する
    • エラーメッセージの引数型不一致で moveMessages()IllegalArgumentException を出力する
    • エラーメッセージの引数型不一致で removeMessage()IllegalArgumentException を出力する
    • removeMessages() が、Can't find operation removeMessage with 2 arguments の例外を出力する
    • retryMessage() が引数型の不一致 IllegalArgumentException を出力する
  • ENTMQBR-655 - [AMQP] populate-validated-user が有効になっているとメッセージを送信できない

    設定オプション populate-validated-user は、AMQP プロトコルを使用して生成されたメッセージではサポートされません。

  • ENTMQBR-738: 提供されるオフラインリポジトリーで AMQ 7 のサンプルをオフラインでビルドできない

    オフライン環境で、AMQ Broker に含まれる例をビルドできません。この問題は、提供されたオフラインの Maven リポジトリーに依存関係がないために発生します。

  • ENTMQBR-897 - 宛先名の特殊文字による Openwire クライアント/プロトコルの問題

    現在、AMQ OpenWire JMS クライアントは、その名前にコンマ (',')、ハッシュ ('#')、および空白を含むキューおよびアドレスにアクセスできません。

  • ENTMQBR-944 - [A-MQ7, Hawtio, RBAC] ユーザーは RBAC によって拒否された場合にフィードバックを取得しない

    コンソールで、許可されていないユーザーが試行した操作が成功しなかったのに成功したことを示すことがあります。

  • ENTMQBR-1498 - HA (レプリケーション、共有ストア) の管理コンソールのダイアグラムが実際のトポロジーを反映しない

    余分なパッシブスレーブを使用してブローカークラスターを設定すると、Web コンソールのクラスターダイアグラムにはこのようなパッシブスレーブは表示されません。

  • ENTMQBR-1815 - 自動更新での Hawtio ビューの変更

    自動更新が有効になっている場合、Hawtio コンソールは 5 秒ごとに画面を更新します。また、自動更新によってビューが Attributes 画面に変更されるため、表示している他の画面からフォーカスが失われます。この問題を回避するには、コンソールの右上隅にある Preferences を選択します。Update rate ドロップダウンリストで、No refreshes を選択します。

  • ENTMQBR-1848 - javax.jms.JMSException: Incorrect Routing Type for queue, expecting: ANYCAST は、qpid-jms クライアントがマルチキャストキューからのメッセージを、FQQN 使用した javax.jms.Queue オブジェクトとして消費するときに発生する

    現在、Qpid JMS クライアントを使用して、複数のキューが設定されているアドレスに FQQN (完全修飾キュー名) を使用してマルチキャストキューにメッセージを送信すると、クライアントにエラーメッセージが表示され、メッセージを送信することができません。この問題を回避するには、ブローカー設定を変更してエラーを解決し、クライアントのブロックを解除します。

  • ENTMQBR-1875 - [AMQ 7, ha, replicated store] バックアップブローカーがライブにならない、または ActiveMQIllegalStateException errorType=ILLEGAL_STATE message=AMQ119026: Backup Server was not yet in sync with live の後にシャットダウンしているようにみえる

    バックアップブローカーがマスターブローカーと同期しようとしている間に、マスターブローカーのページングディスクを削除すると、マスターが失敗します。さらに、バックアップブローカーはマスターとの同期を試みるため、ライブになりません。

  • ENTMQBR-2068 - 一部のメッセージが、HA フェイルオーバー、フェイルバックのシナリオでは受信されるものの、配信されない

    現在、OpenWire クライアントがメッセージを送信している間にブローカーがスレーブにフェールオーバーすると、フェイルオーバー時にブローカーへ配信されるメッセージが失われる可能性があります。この問題を回避するには、承認する前にブローカーがメッセージを永続化していることを確認します。

  • ENTMQBR-2452 - Windows の AMQ 7.2.4 からアップグレードしたブローカー AMQ 7.3.0 がログに記録できない

    Broker インスタンスを Windows の 7.2.4 から 7.3.0 にアップグレードする予定の場合は、アップグレードプロセス時に正しいログマネージャーバージョンを指定しない限り、ロギングは機能しません。詳細は、Windows での 7.2.x から 7.3.0 へのアップグレード について参照してください。

  • ENTMQBR-2470 - [AMQ7, openwire,redelivery] メッセージを消費せずにコンシューマーが閉じられた場合の、増加するメッセージの再配信カウンター

    ブローカーがメッセージを Openwire コンシューマーに送信し、コンシューマーがメッセージを使用する前に閉じられると、ブローカーは保留中のメッセージの再配信数を誤って増やします。この動作の数が max-delivery-attempts 設定パラメーターの値を超える場合、ブローカーは、設定に基づいて、メッセージをデッドレターキュー (DLQ) に送信するか、メッセージを破棄します。この問題は Core プロトコルなどの他のプロトコルには影響しません。

  • ENTMQBR-2593 - ブローカーはクロスプロトコルの消費時にメッセージ ID ヘッダーを設定しない

    Qpid JMS クライアントは、別の Qpid JMS クライアントによってメッセージが生成された場合にのみメッセージ ID が正常に取得します。メッセージが Core JMS または OpenWire クライアントによって生成された場合、Qpid JMS クライアントはメッセージ ID を読み取ることができません。

  • ENTMQBR-2678 - 分離されたマスターが再び稼働した後、クラスターに接続できない

    レプリケーション高可用性 (HA) ポリシーを使用する 3 つ以上のライブバックアップグループのクラスターでは、レプリケーション接続の失敗時にライブブローカーがシャットダウンします。ただし、レプリケーション接続が復元され、元のライブブローカーが再起動すると、ブローカーはブローカークラスターに再度参加できないことがあります。元のライブブローカーがクラスターに再参加できるようにするには、まず新しいライブ (元のバックアップ) ブローカーを停止し、元のライブブローカーを再起動してから、元のバックアップブローカーを再起動します。

  • ENTMQBR-2890 - サイズが n > 1 の CR インスタンスを作成すると、n 番目の ブローカー Pod が 1 度起動し、即座に再起動する

    AMQ Broker Operator を介してカスタムリソース (CR) インスタンスを使用してブローカークラスターをデプロイする場合、(CR の size 属性によって決定される) デプロイの最後のブローカー Pod が起動し、使用可能になる前に一度だけ再起動します。.この問題を回避するには、CR の size 属性を段階的に増やして、目的のクラスターサイズに到達させます。まず、size1 に設定し、ブローカー Pod が開始するのを待ちます。次に、size2 に設定し、Pod が開始するのを待ちます。この場合、どのブローカー Pod も使用可能になる前に再起動されません。

  • ENTMQBR-2928 - Broker Operator が CR の変更から復旧できず、誤った状態が生じている

    AMQ Broker Operator がカスタムリソース (CR) の更新を適用する際にエラーが発生した場合、Operator は復旧しません。具体的には、Operator が CR への追加の更新について予想通りに応答しなくなりました。

    たとえば、メインのブローカー CR の image 属性の値に誤りがあると、ブローカー Pod は ImagePullBackOff の関連エラーメッセージでデプロイに失敗します。その後、誤りを修正して CR の変更を適用すると、Operator は指定された数のブローカー Pod をデプロイしません。さらに、Operator は追加の CR 変更に応答しません。

    この問題を回避するには、最初にデプロイした CR を削除してから、それらを再デプロイする必要があります。既存の CR を削除するには、oc delete -f <CR name> などのコマンドを使用します。

  • ENTMQBR-2942 - Pod #0 が存在しない Pod に問い合わせる

    カスタムリソース (CR) インスタンスの size 属性を変更してブローカーデプロイメントを縮小すると、クラスターの最初のブローカー Pod は、クラスター内の最初のブローカー Pod は、シャットダウンする前に、シャットダウンしたブローカーからのメッセージを移行するために起動したドレイナー Pod への接続を繰り返し試行できます。この問題を回避するには、以下の手順に従います。

    1) デプロイメントを単一のブローカー Pod にスケーリングします。

    2) すべてのドレイン Pod が起動し、メッセージの移行を完了してからシャットダウンします。

    3) 残りの 1 つのブローカー Pod に不明なホスト例外のログエントリーがある場合は、デプロイメントをゼロブローカー Pod に縮小してから 1 つに戻します。

    4) 残りの 1 つのブローカー Pod が例外ベースのログエントリーを記録していないことを確認したら、デプロイメントを元のサイズに戻します。

  • ENTMQBR-3131 - master が強制終了になった場合に、バックアップブローカーに対してトポロジーが正しく更新されない

    ライブ/バックアップのペアが 4 つ以上あるクラスターでライブブローカーが失敗すると、新しく選出されたライブブローカーを含むライブブローカーはすべて、更新されたトポロジーを正しく報告します。ただし、残りのバックアップブローカーには、以下の方法で誤ったトポロジーが表示される場合があります。

    • バックアップブローカーが失敗しているライブブローカーが失敗した場合、残りのバックアップブローカーはトポロジー内にこのバックアップブローカーを 2 回表示します。
    • 失敗したライブブローカーの代わりにバックアップブローカーがフェイルオーバーしない場合、残りのバックアップブローカーには、トポロジー内に失敗したライブブローカーが表示されます。

    この問題を回避するには、各バックアップブローカーの cluster-connection > static-connectors 設定の最初の connector-ref 要素で、予想されるライブブローカーを指定するようにしてください。

  • ENTMQBR-3604 - LDAP ログインモジュールのプールを有効にすると、シャットダウンがハングアップする

    LDAP プロバイダーの接続プールを有効にする (つまり、login.config 設定ファイルの LDAPLoginModule セクションで connectionPooltrue に設定する) と、ブローカークライアントを停止する場合でも LDAP プロバイダーへの接続が永久に開かれる可能性があります。そのため、通常の方法でブローカーをシャットダウンしようとしても、ブローカーはシャットダウンしません。代わりに、SIGKILL などの Linux コマンドを使用してブローカープロセスを終了する必要があります。この状態は、ブローカーの JVM 引数にプールのタイムアウトを指定しても発生します (例: -Dcom.sun.jndi.ldap.connect.pool.timeout=30000)。また、ブローカーのシャットダウンの試行時にアクティブなクライアントはありません。

    この問題を回避するには、login.config 設定ファイルの LDAPLoginModule セクションに connectionTimeout プロパティーの値を設定します。接続プールが接続に対して要求されると、connectionTimeout プロパティーは、最大プールサイズがすでに到達し、プール内のすべての接続が使用中の場合に、ブローカーが接続を待つ最大時間を指定します。詳細は、AMQ ブローカーの設定認証に LDAP を使用 を参照してください。

  • ENTMQBR-3617 - 永続性アドレスの hawtio コンソールのユーザー情報が null である

    コンシューマーが永続的な共有アドレスを作成すると、AMQ Management Console は関連付けられたユーザーを null として表示する場合があります。この問題を回避する方法はありません。

  • ENTMQBR-3695 - Prometheus メトリクスプラグインがロードされているが、NPE が発生する

    オンプレミスブローカーインスタンスを AMQ Broker 7.7 にアップグレードし、そのブローカーで Prometheus プラグインなどのメトリックプラグインがすでに有効になっている場合、ブローカーはプラグインを読み込みますが、プラグインはブローカーランタイムメトリックを収集しません。さらに、アップグレードされたブローカーでメトリクス Web コンテキスト (/metrics など) を呼び出すと、null ポインター例外 (NPE) が表示されます。

    この問題を回避するには、アップグレードされたブローカーの設定を変更して、AMQ Broker の 管理AMQ Broker の Prometheus プラグインを有効にする に示されているようにします。

  • ENTMQBR-3724 - OperatorHub が AMQ Broker Operator の不適切なバリアントを表示する

    OperatorHub を使用して OpenShift Container Platform 4.5 以前に AMQ Broker Operator をデプロイする場合、OperatorHub はホストプラットフォームに適切ではない Operator のバリアントを表示します。これにより、誤った Operator バリアントを選択できます。特に、ホストプラットフォームに関係なく、OperatorHub は Red Hat Integration - AMQ Broker Operator (OpenShift Container Platform の Operator) および AMQ Broker Operator (IBM Z 上の OpenShift Container Platform の Operator) の両方を表示します。

    この問題を回避するには、上記のようにプラットフォームに適した Operator バリアントを選択します。

    OpenShift Container Platform 4.6 では、この問題は解決されています。OperatorHub は、お使いのホストプラットフォームに対応する Operator バリアント のみ を表示します。

  • ENTMQBR-4127 - Operator によって生成されたルート名が OpenShift に対して長すぎる可能性がある

    Operator ベースのデプロイメントのブローカー Pod ごとに、Operator が AMQ Broker 管理コンソールにアクセスするために作成するルートのデフォルト名には、カスタムリソース (CR) インスタンスの名前、OpenShift プロジェクトの名前、および OpenShift クラスターの名前が含まれます。たとえば、my-broker-deployment-wconsj-0-svc-rte-my-openshift-project.my-openshift-domain になります。これらの名前の一部が長い場合、デフォルトのルート名は OpenShift が実施する 63 文字の制限を超えている可能性があります。この場合、OpenShift Container Platform Web コンソールでは、ルートに表示されるステータスが Rejected になります。

    この問題を回避するには、OpenShift Container Platform Web コンソールを使用してルートの名前を手動で編集します。コンソールでルートをクリックします。右上の Actions ドロップダウンメニューで、Edit Route を選択します。YAML エディターで spec.host プロパティーを見つけ、値を編集します。

  • ENTMQBR-4140 - AMQ Broker Operator: storage.size が正しくないとインストールが使用できなくなる

    カスタムリソース (CR) インスタンスの storage.size プロパティーを設定し、永続ストレージのデプロイメントでブローカーに必要な Persistent Volume Claim (PVC) のサイズを指定すると、Operator のインストールがこの値を適切に指定しない場合に使用できなくなります。たとえば、storage.size の値を 1 (つまり、単位を指定しない) に設定したとします。この場合、Operator は CR を使用してブローカーデプロイメントを作成できません。さらに、CR を削除し、storage.size が正しく指定された新規バージョンをデプロイする場合でも、Operator はこの CR を使用して予想通りにデプロイメントを作成することはできません。

    この問題を回避するには、まず Operator を停止します。OpenShift Container Platform Web コンソールで Deployments をクリックします。AMQ Broker Operator に対応する Pod の More options (3 つの垂直ドット) をクリックします。Edit Pod Count をクリックし、値を 0 に設定します。Operator Pod が停止すると、storage.size を正しく指定した CR の新規バージョンを作成します。次に、Operator を再起動するには、Edit Pod Count を再度クリックし、値を 1 に戻します。

  • ENTMQBR-4141 - AMQ Broker Operator: ステートフルセットを再作成した後も手動の関与が必要になる

    デプロイメントのブローカーで必要な Persistent Volume Claim (PVC) のサイズを大きくしようとすると、手動でのステップを加えずに変更は反映されません。たとえば、カスタムリソース (CR) インスタンスの storage.size プロパティーに、PVC の初期サイズを指定するとします。CR を変更して storage.size別の 値を指定する場合、既存のブローカーは元の PVC サイズを引き続き使用します。これは、デプロイメントをゼロブローカーに縮小してから元の数に戻した場合でも当てはまります。ただし、デプロイメントのサイズを拡大してブローカーを追加すると、新しいブローカーは新しい PVC サイズを使用します。

    この問題を回避し、デプロイメント内のすべてのブローカーが同じ PVC サイズを使用するようにするには、OpenShift Container Platform Web コンソールを使用してデプロイメントで使用される PVC サイズを拡張します。コンソールで、StoragePersistent Volume Claims をクリックします。デプロイメントをクリックします。右上の Actions ドロップダウンメニューで Expand PVC を選択し、新規の値を入力します。

  • ENTMQBR-4143 - AMQ Broker Operator: CRD と Operator との間の pageSizeBytes プロパティーのタイプの不一致

    ブローカーデプロイメントのカスタムリソース (CR) インスタンスにアドレス設定を追加する場合 (つまり、addressSettings.addressSetting セクションを追加することによって)、アドレス設定に pageSizeBytes プロパティーを含めることはできません。このプロパティーを含めて値を指定すると、Operator は CR の処理に失敗するか、CR を処理してもブローカーを開始できません。この問題を回避する方法はありません。

  • ENTMQBR-4144 - AMQ Broker Operator: Operator 設定で redeliveryCollisionAvoidanceFactor プロパティーを指定できない

    ブローカデプロイメントのカスタムリソース (CR) インスタンスにアドレス設定設定を追加する場合 (つまり、addressSettings.addressSetting セクションを追加することによって)、redeliveryCollisionAvoidanceFactor プロパティーを含めることはできません。このプロパティーを含めて値を指定すると、Operator は CR の処理に失敗します。この問題を回避する方法はありません。

  • ENTMQBR-4146 - アドレス設定で default-group-rebalance-pause-dispatch プロパティーが指定されていると、ブローカーの起動に失敗する

    default-group rebalance-pause-dispatch プロパティーの値を true に設定するように broker.xml 設定ファイルの address-setting 要素を設定した場合は、ブローカーが起動できませんでした。

    この問題は、OpenShift Container Platform でのブローカーデプロイメントでも発生します。具体的には、(addressSettings.addressSetting セクションを追加することで) ブローカーデプロイメントのカスタムリソース (CR) インスタンスにアドレス設定を追加する場合に、defaultGroupRebalancePauseDispatch プロパティーの値を true に設定すると、デプロイメントのブローカーを開始できません。

    この問題を回避する方法はありません。default-group rebalance-pause-dispatchdefaultGroupRebalancePauseDispatch の両方のデフォルト値は false です。

  • ENTMQBR-4163 - AMQ Broker Operator: サンプルカスタムリソースのメモリー制限とメモリー要求の仕様が正しくない

    AMQ Broker Operator のバージョン 0.17 に含まれている broker_activemqartemis_cr.yaml サンプル CR インスタンスでは、limits.memory および requests.memory プロパティーの値が正しく指定されていません。これらのプロパティーについて、サンプル CR に含まれる値は 1024m512m です。これらのプロパティーでは、小文字の m 接尾辞は無効です。有効な接尾辞は、EPTGM、および K、または同等のバイナリー EiPiTiGiMiKi です。サンプル CR は、OpenShift コマンドラインインターフェイスを使用して Operator をインストールするときにダウンロードおよび抽出するインストールアーカイブの deploy/crs ディレクトリーに含まれています。