2016-12-05 4 views
0

私たちはキャッシング・プロバイダとしてInfinispan 4.0を使用しています(バージョン9が最新のようにアンティークなのは分かります)。つまり、私は少し混乱しています。Infinispanリモート・レイジー・ロック

Infinispanはデフォルトでリモートロックを遅延取得します。ロックはトランザクションを実行するノードでローカルに取得され、他のクラスタノードは2フェーズの準備/コミットフェーズでトランザクションに関連するキャッシュキーをロックしようとします。ただし、必要に応じて、Infinispanは明示的にまたは暗黙的にキャッシュキーをロックすることができます。

Infinispanのデフォルトの動作は何ですか?私はそれがローカルノードでのみロックされていることを理解していますが、正確にいつクラスタ上でロックされますか?あなたのような操作を持っている場合たとえば:

Cache.put(K,V) 

クラスタ内の別のノードが同時

Cache.put(K,V) 

操作をしようとしたときにどのように振る舞うのか?このリモート遅延ロックはどのように機能しますか?

答えて

2

このコメントはトランザクションに関するものです。トランザクションの場合、リモートロックはcache.put(k, v)(eager)またはtm.commit()(lazy)の間に取得できます。取引がなければ、2つの間に区別はありません。

4.xでのロックは、デッドロックが発生しやすいことに注意してください。ノードはローカルロックを取得し、他のすべての所有者のロックを取得しようとします。また、別のノードが同じキーに同時に書き込みを試みると、デッドロックが発生する可能性が高くなります。

+0

それを得ました。デッドロックについてのご注意ありがとうございます –