2013-08-14 5 views
0

의 최대 스레드를 설정하는 방법. 아티팩트 저장소의 URI가 http 프로토콜을 사용하여 사이트 위치를 가리키는 경우 문제가 발생합니다. 이슈의 다운로드가 어느 시점에서 중지되고 작업 상태는 심각도 IStatus.CANCEL로 설정됩니다. (이 오류가 발생하지 않는 파일 프로토콜을 사용하십시오.) "중단"이 모드에서는 발생하지 않기 때문에 내가 디버깅이를 확인할 수나는 P2의 DirectorApplication 유사한 P2 설치를 수행하는 도구 작업을 오전 P2의 SimpleArtifactRepository

. SimpleArtifactRepository.getArtifacts에 여러 작업이 요청 된 아티팩트를 다운로드하기 시작한 코드 조각을 발견했습니다. manualo로 numberOfJobs를 1로 설정하면 "중단"도 발생하지 않습니다.

나는 그 이유가 될 수 있는지 모르겠습니다. 최대 스레드 수를 1로 설정할 수있는 가능성에 만족할 것입니다.이 용도로 SimpleArtifactRepository.getMaximumThreads에 의해 평가되는 속성이 있습니다 (PROP_MAX_THREADS (eclipse.p2.max.threads)).

그래도 난이 속성을 설정하는 올바른 위치를 찾을 수 없습니다. 어떤 힌트라도 대단히 환영합니다!

답변

1

이 속성을 설정하는 유일한 공식적인 방법은 리포지토리에 저장하는 것입니다. 따라서 사용중인 이슈 저장소를 모두 소유하고 있다면이 저장소를 변경할 수 있습니다.

그렇지 않으면

(그리고 가능성 경우) 만 설정하는 해킹이 있습니다. 이슈 저장소의 속성을 설정하기위한 API가 있지만 HTTP를 통해 액세스하는 저장소에는 해당 API를 사용할 수 없습니다. API를 통한 변경은 메모리 내 표현에 영향을 미칠뿐만 아니라 p2는 지속 된 저장소를 변경하려고합니다. 이는 원격 저장소에서 수행 될 수 없으므로 API를 통한 모든 등록 정보 변경이 방지됩니다.

그래서 전용 메모리의 속성을 변경하려면 반사를 사용하여 객체를 해킹 할 필요가있다. 예 here을 볼 수 있습니다.

+0

[버그 393004] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=393004)에 대한 작업의 일부로 Tycho 코드베이스에서 연결된 리플렉션 해킹이 제거되었습니다. – oberlies

+0

우리가 저장소를 소유하고 있기 때문에 좋은 소식입니다. 이 속성은 어떻게 설정합니까? –

+0

'IRepository.setProperty'를 통해 프로그래밍 방식으로 속성을 설정하거나 artifacts.xml에' '태그를 추가하여 속성을 설정할 수 있습니다. – oberlies