2017-11-22 6 views
1

누구든지 이에 대해 어떤 단서가 있습니까?Sonarqube 6.7 계산 엔진 오류

"디렉토리가 아직 설정되지 않았습니다."- 다른 프로젝트가 잘 작동한다는 것을 알지 못함. 다소 큰 13,500 개의 java 파일과 2500 개의 다른 파일이 있습니다. 빌드 서버에 대한 분석은 끝났지 만 웹 서버의 CE는이 프로젝트에 문제가 있습니다.

더 작은 프로젝트는 아무런 문제가되지 않습니다.

또한 누구나 수천 명의 소나 러너를 다시하지 않고 서버에서이 작업을 어떻게 다시 실행할 수 있는지 알고 있습니다.

 
2017.11.22 09:43:03 INFO ce[][o.s.ce.app.CeServer] Compute Engine is operational 
2017.11.22 10:17:07 INFO ce[AV_kFoAKPGI1NQcqJopo][o.s.c.t.CeWorkerImpl] Execute task | project=large_java_project | type=REPORT | id=AV_kFoAKPGI1NQcqJopo | submitter=gbizeau 
2017.11.22 10:17:07 ERROR ce[AV_kFoAKPGI1NQcqJopo][o.s.s.c.t.s.ComputationStepExecutor] Execution of listener failed 
java.lang.IllegalStateException: Directory has not been set yet 
     at org.sonar.server.computation.task.projectanalysis.batch.BatchReportDirectoryHolderImpl.getDirectory(BatchReportDirectoryHolderImpl.java:37) 
     at org.sonar.server.computation.task.projectanalysis.batch.BatchReportReaderImpl.ensureInitialized(BatchReportReaderImpl.java:53) 
     at org.sonar.server.computation.task.projectanalysis.batch.BatchReportReaderImpl.readContextProperties(BatchReportReaderImpl.java:222) 
     at org.sonar.server.computation.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.createProjectAnalysis(PostProjectAnalysisTasksExecutor.java:123) 
     at org.sonar.server.computation.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.finished(PostProjectAnalysisTasksExecutor.java:103) 
     at org.sonar.server.computation.task.step.ComputationStepExecutor.executeListener(ComputationStepExecutor.java:71) 
     at org.sonar.server.computation.task.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:56) 
     at org.sonar.server.computation.task.projectanalysis.taskprocessor.ReportTaskProcessor.process(ReportTaskProcessor.java:73) 
     at org.sonar.ce.taskprocessor.CeWorkerImpl.executeTask(CeWorkerImpl.java:134) 
     at org.sonar.ce.taskprocessor.CeWorkerImpl.findAndProcessTask(CeWorkerImpl.java:97) 
     at org.sonar.ce.taskprocessor.CeWorkerImpl.withCustomizedThreadName(CeWorkerImpl.java:81) 
     at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:73) 
     at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:43) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
     at java.lang.Thread.run(Thread.java:748) 
2017.11.22 10:17:07 ERROR ce[AV_kFoAKPGI1NQcqJopo][o.s.c.t.CeWorkerImpl] Failed to execute task AV_kFoAKPGI1NQcqJopo 

추가 오류 ...

 
java.lang.IllegalStateException: Fail to select data of CE task AV_kFoAKPGI1NQcqJopo 
     at org.sonar.db.ce.CeTaskInputDao.selectData(CeTaskInputDao.java:74) 
     at org.sonar.server.computation.task.projectanalysis.step.ExtractReportStep.execute(ExtractReportStep.java:59) 
     at org.sonar.server.computation.task.step.ComputationStepExecutor.executeSteps(ComputationStepExecutor.java:64) 
     at org.sonar.server.computation.task.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:52) 
     at org.sonar.server.computation.task.projectanalysis.taskprocessor.ReportTaskProcessor.process(ReportTaskProcessor.java:73) 
     at org.sonar.ce.taskprocessor.CeWorkerImpl.executeTask(CeWorkerImpl.java:134) 
     at org.sonar.ce.taskprocessor.CeWorkerImpl.findAndProcessTask(CeWorkerImpl.java:97) 
     at org.sonar.ce.taskprocessor.CeWorkerImpl.withCustomizedThreadName(CeWorkerImpl.java:81) 
     at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:73) 
     at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:43) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
     at java.lang.Thread.run(Thread.java:748) 
