I ended up writing a little utility withlockfile
which I can use to synchronize adding transactions to the symbol store. The idea is that instead of
symstore add ... /s \\myserver\symbols
I wrap the invocation in a withlockfile
call which will suspend until it can acqure a lock file. The lock file is stored in the actual symbol storage. So my above call becomes
withlockfile \\myserver\symbols\lockfile.txt symstore add ... /s \\myserver\symbols
This command is executed after our builds, since all withlockfile
calls use the same (shared) lock file, no two symstore
invocations run concurrently.