2013-07-29 4 views
2

클러스터 된 Websphere 환경에서 Lucene 4.3.1을 사용하고 있습니다. 양측은 공유 NFS 볼륨에있는 인덱스를 공유해야합니다.공유 NFS가있는 클러스터 환경에서 Lucene 사용

Lock obtain timed out: [email protected]/<pathToIndex>/write.lock 
     org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: [email protected]/<pathToIndex>/write.lock 
at org.apache.lucene.store.Lock.obtain(Lock.java:84) 
at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:667) 

내가 디렉토리 얻기 위해 다음 코드를 사용 :

directory = FSDirectory.open(indexPath); 

을하고 난합니다 (clustermembers에) 작가를 열고 닫으에서

나는 다음과 같은 스택 추적을 받고 계속 ejb의 메소드 :

public void removeWikiDocument(long oid) { 
    IndexWriter writer = new IndexWriter(directory, config); 
    Term t = new Term(OID, Long.toString(oid)); 
    writer.deleteDocuments(t); 
    writer.commit(); 
    writer.close(); 
} 

아무도 내가 각각 무엇을 잘못하고 있는지 알지 못합니까? 그러한 시나리오에서 사용할 올바른 방법.

답변

1

다른 JVM이 쓰기 모드에서 동일한 색인에 액세스하는 것은 불가능합니다. 읽기 전용 인덱스에서만이 작업을 수행 할 수 있습니다.

lucene 색인은 단일 JVM에서 관리해야합니다.

클러스터 된 환경에서 lucene을 배포하려면 Lucene SolrCloud 또는 ElasticSearch이어야합니다.

2

Lucene 인덱스에 대한 NFS 사용은 성능에 좋지 않은 영향을주기 때문에 이전 답변뿐만 아니라 강력하게 권장하지 않습니다. 자세한 내용은 토론의이 종류를 참조하십시오 http://lucene.472066.n3.nabble.com/Lucene-index-on-NFS-td4011301.html

을 그리고 전체 NFS 지원을 할 수있는 요청 기능이있다 (이 지연 삭제 처리를 의미)와 루씬을 사용하는 동안 같은 문제가 발생했습니다 https://jira.atlassian.com/browse/JRA-33887

1

을 최대 절전 모드 검색. 공식 Hibernate Search 문서에서 공유 파일 시스템을 사용하는 클러스터 모드에서 Lucene을 사용하는 것은 here으로 설명 할 수있다.

당신은 exclusive_index_use 값이 첫 번째 노드가 here 설명으로 인덱스 잠금 (기본적으로 사실) 종료 때까지 보유 얻는 것을 지정 거짓 있는지 확인해야합니다. 최대 절전 모드 검색없이 Lucene에도이 설정을 지정하는 방법이 있어야한다고 생각합니다.

관련 문제