第7章 既知の問題
このセクションでは、AMQ Broker 7.12 の既知の問題について説明します。
ENTMQBR-9103 - AMQP を消費する複数のスレッドを閉じるときに NullPointerException が発生する
AMQP メッセージのマルチスレッドコンシューマーを実行すると、ブローカーは次のような WARN レベルのログメッセージを生成することがあります。
2024-05-13 18:11:46,048 WARN [io.netty.util.concurrent.AbstractEventExecutor] タスクで例外が発生する。タスク: org.apache.activemq.artemis.protocol.amqp.proton.AMQPLargeMessageWriter$$Lambda$643/0x00007fa4ff5153c0@33bff98e java.lang.NullPointerException: null
メッセージは、クライアントがメッセージの消費を完了したときに生成され、スタックトレースが付随することもあります。
メッセージは失われず、無視できます。
ENTMQBR-8106 - AMQ Broker Drainer pod doesn’t function properly after changing MessageMigration in CR
実行中のブローカーデプロイメントでは
messageMigration
属性の値を変更できません。この問題を回避するには、新しいActiveMQ Artemis
CR のmessageMigration
属性に必要な値を設定し、新しいブローカーデプロイメントを作成する必要があります。
ENTMQBR-8166 - UseClientAuth=true の自己署名証明書により、Operator と Jolokia の通信が妨げられる
ActiveMQ Artemis
CR のconsole
セクションでuseClientAuth
属性がtrue
に設定されている場合、Operator はブローカー上で特定の機能 (アドレスの作成など) を設定できません。Operator ログに、remote error: tls: bad certificate
で終わるエラーメッセージが表示されます。
ENTMQBR-7359 - 7.10.0 Operator による認証情報シークレットの現在の処理方法を変更
Operator は、ブローカーに接続するための管理者のユーザー名とパスワードをシークレットに保存します。デフォルトのシークレット名は
<custom-resource-name>-credentials-secret
の形式です。シークレットは手動で作成するか、Operator による作成を許可できます。7.10.0 より前のカスタムリソースで
adminUser
およびadminPassword
属性が設定されている場合、Operator は手動で作成されたシークレットをこれらの属性の値で更新します。7.10.0 以降、Operator は手動で作成されたシークレットを更新しなくなりました。したがって、CR のadminUser
およびadminPassword
属性の値を変更する場合は、次のいずれかを行う必要があります。- 新しいユーザー名とパスワードでシークレットを更新します。
-
シークレットを削除し、Operator がシークレットを作成できるようにします。Operator がシークレットを作成する場合、
adminUser
およびadminPassword
属性が CR で指定されていればその値が追加されます。これらの属性が CR にない場合、Operator はシークレットの認証情報をランダムに生成します。
ENTMQBR-7111 - Operator の 7.10 バージョンは、アップグレード中に StatefulSet を削除する傾向がある
AMQ Broker Operator 7.10.0 にアップグレードする場合、または AMQ Broker Operator 7.10.0 からアップグレードする場合、新しい Operator は調整プロセス中にデプロイメントごとに既存の StatefulSet を自動的に削除します。Operator が StatefulSet を削除すると、既存のブローカー Pod が削除され、一時的なブローカーの停止が発生します。
Operator が StatefulSet を削除する前に、次のコマンドを実行して StatefulSet を手動で削除し、実行中の Pod を孤立させることで、この問題を回避できます: oc delete statefulset <statefulset-name> --cascade=orphan
アップグレードプロセス中に StatefulSet を手動で削除すると、新しい Operator は実行中の Pod を削除せずに StatefulSet を調整できます。詳細については、OpenShift への AMQ Broker のデプロイ の OperatorHub を使用した Operator のアップグレード を参照してください。
ENTMQBR-5749 - OperatorHub に表示されるがサポートされていない Operator を削除する
OperatorHub からの Operator のデプロイ で説明されている Operator と Operator チャネルのみがサポートされています。Operator の公開に関連する技術的な理由により、他の Operator とチャネルが OperatorHub に表示されますが、無視するようにしてください。参考までに、表示されるがサポートされない Operator を次のリストに示しています。
- Red Hat Integration-AMQ Broker LTS - すべてのチャネル
- Red Hat Integration-AMQ Broker - alpha、current、および current-76
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
を選択し、新規の値を入力します。