第7章 既知の問題
ここでは、AMQ Broker 7.9 の既知の問題について説明します。
ENTMQBR-5749- Operator Hub に表示される、サポートされていない演算子を削除する
「 OperatorHub からの Operator のデプロイ」に記載されている Operator および Operator チャネルのみがサポートされます。Operator の公開に関連する技術的な理由により、他のOperator とチャネルが Operator Hub に表示されますが、無視するようにしてください。参考までに、次のリストは、表示されていても、サポートされていない演算子です。
- Red Hat Integration-AMQ Broker LTS - すべてのチャネル
- Red Hat Integration-AMQ Broker - alpha、current、および current-76
ENTMQBR-5615- artemis.profile の予期せぬ重大な変更により、コンテナーイメージの初期化アプローチが使用できない
JVM オプション
-Dhawtio.role
を使用して、artemis_profile
ファイルの $ JAVA_ARGS セクションの一部としてユーザーロールを設定すると、ユーザーはブローカーコンソールにアクセスできない場合があります。この問題は、
-Dhawtio.role
によって設定された値をオーバーライドする新しいプロパティーHAWTIO_ROLE
が原因で発生します。この問題を回避するには、etc/artemis.profile
ファイルのHAWTIO_ROLE
プロパティーを使用して適切なロールを設定します。
ENTMQBR-17 - AMQ222117: クラスター接続を開始できない
IPv6 をサポートする環境では、ブローカークラスターが適切に初期化に失敗することがあります。この失敗は、ログメッセージ
Can’t assign requested address
で示されるSocketException
が原因となります。この問題を回避するには、java.net.preferIPv4Stack
システムプロパティーをtrue
に設定します。
ENTMQBR-520: 別のアドレスにバインドされたキューと同じ名前のアドレスからの受信は許可されるべきではない
アドレスと同じ名前のキューは、アドレスにのみ割り当てる必要があります。既存のアドレスと同じ名前で、異なる名前のアドレスにバインドされるキューを作成することは、無効な構成です。これを実行すると、誤ったメッセージがキューにルーティングされる可能性があります。
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-897 - 宛先名の特殊文字による Openwire クライアント/プロトコルの問題
現在、AMQ OpenWire JMS クライアントは、その名前にコンマ (',')、ハッシュ ('#')、および空白を含むキューおよびアドレスにアクセスできません。
ENTMQBR-944 - [A-MQ7, Hawtio, RBAC] ユーザーは RBAC によって拒否された場合にフィードバックを取得しない
コンソールで、許可されていないユーザーが試行した操作が成功しなかったのに成功したことを示すことがあります。
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-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-3846 - MQTT クライアントがブローカーの再起動時に再接続されない
ブローカーを再起動するか、ブローカーがフェイルオーバーすると、アクティブなブローカーは、以前に接続された MQTT クライアントの接続を復元しません。この問題を回避するには、MQTT クライアントを再接続するのに、クライアントで
subscribe()
メソッドを手動で呼び出す必要があります。
ENTMQBR-4023 - AMQ Broker Operator: Pod Status の Pod 名が、実際のものとは異なる
特定の OpenShift プロジェクトでの Operator ベースのブローカーデプロイメントの場合、
oc get pod
コマンドを使用してブローカー Pod を一覧表示すると、Pd の順序値は0
から始まります (例:amq-operator-test-broker-ss-0
)。ただし、oc describe
コマンドを使用して、activemqartmises
カスタムリソース (oc describe activemqartemises
) から作成されたブローカー Pod のステータスを取得した場合、Pod の順序値は誤って1
から開始します (例:amq-operator-test-broker-ss-1
)。この問題を回避する方法はありません。
ENTMQBR-4127 - AMQ Broker Operator: Operator によって生成されるルート (Route) 名が 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 サイズを拡張します。コンソールで、
をクリックします。デプロイメントをクリックします。右上の Actions ドロップダウンメニューで Expand PVC
を選択し、新規の値を入力します。