2012-07-09 3 views
0

여러 대의 컴퓨터에서 배포되는 lucene의 여러 인스턴스에서 사용되는 SAN (공유 영역 네트워크)에 Lucene 색인이 있습니다. lucene의 인스턴스 인 인덱스를 업데이트 할 때 문서 추가 또는 업데이트가 표시되면 nativeFSLock이 만들어져 다른 사람들이 동시에 작성할 수 없게됩니다.lucene.net으로 색인 잠그기

문제는 lucene의 모든 인스턴스에 대한 업데이트가있는 일괄 처리를 보낼 수 있기를 원하며 모든 업데이트를 수행하고 잠금을 해제하기를 원합니다. Lucene.net에는 addDocuments 메서드가없고 AddDocument 만 있습니다. 그래서 모든 문서를 반복하여 한 번에 하나씩 추가해야합니다. 하나의 문서가 추가 되 자마자 lucene은 잠금을 해제하고 다음 파일에 대해 새로운 잠금을 만듭니다. 그래서 누군가 elses가 동시에 문서를 업데이트하거나 추가하려고하면 그 작은 시간대에 때때로 잠금을 성공적으로 얻습니다. 그리고 그 일이 발생하면 내 배치의 일부만 통과하게됩니다 (경쟁 조건).

자물쇠를 얻고 싶습니다. 내 전체 일괄 처리가 완료 될 때까지 아무 제안도하지 않으시겠습니까?

안부

답변

0

는 SAN에 저장 인덱스에 NativeFSLockFactory를 사용하거나 인덱스에 쓰기 전용 노드를 사용하지 마십시오.

SimpleFSLockFactory를 사용하여 잠금 문제가 해결되는지 확인해보십시오. 그러나 SimpleFSLockFactory를 사용하면 또 다른 문제가 발생할 수 있습니다. 잠금을 유지하는 동안 프로세스가 충돌하면 잠금이 유지됩니다. 여기

자세한 내용은 : http://lucene.apache.org/core/old_versioned_docs/versions/2_9_4/api/all/org/apache/lucene/store/NativeFSLockFactory.html

난 당신이 위의 링크에 지정된 잠금 테스트 도구를 사용하여 환경을 테스트하는 게 좋을 것. (VerifyingLockFactory, LockVerifyServer 및 LockStressTest)

+0

훌륭한 답변을 원하시면 고맙습니다. – najk

+0

저에게 준 링크는 NativeFSLockFactory의 Java 문서 용이며, .net 버전과 동일한 문제일까요? 나는 망가 버리는 닷넷 버전 java.io ..을 사용하지 않는다. – najk

+0

또 다른 문제는 내가 전용 노드를 써서 쓸 수 없다는 것이다. 쓰기 작업은 분산되어있는 웹 서비스에 올 수있다. 단일 실패 지점에 의존하기 때문에 이러한 서비스는 서로 이야기하지 않으며 완전히 무국적입니다. – najk