0

我有一个项目已添加到我的 Jenkins 服务器中。该项目包括一个父子 maven pom 文件。我为父 pom 文件和子 pom 文件添加了构建,并且在短时间内一切正常,但随后子构建停止工作。

每当孩子进行声纳分析时,我都会遇到这样的异常:

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]]

我尝试删除并重新创建项目无济于事。有什么解决办法吗?

4

1 回答 1

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。

于 2012-06-19T06:02:19.483 回答