如何将更新同步到Windows符号存储?

我正在考虑为我们的团队build立一个符号商店 ,并扩展我们的打包基础架构,以便自动将debugging符号添加到商店中。 这个想法是,一旦构build完成,我们在构build目录上运行symstore ,并将所有.pdb文件合并到符号存储中。 原则上,这似乎相当简单,但有一个问题:

使用SymStore的页面解释说

SymStore不支持来自多个用户的同时事务。 build议将一个用户指定为符号存储的“pipe理员”,并负责所有添加和删除事务。

这是一个问题,因为我们有大量的构build机器,并且两个(独立的)构build完全可能在同一时间完成,因此尝试并行地更新符号存储。

我可以想出各种方法来确保始终只有一个symstore进程更新符号存储,但是在我推出自己的同步方法之前,我想知道:

是否有一种(准)标准或非常传统的方式来更新符号存储库,以确保不存在多个并发事务? 特别是,似乎可以编写自己的符号存储库创build程序 ,也许有一个stream行的替代方法,使用某种types的锁来处理同步? 我想其他球队一定已经(并希望)已经解决了这个问题。

Solutions Collecting From Web of "如何将更新同步到Windows符号存储?"

我最终用withlockfile写了一个小实用程序,我可以使用它来同步添加交易到符号存储。 这个想法是,而不是

 symstore add ... /s \\myserver\symbols 

我将这个调用包装在一个withlockfile调用中,这个调用将暂停,直到它能够获得一个锁定文件。 锁定文件存储在实际的符号存储中。 所以我上面的电话变成了

 withlockfile \\myserver\symbols\lockfile.txt symstore add ... /s \\myserver\symbols 

这个命令是在我们的构建之后执行的,因为所有的withlockfile调用都使用相同的(共享的)锁定文件,并没有两个symstore调用同时运行。