2017-11-14 11 views
7

슬레이브가 인덱스를 복제 할 때 복제 할 때 다음번에 index.timestamp과 같은 이름 형식의 인덱스 디렉토리를 생성합니다. 복제를 시도하고 새 폴더를 만듭니다 그 일이 일어나고되지 않고 매번 내가 볼 새 타임 스탬프하지만 내 경우에는이 경고와 슬레이브는 fullCopySOLR 슬레이브는 사용하지 않는 인덱스 디렉토리를 삭제할 수 없으므로 full copy를하고 있습니다

Unable to cleanup unused lucene index files so we must do a full copy instead

를 트리거 슬레이브가 사용되지 않는 인덱스 파일을 정리 할 수없는 이유를 누구나 할 수있다.

감사합니다.

+0

슬레이브는 마스터 색인 사본 만 보관하며 자체 정리는하지 않습니다. 이상하게도 마스터는 아직 사용하지 않는 색인을 보관합니다. 테스트 할 수 있다면 색인을 백업하고 핵심을 "최적화"하십시오. 슬레이브에서이 문제를 재현 할 수 있는지 확인하십시오. –

답변

3

당신의 solr 버전을 모른 채로 대답하는 것은 매우 어렵습니다.

필자의 경험에 비추어 볼 때, solr은 다른 인덱스 파일을 복사합니다 (새 파일 다음에 타임 스탬프). 그러나 색인이 병합되면 전체 사본이 트리거됩니다. 여기

어떤 관련 티켓

https://issues.apache.org/jira/browse/SOLR-6640

** 갱신 2017년 11월 27일 **

이 5 배 분기에서 관련 부분,

https://github.com/apache/lucene-solr/blob/branch_5x/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java#L398-L418

try { 
    IndexWriter indexWriter = writer.get(); 
    int c = 0; 
    indexWriter.deleteUnusedFiles(); 
    while (hasUnusedFiles(indexDir, commit)) { 
     indexWriter.deleteUnusedFiles(); 
     LOG.info("Sleeping for 1000ms to wait for unused lucene index files to be delete-able"); 
     Thread.sleep(1000); 
     c++; 
     if (c >= 30) { 
      LOG.warn("IndexFetcher unable to cleanup unused lucene index files so we must do a full copy instead"); 
      isFullCopyNeeded = true; 
      break; 
     } 
    } 
    if (c > 0) { 
     LOG.info("IndexFetcher slept for " + (c * 1000) + "ms for unused lucene index files to be delete-able"); 
    } 
} finally { 
    writer.decref(); 
} 
입니다

그래서 3 명이 넘습니다. 0 개의 사용하지 않는 색인 파일은 경고 메시지 & 전체 사본을 트리거합니다. 마스터에서 인덱스를 최적화하거나 병합하려고 시도하고 fullCopy가 복제되었는지 확인하려고합니다.

+0

전통적인 master/slave 또는 solrcloud입니까? 마스터/슬레이브라고 생각했지만 태그가 나를 혼란스럽게합니다. –

+0

SOLR Version using은 5.2.1 및 기존 마스터/슬레이브 설정입니다. 대부분의 시간은 로그에 경고가 나타납니다 * 사용하지 않는 인덱스를 정리할 수 없으므로 전체 복사 복제가 가능합니다. *이 방법을 피하는 방법에 대한 아이디어가 있습니다. –

+0

공유 된 링크는 유익했으나 관련이 있다고 생각하지 않습니다. 문제에 직면 해있다. –