[英]IGNITE Cache Error
我們使用Apache Ignite進行緩存,在測試過程中遇到了此錯誤
java.lang.IllegalStateException:緩存已關閉或破壞
我們有一個Spring Restful客戶端,其中嵌入了IGNITE。 調用來更新和從緩存中刪除。
發生的步驟如下
有人可以就為什么會發生這種情況發表一些見解嗎? 我是否必須處理所有節點離開並手動退出緩存或其他事件的事件。
任何幫助表示贊賞
萬一所有服務器都宕機,客戶端將以新的ID重新加入(就像您手動重新啟動它一樣)。 在這種情況下,所有現有的緩存實例都將關閉,您必須獲取新的實例(使用Ignite.cache(...)
方法)。
有一張票可以改善這種行為: https : //issues.apache.org/jira/browse/IGNITE-2766
我們也遇到了這個問題,我們有一個解決方法。 我們實現了自己的SpringCacheManager版本(ReconnectSafeSpringCacheManager),該版本將緩存對象包裝在重新連接安全的緩存代理對象(ReconnectSafeCacheProxy)中。
當其中一個緩存代理捕獲到IllegalStateException
,我們告訴緩存管理器刪除該緩存(從內部caches
映射中將其刪除),然后調用ReconnectSafeSpringCacheManager.getCache(<cacheName>)
來重新創建Ignite緩存實例。 代理將其緩存引用替換為新的Ignite緩存,然后重試導致異常的操作。
我們的方法要求我們將緩存管理器代碼放置在org.apache.ignite.cache.spring
包中,因為SpringCacheManager中有對非公共API:s的引用,這不是最干凈的方法,但它似乎可以工作,我們解決IGNITE-2786時,計划刪除解決方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.