Skip to contentSkip to conversation

runqemu: fix a race issue on lockdir

PATCH New Robert Yang 1 participant 2 messages Sep 14, 2016

lore
Share & tools
lore
#0 lore raw

cover runqemu: fix a race issue on lockdir

The following changes since commit 4d268abc2fc892c5d34449f78c8e9f2b1a9d6bac:

oeqa.runtime.smart: work around smart race issues (2016-09-09 12:12:17 +0100)

are available in the git repository at:

git://git.openembedded.org/openembedded-core-contrib rbt/rq
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=rbt/rq

Robert Yang (1):
runqemu: fix a race issue on lockdir

 scripts/runqemu | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
Signature · 1 line
2.9.0
#1 lore raw

PATCH 1/1 runqemu: fix a race issue on lockdir

There might be a race issue when multi runqemu processess are running at the same time:

| Traceback (most recent call last):
|   File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-ipk/build/scripts/runqemu", line 920, in <module>
|     ret = main()
|   File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-ipk/build/scripts/runqemu", line 911, in main
|     config.setup_network()
|   File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-ipk/build/scripts/runqemu", line 760, in setup_network
|     self.setup_tap()
|   File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-ipk/build/scripts/runqemu", line 697, in setup_tap
|     os.mkdir(lockdir)
| FileExistsError: [Errno 17] File exists: '/tmp/qemu-tap-locks'
---
 scripts/runqemu | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
scripts/runqemu +6 -1
index 9af13f3..b6bc0ba 100755
@@ -694,7 +694,12 @@ class BaseConfig(object):
             raise Exception("runqemu-ifup, runqemu-ifdown or ip not found")
 
         if not os.path.exists(lockdir):
-            os.mkdir(lockdir)
+            # There might be a race issue when multi runqemu processess are
+            # running at the same time.
+            try:
+                os.mkdir(lockdir)
+            except FileExistsError:
+                pass
 
         cmd = '%s link' % ip
         logger.info('Running %s...' % cmd)
Signature · 1 line
2.9.0