Caused by: org.postgresql.util.PSQLException: ERROR: invalid memory alloc request size 1315662807 
     at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2476) 
     at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2189) 
     at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:300) 
     at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428) 
     at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:354) 
     at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:169) 
     at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:117) 
     at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) 
     at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) 
     at org.sonar.db.ce.CeTaskInputDao.selectData(CeTaskInputDao.java:67) 
     ... 17 common frames omitted 

UPDATE : 그래서 이러한 큰 크기를 처리 할 수있는 것이 "조정"PostgreSQL을에 지금까지 없었습니다. 우리 프로젝트는 압축되지 않은 3GB였습니다. 2GB의 정적 코드가 우리 빌드 폴더 (rpms 및 기타)에있을 필요가 없으며 제거 된 것입니다. SonarQube는 이제 작동합니다. 이 문제에 대한 해결책은 아니지만 다른 사람들이이 정보를 같은 문제에 사용할 수 있기를 바랍니다.

+0

어떤 OS를 사용합니까? 어쩌면 디렉토리 경로 길이 문제가있을 수 있습니다. –

+0

Linux Centos 7, 스캔이 다소 큽니다. 압축률이 637MB입니다. 압축을 풀 수 없거나 압축을 풀기 전에 시작하지 않으려 고합니다. –

+0

[SonarQube 소스 코드] (https://insight.io/github.com/SonarSource/sonarqube/blob/HEAD/server/sonar-server/src/main/java/)의 코드 스캔 중에 뭔가 찾을 수 있습니다. –

답변

1

보고하신 stacktrace가 다른 오류를 숨기고 있습니다. 이것이 실질적인 문제입니다.

Compute Engine에서 공용 PostTask API를 호출하기 위해 인수를 작성하는 동안보고 된 오류가 발생합니다. finally 블록에서 실행 된 것처럼이 코드를 볼 수 있습니다. 이 숨기기 문제를 해결할 수있는 티켓을 개설했습니다 SONAR-10115.

그러나 오류는 간접적으로 보고서를 추출하는 데 문제가 있음을 확인합니다. 우리는 "단지"정확히 어느 것을 모릅니다. 보고서의 크기와 관련 있다고 가정 할 수 있습니다.

보고서의 ZIP이 데이터베이스에서 가져와지고 디스크로 스트림으로 추출됩니다. 당신이이기 때문에 실패

  • 데이터베이스가 디스크로 추출 서버
  • 에 전체 파일 (타임 아웃 또는 무엇이든)를 스트리밍 할 수 없습니다 : 여기

    잘못 갈 수 무엇의 몇 가지 아이디어입니다 여유 공간이 부족합니다 (DB 공급 업체 및 구성, 네트워크 등에 따라 다름)
  • 또는 파일 및/또는 디렉토리 수 제한에 도달 함 (OS에 따라 다름)
  • 스트리밍이 예상대로 작동하지 않으며 OOM이 제기되었습니다.
+0

로그를 자세히 보면 ...원래 게시물에 더 추가했습니다. 더 이상 표시되지 않습니까? 145909ms에서 생성 된 분석 보고서, 디렉토리 크기 = 3기가바이트 정보 : 183709ms 압축 분석 보고서, 우편 크기 = 627메가바이트 정보 : 83625ms –

+0

그것은을 업로드 분석 보고서 또한, 내 파일 정보는 정보입니다 ... 내가 제공 한 힌트 중 하나를 확인하면 데이터베이스에 문제가있는 것입니다. 그러나 나는 여기서 많은 도움을 줄 수 없다. 나는 단지 당신에게 postgres 오류를 구글로 알려주고 그것이 어떻게되는지 알려주겠습니다. –

+0

그래서 나는 지금까지 큰 크기를 처리 할 수 ​​있도록 postgresql을 "조정"할 수 없었습니다. 우리 프로젝트는 압축되지 않은 3GB였습니다. 2GB의 정적 코드가 우리 빌드 폴더 (rpms 및 기타)에있을 필요가 없으며 제거 된 것입니다. SonarQube는 이제 작동합니다. 이 문제에 대한 해결책은 아니지만 다른 사람들이이 정보를 같은 문제에 사용할 수 있기를 바랍니다. –

관련 문제