[pacman-dev] Improving locking - Was: [PATCH] Use file locks (flock) to stop multiple pacman instances from running concurrently. This improves the current model by automatically removing locks held by programs has failed to remove the lock, for example at a crash, forced kill or power outage.
allan at archlinux.org
Mon Aug 19 03:25:16 EDT 2013
On 19/08/13 13:44, Jan Alexander Steffens wrote:
> On Mon, Aug 19, 2013 at 5:39 AM, Allan McRae <allan at archlinux.org> wrote:
>> I stored the process ID in the lock file during creation many years ago.
>> Is there a portable way for us to determine if that process ID is still
>> running and remove the lock file automatically if it is not?
> Try to kill the PID with signal 0 and remove it if it fails with ESRCH?
After discussing on IRC with Jan, this whole approach has issues...
It would be fine for the local db lock, but not for the sync db or
package cache which might be accessed by multiple systems.
Perhaps we'd require the pid and a machine identifier? Of course, we
could not clear leftover lock files from other machines, but we'd still
fix the majority use case.
More information about the pacman-dev