2013-07-16 81 views
1

我遇到了一個非常煩人的問題。我正在嘗試編寫一個簡單的WinForm應用程序來顯示Oracle Coherence緩存的內容。當調用CacheFactory.GetCache時拋出LockRecursionException

出於某種原因,一個LockRecursionException當我打電話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。相同的代碼在單獨的(更復雜的項目)中工作正常,所以我有點不確定發生了什麼問題。

回答

2

我建議看看所有線程發生這種情況。例如,我想知道在調用窗體構造函數的線程中是否有更深層次的Coherence調用。

- 更新 -

從帕特里克·弗萊(此功能區首席工程師):

這種一致性+ .NET 4.0問題是由在相干處理爲.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這 特定的問題是固定的。

+0

太棒了 - 謝謝。 –

相關問題