1

非常に厄介な問題にぶつかりました。Oracle Coherenceキャッシュの内容を表示する単純なWinFormアプリケーションを作成しようとしています。

を呼び出すと、何らかの理由で aLockRecursionExceptionがスローされますCacheFactory.GetCache("cacheName")

読み取りロックを保持したまま、書き込みロックを取得できない場合があります。このパターンは、デッドロックが発生しやすい傾向にあります。書き込みロックを取得する前に、読み取りロックが解除されていることを確認してください。アップグレードが必要な場合は、読み取りロックの代わりにアップグレード ロックを使用します。

スタック トレースは次のとおりです。

at System.Threading.ReaderWriterLockSlim.TryEnterWriteLockCore(Int32 millisecondsTimeout)   
at System.Threading.ReaderWriterLockSlim.TryEnterWriteLock(Int32 millisecondsTimeout)  
at Tangosol.Util.ThreadGateSlim.Close(Int64 millis) in c:\hudson\workspace\Coh-NET-3.7.1\dev\release.net\coherence-net-v3.7.1\src\Coherence\Util\ThreadGateSlim.cs:line 26

次のコードをフォーム コンストラクターとボタン クリック イベント ハンドラーに配置しましたが、それでも例外がスローされます。前に他に何も呼び出されていません:

using (var cache = CacheFactory.GetCache("cacheName"))
{
    ...get data from cache
}

誰もこれに遭遇したことがありますか?.Net 4.0 と Coherence 3.7.1.5 を使用しています。同じコードが別の (はるかに複雑なプロジェクト) で正常に機能するため、何が問題なのか少しわかりません。

4

1 に答える 1

2

これが発生した場合は、すべてのスレッドを確認することをお勧めします。たとえば、フォーム コンストラクターを呼び出しているスレッドの奥深くで、Coherence を呼び出す何かがあるのではないかと考えています。

- アップデート -

Patrick Fry (この機能領域の主任エンジニア) から:

この Coherence + .NET 4.0 の問題は、Coherence for .NET 3.7.1.7 で COH-8044 の修正によって対処されました。JIRA はロックの問題について具体的に言及していませんが、この問題に関して具体的に報告されたバグがあり、複製されました。 COH-8044の。

https://bug.oraclecorp.com/pls/bug/webbug_print.show?c_rptno=14732333

3.7.1.7 のパッチの readme に、この特定の問題も修正されたことを記載する必要がありました。

于 2013-08-13T13:39:34.147 に答える