我在一個SAN(共享區域網絡)上有一個Lucene索引,它由多個lucene實例使用,分佈在多臺機器上。當更新索引時,lucene的一個實例會說增加或更新文檔,它會讓我的nativeFSLock,這使得他人無法在同一時間寫入,這工作正常!用lucene.net鎖定索引
問題是,我希望能夠發送批處理更新任何lucene實例,並且我希望它能夠執行所有更新,然後釋放鎖。在Lucene.net中沒有addDocuments方法,只有AddDocument。所以我必須循環遍歷所有文檔並一次添加一個文檔。只要添加一個文檔lucene就會釋放該鎖,然後爲下一個文件創建一個新鎖。所以如果有人在同一時間試圖更新或添加文檔,那麼它有時會在很短的時間內成功獲得鎖,並且只有一些批處理會發生(競爭條件)。
我想獲得一個鎖,而不是釋放它直到我的整批完成,有什麼建議嗎?
問候
謝謝你,一個很好的答案,請仔細閱讀! – najk 2012-07-10 07:41:44
您給我的鏈接是針對NativeFSLockFactory的Java文檔,是否確定它與.net版本的問題相同?我不相信.net版本使用java.io .. – najk 2012-07-10 07:44:20
另一個問題是,我不能使用專用節點來寫,寫操作可能會來到我的任何Web服務,這是分佈式的,我不能依靠單點故障,這些服務不會相互講話,而且完全是無狀態的。 – najk 2012-07-10 07:55:57