3 既知の問題と回避策
この章の内容は次のとおりです。
アクティブ永続性を使用する場合のパーティション数の変更
問題
アクティブ永続性を使用している場合は、パーティション数を変更できません。サービスのパーティション数を変更すると、サービスの再起動時に、アクティブなすべてのデータが永続性のごみ箱に移動するため、元のパーティション数のリストア後にリカバリする必要があります。永続化されるデータは、同じパーティション数で実行されているサービスにのみリカバリできます。
アクティブ永続性が使用されている場合は、パーティション数が変更されていないことを確認します。パーティション数が変更されると、サービスの起動時に、次のようなメッセージが表示されます。
<Warning> (thread=DistributedCache:DistributedCachePersistence, member=1): Failed to recover partition 0 from SafeBerkeleyDBStore(...); partition-count mismatch 501(persisted) != 277(service); reinstate persistent store from trash once validation errors have been resolved
このメッセージは、パーティション数の変更がサポートされておらず、現在アクティブなデータがごみ箱ディレクトリにコピーされたことを示しています。
回避策
データをリカバリするには:
-
クラスタ全体を停止します。
-
各クラスタ・メンバーで影響を受けたクラスタとサービスで現在アクティブなディレクトリの内容を削除します。
-
アクティブなディレクトリへのサービスごとに、ごみ箱ディレクトリの内容を(再帰的に)コピーします。
-
パーティション数を元の値にリストアします。
-
クラスタを再起動します。
親トピック: 既知の問題と回避策
8より後のJavaバージョンでのインライン化の無効化
Java 8より大きいJavaバージョン(たとえば、Java 11)を使用している場合、次のディレクティブのいずれかを(コマンドラインで) JVMオプションとして指定する必要があります。このステップでは、Javaチームにより作業中のコンパイラ・バグが原因の、検出されたセグメンテーション・フォルト(SIGSEGV)を回避します。
-
-XX:CompileCommand=exclude,com/tangosol/coherence/component/util/daemon/queueProcessor/service/Grid.onInterval
-
-XX:-Inline
最初のオプションでは、問題のあるメソッドをコンパイラによるインライン化の対象から除外しますが、後のオプションではインライン化全体が無効になります。
親トピック: 既知の問題と回避策
旧バージョンとのバイナリの非互換性
Oracle Coherenceリリース14.1.1.0とOracle Coherenceリリース14.1.2の間にはバイナリの互換性がありません。この非互換性により、アップグレードするユーザーは、14.1.2に対してアプリケーションを再コンパイルする必要があります。これは単にバイナリの非互換性であり、APIや機能の非互換性ではありません。
coherence.jar
ファイルとともに実行すると、実行時に次の例外が発生する場合があります:java.lang.ClassNotFoundException: com.tangosol.net.NamedCache$Option
たとえば、Session.getCache("<cache name>")
コールからです。この例外が発生する原因は、ネストしたクラスOption
が、リファクタリングで14.1.1.0と14.1.2の間にNamedCache
からそのスーパータイプNamedMap
に移動したためです。このリファクタリングでは、NamedCache.Option
を使用して以前のコードのAPI互換性を維持しますが、14.1.2のcoherence.jar
に対してそのコードを再コンパイルする必要があります。
回避策
Oracle Coherence 14.1.2より前のCoherenceベースのアプリケーションをそのリリースで実行するには、まず14.1.2に対してアプリケーションを再コンパイルする必要があります。再コンパイルによって、実行時にバイナリの非互換性例外が発生することを回避します。
親トピック: 既知の問題と回避策
pof-maven-pluginのバージョンが非準拠
問題
インストーラにパッケージ化されているpof-maven-plugin
には、バージョン修飾子があります。たとえば、プラグインのpom.xml
ファイルと、META-INF/maven/plugin.xml
の下のMavenプラグイン・メタデータには、14.1.2-0-0-112309
のようなバージョンが記載されています。これは、pof-maven-plugin
JARファイル内で生成およびパッケージ化されています。
回避策
oracle-maven-sync
プラグインを使用してpof-maven-plugin
アーティファクトをローカルのMavenリポジトリに配置すると、プラグイン出力に次のようなメッセージが表示されます。[INFO] Installing <OracleHome>/coherence/plugins/maven/com/oracle/coherence/pof-maven-plugin/14.1.2/pof-maven-plugin.14.1.2.jar to $HOME/.m2/repository/com/oracle/coherence/pof-maven-plugin/14.1.2-0-0-112309/pof-maven-plugin-14.1.2-0-0-112309.jar [INFO] Installing <OracleHome>/coherence/plugins/maven/com/oracle/coherence/pof-maven-plugin/14.1.2/pof-maven-plugin.14.1.2.pom to $HOME/.m2/repository/com/oracle/coherence/pof-maven-plugin/14.1.2-0-0-112309/pof-maven-plugin-14.1.2-0-0-112309.pom
pof-maven-plugin
が使用され、Maven pom.xml
ファイル内で参照される場合、出力メッセージに示すように、pof-maven-plugin
バージョンは修飾子とまったく同じバージョンとして指定する必要があります(例: 14.1.2-0-0-112309
)。<groupId>com.oracle.coherence</groupId> <artifactId>pof-maven-plugin</artifactId> <version>14.1.2-0-0-112309</version>
親トピック: 既知の問題と回避策