2015-01-09 20 views
0

我有使用GridGain進行緩存和分佈式鎖定的分佈式應用程序。當我的應用程序啓動時,它將連接多個節點的網格。 我所面臨的問題時,我的一個節點最終停止(例如,我的應用程序的重新部署)和連接到電網後,我有這個在我的日誌:如何管理GridGain緩存中未釋放的鎖?

[13:57:32,140][WARNING][main][GridDhtPreloader] <cacheLocks> Failed to wait for initial partition map exchange. Possible reasons are: 
     ^-- Transactions in deadlock. 
     ^-- Long running transactions (ignore if this is the case). 
     ^-- Unreleased explicit locks. 
    [13:57:33,085][WARNING][grid-timeout-worker-#33%null%][GridDhtPartitionsExchangeFuture] <cacheLocks> Retrying preload partition exchange due to timeout [done=false, dummy=false, exchId=GridDhtPartitionExchangeId [topVer=56, nodeId=ee95b126, evt=NODE_JOINED], rcvdIds=[03e6666c], rmtIds=[ba1d527c, 03e6666c, 76bf5103], remaining=[ba1d527c, 76bf5103], init=true, initFut=true, ready=true, replied=false, added=true, oldest=76bf5103, oldestOrder=46, evtLatch=0, locNodeOrder=56, locNodeId=ee95b126-aaf9-4d46-9273-983e175d513a] 

這不是死鎖,也沒有長期運行的事務。我想這是未發佈的鎖,因爲即時JVM停止而未發佈,之前我的應用沒有cache.lock(key, 0L),也沒有cache.unlock(key)

我只需要重新啓動所有網格。

問題是如何避免未發佈的鎖以及如何管理它們?我該如何正確處理這種情況?

+0

您使用的是什麼版本的GridGain? – Alexey

+0

我正在使用6.5.2 – hypet

回答

0

在節點發生故障時,您不需要額外努力釋放先前獲取的遠程節點上的鎖,GridGain會自動釋放這些鎖。你能否更新到最新版本的GridGain(6.5.6)並重試你的測試? 如果沒有幫助,請創建一個可重複的示例並附加到問題上。