第5章 既知の問題
Red Hat JBoss Data Grid 6.3 には以下の問題があることがわかっています。これらの問題は今後のリリースで修正される予定です。
- 『BZ#807674』 - JTA データソースを使用する JDBC キャッシュストアがキャッシュトラザクションに参加しない
- Red Hat JBoss Data Grid のライブラリーモードでは、JTA 対応のデータソースを使用するよう、JDBC キャッシュストアを設定できます。しかし、JTA トラザクションの実行中、このようなストアによってサポートされるキャッシュ上で実行される操作は、トラザクションのスコープ外にあるストアへ永続化されます。すべてのキャッシュ操作は非トランザクションであるため、この問題は JBoss Data Grid のリモートクライアントサーバーモードには適用されません。
- 『BZ#881080』 - 未応答の SuspectExceptions
- ノードがシャットダウンすると応答しないため、ノードがシャットダウンするときに
SuspectExceptions
が周期的に発生します。そのため、SuspectException
エラーがログに記録されます。データの整合性はSuspectExceptions
による影響を受けません。現在、この問題の回避策はありません。 - 『BZ#881791』 - JBoss Data Grid サーバーへのファイルパスに特殊文字が含まれていると問題が発生する
- ディレクトリーパスに特殊文字が使用されていると、JBoss Data Grid サーバーが起動に失敗するか、ロギングに使用される設定ファイルが適切にロードされません。問題が生じる特殊文字には、空白文字、
#
(ハッシュ記号)、!
(感嘆符)、%
(パーセント記号)、$
(ドル記号) などが含まれます。この問題の唯一の回避策は、ディレクトリーパスに特殊文字を使用しないことです。 - 『BZ#1012036』 - サイトに到達できないと RELAY2 ログエラーが発生する
- サイトが到達不可能であると、JGroups の
RELAY2
によって、ドロップした各メッセージのエラーがログに記録されます。Infinispan には設定可能な失敗ポリシー (ignore
/warn
/abort
) がありますが、ignore
ポリシーでもログにエラーが記録されます。 - 『BZ#1024373』 - デフォルトの楽観的ロック設定によって一貫性が失われる
- デフォルトでは、トランザクションキャッシュは楽観的ロックで設定されています。競合の状態では、replace() の同時呼び出しが true を返すことがあり、コミットしてはならない場合でもトランザクションがコミットすることがあります。replace(key, A, B) および replace(key, A, C) の 2 つの同時実行コマンドは、エントリーを上書きすることがあります。最後に終了したコマンドによって、予期しない値が新しい値に上書きされます。この問題を回避するには、REPEATABLE_READ 分離レベルと write skew チェックを有効にします。これにより、同時実行の replace 操作が想定どおり動作するようになります。
- 『BZ#1076084』 - RHQ サーバープラグイン: リモートストアキャッシュの子の作成に失敗する
- 現在、JBoss Operations Network の JBoss Data Grid Remote Client-Server プラグインを使用するキャッシュに対してリモートキャッシュストアの子リソースを作成できません。この操作は失敗し、JBoss Operations Network Agent によって失敗がログファイルに記録されます。そのため、JBoss Operations Network のユーザーインターフェースを使用してリモートキャッシュストアを設定できません。この問題を回避するには、リモートキャッシュストアを手動で設定するよう JBoss Data Grid のサーバー設定ファイルを変更します。
- 『BZ#1092403』 - JPA キャッシュストアが Oracle12c および PostgresPlus 9 のダイアレクトを推測できない
- JPA キャッシュストアの内部依存関係である Hibernate がデータベースとの通信に使用するダイアレクトを判断できないため、JPA キャッシュストアは Oracle12c および Postgres Plus 9 では動作しません。この問題を回避するには、Hibernate ダイアレクトを直接 persistence.xml に指定します。直接指定するには、以下の要素を persistence.xml に追加します。
<property name="hibernate.dialect" value="${hibernate.dialect}" />
${hibernate.dialect} は、Oracle12c の場合は org.hibernate.dialect.Oracle10gDialect、Postgres Plus 9 の場合は org.hibernate.dialect.PostgresPlusDialect に置き換える必要があります。 - 『BZ#1101512』 - CLI で保存されたデータをテストするとき、CLI UPGRADE コマンドが失敗する
- CLI を用いて古いクラスターに保存されたデータを移行する場合 、CLI のアップブレードコマンドを使用してデータを古いクラスターから新しいクラスターに移行できません (
put --codec=hotrod key1 val1
コマンドを実行する場合など)。Hot Rod または REST クライアントを使用してデータが直接保存された場合は、この問題は発生しません。 - 『BZ#1118204』 - Infinispan クエリー - FullTextIndexEventListener における WeakIdentityHashMap の同時処理の問題
- Hot Rod より put/remove 操作を使用する場合、システムが高負荷の状態であると一部のオブジェクトがインデックス化されないことがあります。これらのオブジェクトはリモートクエリーによって返されないか、以前の状態を基に返されます。これにより、キャッシュがトラザクションでない場合は埋め込みクエリーも影響を受けます。このバグにより、更新や削除の操作が失われることもあります。そのため、後続のクエリーが新たに挿入されたオブジェクトの結果を見落とすことがありますが、返されるべきでない結果が含まれる可能性もあります。グリッドからオブジェクトを返すようにユーザーがリクエストすると、存在しないものが結果から削除されるため、削除操作が見落とされる問題はプロジェクションの使用のみに影響します。この問題を回避するには、キャッシュが Hod Rod 上でアクセスされるか (各操作はトランザクションで囲まれます)、または埋め込みキャッシュとしてローカルでアクセスされるかに関わらず、キャッシュをトランザクションとしてマーク付けします。
- 『BZ#1113585』 - LevelDBStore.stop() によってネイティブコードの JVM がクラッシュされる
- LevelDB キャッシュストアを使用するキャッシュが停止すると (キャッシュマネージャーが停止したことによる場合など)、LevelDB ネイティブ実装によって JVM プロセスのセグメンテーション違反が発生することがあります。これにより、プロセス全体がクラッシュします。