背景:我有一个TeamCity安装了几十个构建配置。许多这些构建配置部署到相同的服务器上。为了减轻冲突,我使用了TeamCity的共享资源特性来控制这些构建的运行方式。部署到一个特定服务器的所有构建都需要对相同的共享资源使用写锁;因此,他们不会尝试在同一时间部署到同一台服务器。
上周末,由于停电,我们发生了严重的撞车事故。在运行对共享资源具有写锁的构建时发生崩溃。现在看来写锁从未被释放。使用共享资源的构建都不能运行——它们都只是排队。如果我禁用资源,然后重新启用它,构建将运行,但下一次它将再次排队。
我真的不愿意删除和重新创建这些共享资源;每一个都被6-9个构建配置使用,重新分配它们将是一个非常令人头疼的问题。如何清除未释放的写锁?
共享资源锁状态在运行时确定,不会存储在任何地方。因此,如果存在需要写锁的挂起构建,这可能会导致所描述的行为。在这种情况下,您应该检查挂起的构建并强制终止它们以释放锁
另外,TeamCity 8.1.2中有一个问题TW-36042,它会导致具有无限配额的资源在写锁时行为错误。如果您的行为与问题中匹配-解决方案(8.1.3更新之前)是将无限资源转换为具有指定配额的资源