非正常關閉時Ehcache磁碟儲存下次不能使用

2021-09-10 09:19:18 字數 1070 閱讀 1067

在使用ehcache時,我們會使用

diskpersistent="true"
來保證下次虛擬機器重啟時,快取資料依然可以使用.

然而當我們ctrl+c或者直接殺死程序時甚至於斷電等非正常關閉時,ehcache的快取就不能再使用了.原因在於:

在ehcache的原始碼裡,diskstoragefactory類裡,硬碟儲存初始化時有這段**:

if (getdatafile().lastmodified() > (indexfile.lastmodified() + timeunit.seconds.tomillis(1)))  is out of date, probably due to an unclean shutdown. "

+ "deleting index file {}", getdatafile(), indexfile);

deletefile(indexfile);

}

這裡會認為索引和資料的時間戳對不上,那麼這就屬於髒資料,所以使用了deletefile的方法,把索引給刪除了.

deletefile方法裡就是直接乾掉.這是個protected方法,當然我們可以重寫,可惜那太麻煩了,因為有幾個方法都引用了deletefile

比如shutdown方法:當diskpersistent="false"時,在關閉時,會刪除磁碟資料.

if (!diskpersistent)
目前沒有什麼可以解決的,鉤子當然沒用,ehcache2版的話,企業版倒是或許可以解決吧,裡面有這樣乙個屬性strategy,有乙個可選項localrestartable  

strategy:

配置由配置的快取提供的永續性型別。這必須是

以下值之一:

* localrestartable - 啟用restartstore並複製所有快取條目(堆上和/或堆外)

到磁碟。此選項提供快速可重新啟動性,磁碟上具有容錯快取永續性。

它僅適用於企業 ehcache使用者。

也不知道ehcache3是什麼樣,有機會去看看.

非正常關閉vim,產生 swp檔案

使用vi,經常可以看到swp這個檔案,那這個檔案是怎麼產生的呢,當你開啟乙個檔案,vi就會生成這麼乙個.filename swp檔案以備不測 不測下面討論 如果你正常退出,那麼這個這個swp檔案將會自動刪除。下面說不測。不測分為 1當你用多個程式編輯同乙個檔案時。2非常規退出時。第一種情況的話,為了...

UBUNTU 解決非正常關閉APT GET的鎖

轉 在ubuntu的命令列視窗中使用apt get命令安裝程式,命令未執行完的情況下關閉視窗或使用ctrl c來結束命令。當我們再次使用apt get命令安裝程式的時候,報錯資訊如下 e 無法獲得鎖 var lib dpkg lock open 11 資源暫時不可用 e 無法鎖定管理目錄 var l...

ubuntu 解決非正常關閉apt get的鎖

此文裝載自 因個人想留作筆記,故摘抄 在ubuntu的命令列視窗中使用apt get命令安裝程式,命令未執行完的情況下關閉視窗或使用ctrl c來結束命令。當我們再次使用apt get命令安裝程式的時候,報錯資訊如下 e 無法獲得鎖 var lib dpkg lock open 11 資源暫時不可用...