]> code.ossystems Code Review - openembedded-core.git/commitdiff
runqemu: fix a race issue on lockdir
authorRobert Yang <liezhi.yang@windriver.com>
Wed, 14 Sep 2016 09:45:57 +0000 (02:45 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 14 Sep 2016 21:20:05 +0000 (22:20 +0100)
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'

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
scripts/runqemu

index 9af13f3360d966d4ae80b9378fab6d8f208b7e85..b6bc0ba7347bed58f004812338930c4c114c48a6 100755 (executable)
@@ -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)