我们有一个TFS2010设置,一个控制器和两个代理在同一个构建机器上运行。昨天,构建服务器停止运行2个并发构建,只让一个代理完成工作。我试图重启控制器和代理,但没有锁定。没有模式,两个代理都在工作 - 一次只有一个。我今天添加了一个新代理(同一台机器),它现在可以获得2个并发版本 - 仍然有一个懒惰代理。有什么想法吗?
新信息: 当我有两个正在运行的构建和队列中的一对(NB总共有3个代理)并且我将优先级更改为高 - 它开始构建在最后一个代理上!?
答案 0 :(得分:2)
好的 - 因此TFS数据库中tbl_BuildQueue中的无效条目就是原因。 Normal Priority Builds Will Not Build in TFS 2010
快速修复是删除tbl_BuildQueue中具有不存在的DefinitionId的条目。
SELECT * FROM [Tfs_Default].[dbo].[tbl_BuildQueue] where DefinitionId not in (select DefinitionId from tbl_BuildDefinition)
答案 1 :(得分:0)
您可以检查一些事项:
答案 2 :(得分:0)
我们目前正在与客户合作解决一个问题,该问题可能会使孤立的代理程序无法再运行。这是由于存储过程中的竞争条件而发生的,与缺少外键关系无关。
如果您想验证实际发生了这种情况,请在项目集合数据库上运行以下查询:
SELECT *
FROM tbl_BuildAgent ba
LEFT JOIN tbl_BuildAgentReservation bar
ON bar.ReservationId = ba.ReservationId
WHERE ba.ReservationId IS NOT NULL
AND bar.ReservationId IS NULL
如果返回任何行,您可以通过将受影响的构建代理的“ReservationId”列设置回NULL来临时解决问题。更新此列后,任何在更新后排队的新版本都可以使用之前“懒惰”的代理。
帕特里克