mirror of
https://github.com/m-labs/artiq.git
synced 2024-12-25 03:08:27 +08:00
artiq_devtool: make locking reentrant.
This commit is contained in:
parent
b553804e5a
commit
3922a7c64b
@ -13,6 +13,7 @@ import select
|
||||
import threading
|
||||
import os
|
||||
import shutil
|
||||
import re
|
||||
|
||||
from artiq.tools import verbosity_args, init_logger, logger, SSHClient
|
||||
|
||||
@ -93,6 +94,15 @@ def main():
|
||||
nonlocal flock_file
|
||||
|
||||
if not flock_acquired:
|
||||
fuser_args = ["fuser", "-u", lockfile]
|
||||
fuser = client.spawn_command(fuser_args)
|
||||
fuser_file = fuser.makefile('r')
|
||||
fuser_match = re.search(r"\((.+?)\)", fuser_file.readline())
|
||||
if fuser_match.group(1) == os.getenv("USER"):
|
||||
logger.info("Lock already acquired by {}".format(os.getenv("USER")))
|
||||
flock_acquired = True
|
||||
return
|
||||
|
||||
logger.info("Acquiring device lock")
|
||||
flock_args = ["flock"]
|
||||
if not args.wait:
|
||||
|
Loading…
Reference in New Issue
Block a user