Currently on Windows all agents running in the same session (same lock namespace) use common locks: ZBX_MUTEX_LOG, ZBX_MUTEX_PERFSTAT.
This is a risky dependency between agents. Possible effects:
- reduced performance due to all agents waiting in line to acquire the same lock;
- stalls of all agents in case one of them gets stuck after acquiring lock (due to debugging, stopping from process manager by user, etc.);
- in case of problem with the lock itself (it is removed by admin, abandoned by one agent, etc.) all agents are affected.
In Unix we use SysV mutexes with limited namespace. On Windows we can convert at least ZBX_MUTEX_LOG to the name of the log file that this lock is protecting.
We could also use configuration file or hostname (if -m was used) as a prefix for these locks.