2012-06-19 2 views
0

Jenkins 서버에 추가 한 프로젝트가 있습니다. 프로젝트에는 부모 및 자식 파일 pom 파일이 포함됩니다. 부모와 자식 pom 파일 모두에 대한 빌드를 추가하고 잠시 동안 모든 것이 올바르게 작동했지만 아이 빌드가 작동을 멈췄습니다. 아이가 수중 음파 탐지기 분석을 얻을 것입니다 때마다 Sonar가 javax.persistence.NonUniqueResultException을 사용하여 Jenkins 빌드 프로젝트를 빌드하지 못했습니다.

, 나는 다음과 같은 예외를 얻을 것입니다 :

Caused by: javax.persistence.NonUniqueResultException: Expected single result, but got : [Snapshot[resourceId=1148,createdAt=2011-04-29 23:08:23.0,version=01.01.01.1054-SNAPSHOT,last=true,status=P,scope=PRJ,path=,depth=0,qualifier=TRK,rootId=<null>,parentId=<null>,rootProjectId=1148,period1Mode=previous_analysis,period2Mode=days,period3Mode=days,period4Mode=<null>,period5Mode=<null>,period1Param=2011-04-19,period2Param=5,period3Param=30,period4Param=<null>,period5Param=<null>,period1Date=2011-04-19 05:06:16.0,period2Date=2011-04-24 23:08:23.0,period3Date=2011-03-30 23:08:23.0,period4Date=<null>,period5Date=<null>,id=486870], Snapshot[resourceId=1148,createdAt=2011-05-04 09:52:04.0,version=01.01.01.1054-SNAPSHOT,last=true,status=P,scope=PRJ,path=495746.,depth=1,qualifier=BRC,rootId=495746,parentId=495746,rootProjectId=1149,period1Mode=previous_analysis,period2Mode=days,period3Mode=days,period4Mode=<null>,period5Mode=<null>,period1Param=2011-04-29,period2Param=5,period3Param=30,period4Param=<null>,period5Param=<null>,period1Date=2011-04-29 23:08:23.0,period2Date=2011-04-29 09:52:04.0,period3Date=2011-04-04 09:52:04.0,period4Date=<null>,period5Date=<null>,id=495748]] 

나는 삭제하고 아무 소용이 프로젝트를 다시 시도했습니다. 어떤 해결책?

답변

1

이것은 Sonar 버전 < 2.8의 버그입니다. 여기 버그 보고서를 볼 수 있습니다 : Sonar-2329. 본질적으로 문제는 부모와 자식 빌드가 동시에 수중 음파 탐지기로 분석 될 때 발생합니다. 이를 해결하려면 다음 두 가지를 수행해야합니다.

1) Jenkins에서 상위 또는 하위 빌드를 제거합니다. Jenkins를 기반으로 한 프로젝트가 하나만 있어야합니다.

2) 동시 분석으로 인해 데이터베이스의 손상을 제거해야합니다. 당신은 당신의 수중 음파 탐지기 데이터베이스에서 다음 SQL 명령을 실행하여이 작업을 수행 할 수 있습니다

update snapshots old_snap, snapshots new_snap set old_snap.islast=0 where old_snap.islast=1 and new_snap.created_at > old_snap.created_at and new_snap.project_id = old_snap.project_id and new_snap.islast=1 

뿐만 아니라 SQL은 다른 SQL 언어에 대한 명령으로, 자세한 내용은 버그 리포트를 참조하십시오. 위 쿼리는 MySQL에서 작동합니다.