我正在考虑为我们的团队设置一个符号存储,并扩展我们的打包基础设施,以便调试符号自动添加到商店中。这个想法是,构建完成后,我们在build目录上运行symstore,并让它将所有.pdb文件合并到符号存储中。原则上,这似乎相当简单,但有一个问题:
使用SymStore上的页面解释说
SymStore不支持来自多个用户的同时事务。建议指定一个用户为符号存储的“管理员”,并负责所有add和del事务。
这是一个问题,因为我们有大量的构建机器,而且完全有可能两个(独立的)构建在大致相同的时间完成,因此尝试并行更新符号存储。
我可以想出各种方法来确保总是只有一个symstore进程更新符号存储,但是在我提交自己的同步方法之前,我想知道:
是否有一种(准)标准或非常传统的方法来更新符号存储,以确保没有多个并发事务?特别是,似乎编写自己的符号存储创建程序是可能的,也许有一种流行的替代方案,可以使用某种锁来处理同步吗?我想其他球队肯定已经解决了这个问题。
发布于 2014-02-11 10:19:00
最后,我编写了一个小的实用程序withlockfile,可以用来同步将事务添加到符号存储中。我的想法是,代替
symstore add ... /s \\myserver\symbols我将调用包装在一个withlockfile调用中,该调用将挂起,直到它能够访问一个锁文件。锁定文件存储在实际的符号存储中。所以我的上述呼吁变成
withlockfile \\myserver\symbols\lockfile.txt symstore add ... /s \\myserver\symbols此命令在构建后执行,因为所有withlockfile调用都使用相同(共享)锁文件,因此没有两个symstore调用同时运行。
https://stackoverflow.com/questions/21149366
复制相似问题