25.2.4. デッドロックおよび競合エントリー
アクティブ/アクティブ設定では、同じキーへの同時書き込みによりデッドロックや競合が生じます。
アクティブ/アクティブの設定は、ローカルサイトとバックアップサイトの両方がデータを相互に複製するものです。たとえば、「SiteA」は「SiteB」までバックアップされ、「SiteB」も「SiteA」までバックアップされます。
同期モード(SYNC)では、両方のサイトが同じキーを異なる順序でロックするため、同時書き込みはデッドロックになりました。デッドロックを解決するには、クライアントアプリケーションはロックがタイムアウトするまで待つ必要があります。
非同期モード(ASYNC)では、エントリーがローカルの変更後にサイトが複製されるため、同時書き込みは競合する値になります。非同期レプリケーション操作には保証された順序がないため、以下の結果が可能になります。
-
キーの値は、各サイトに異なります。たとえば、「SiteA」の場合は
k=1、"SiteB" の場合はk=2です。非同期レプリケーションは、クライアントがkへの書き込み後に x=2 が「SiteA」に複製され、x=1が「SiteB」に複製された後に発生します。 - サイトが同時に値を複製しない場合、競合する値の 1 つが上書きされます。この場合、いずれかの値が失われ、どの値が保存されるかは保証されません。
いずれの場合も、キー値の不整合は、次の競合しない PUT 操作で値を更新すると解決されます。
現在、クライアントアプリケーションが非同期モードで競合を処理するのに使用できる競合解決ポリシーはありません。ただし、競合解決技術は、今後の Red Hat Data Grid バージョンに対して予定されています。