2012-05-25 3 views
0

Jackrabbit 2.0 인스턴스 (실제로는 Day CRX 2.1 인스턴스)에서 Lucene 검색 인덱스를 다시 작성하여 관련성 점수에 새 속성 추가 가중치를 적용 할 수 있습니다. 인덱싱 .../콘텐츠/XXXXXX/JCR : 콘텐츠 (3,173,000) (MultiIndex.java, 1209)
* 그러나이 반복적으로 동일한 지점에서 인덱싱을 중단하는 것, * MultiIndex 3,173,000Jackrabbit Lucene 디버깅 중단/실패

* INFO 카운트 정보 * RepositoryImpl : 종료 저장소 (RepositoryImpl.java, 라인 1139)

는 는

java.lang.IllegalStateException를 보여주는 CRX 웹 인스턴스를 떠나 (회사 이름이 편집 됨)

: 저장소입니다 사용 불가.

로그가 꺼지는 이유는 없습니다. 더 높은 수준의 추적에는이 둘 사이에 더 이상 선이 없습니다. 언급 된 경로가 존재하며 눈에 띄지 않습니다. Jackrabbit은 100 개의 노드마다 경로를 기록하므로 실패를 유발하는 다음 100 개의 노드가 될 수 있습니다.

어떤 생각이 잘못되었을 수 있으며 어떻게 디버깅 할 수 있습니까?

(이것은 불행하게도, 그 미안 - 아웃 - 오브 - 내 깊이있는 질문 중 하나입니다 -. 내가 볼 위치를 모르기 때문에 나는 당신에게 훨씬 더 말할 수 없다)

+0

실제로/content/xxxxxx/jcr : content라는 노드가 있습니까? 그건 좀 비린내 같아. 어쩌면 해당 노드를 삭제하거나 이름을 변경해보십시오. –

+0

@David 아니요, 죄송합니다. 로그가 수정되었습니다. 실제 경로에는 회사 이름 등이 있으며 저장소에 존재하는 실제 경로입니다. 그것에 대해서도 특별한 것은 없습니다. MultiIndex는 100 개 항목 만 기록하므로 다음 100 개 노드에서 실패 할 수 있습니다. 나는 더 많은 로깅을 사용하여 jackrabbit-core를 재구성하고 있으며, 더 이상 볼 수 있는지 여부를 확인하기 위해 삭제할 것입니다. 예외가 발생하면 로그에 기록하지 못할 것입니다. – Rup

+0

강제 종료의 가능한 한 가지 이유는 시스템의 디스크 공간이 부족하다는 것입니다. 그러나 그에 대한 로그에 메시지가 있어야합니다. 그 이외에 저장소가 종료되는 이유가 무엇인지 알지 못합니다. 단, 종료 명령 (Ctrl + C, 중지 스크립트 사용 중지 ...). 메모리 부족 문제가 있거나 너무 많이 열려있는 파일 일 가능성이 있습니까? –

답변

0

감사합니다 의견에있는 모든 사람의 의견을 기다립니다. 문제는 우리가 나쁜 HTML과 일부 콘텐츠했다이었다, 구체적으로 <li>을 내부에 폐쇄 여부를 <select><option> :

<html><body><form> 
    <select> 
    <option value="1"><li></option> 
    </select> 
</form></body></html> 

이것은의 Throwable 때문에 오류가의 처리에 의해 체포하지 않은 StackOverflowError가와 javax.swing.text.html.parser.Parser을 죽이고 Jackrabbit MultiIndex.

저는 reported the Parser crash to Oracle입니다. 문제가있는 정확한 노드를 로그하고 가능한 경우 오류를 복구하고 계속 수행하기 위해 인덱싱 코드 주위에 추가 시도/캐치를 추가하는 Jackrabbit 코어에 대한 패치를 제안합니다. 색인 생성. StackOverflowError의 경우 복구가 가능하다고 생각합니다. 예외 처리 코드로 돌아갈 때까지는 스택이 현명한 깊이까지 풀려났습니다.

사실 나는 여기에서 제작 된 수정 된 Jackrabbit을 실행할 수는 없지만 같은 문제가 우리를 물지 않도록 적어도 나쁜 콘텐츠를 확인하고 수정했습니다.