我在 SAN(共享区域网络)上有一个 Lucene 索引,它被多个 lucene 实例使用,分布在多台机器上。更新索引的时候,lucene的一个实例,会说add or update document,它会使i nativeFSLock,这使得其他人无法同时写,这个很好用!
问题是,我希望能够向任何 lucene 实例发送包含更新的批处理,并且我希望它完成所有更新然后释放锁。在 Lucene.net 中没有 addDocuments 方法,只有 AddDocument。所以我必须遍历我的所有文档并一次添加一个。一旦添加了一个文档,lucene 就会释放锁,然后为下一个文件创建一个新锁。因此,如果其他人尝试同时更新或添加文档,它有时会在那个小时间跨度内成功获得锁,而当这种情况发生时,只有我的一部分批次会通过(竞争条件)。
我想获得一个锁,直到我的整个批次完成后才释放它,有什么建议吗?
此致