summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2008-10-06 08:09:11 +0000
committerRichard Purdie <richard@openedhand.com>2008-10-06 08:09:11 +0000
commitf4337b98030c00bf53ea8cd88ea51a2f091e4ed3 (patch)
tree0a57cf013048d793d678311ca3e3cb98351a4cdc
parent527b3372cdafc988c581f946d79de6f57f0e3cd4 (diff)
downloadopenembedded-core-f4337b98030c00bf53ea8cd88ea51a2f091e4ed3.tar.gz
openembedded-core-f4337b98030c00bf53ea8cd88ea51a2f091e4ed3.tar.bz2
openembedded-core-f4337b98030c00bf53ea8cd88ea51a2f091e4ed3.zip
bitbake utils.py: Fix ocassional locking glitch with a better retrying mechanism
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5415 311d38ba-8fff-0310-9ca6-ca027cbcb966
-rw-r--r--bitbake-dev/lib/bb/utils.py21
-rw-r--r--bitbake/lib/bb/utils.py21
2 files changed, 24 insertions, 18 deletions
diff --git a/bitbake-dev/lib/bb/utils.py b/bitbake-dev/lib/bb/utils.py
index 89506649fb..119f08582d 100644
--- a/bitbake-dev/lib/bb/utils.py
+++ b/bitbake-dev/lib/bb/utils.py
@@ -246,15 +246,18 @@ def lockfile(name):
# This implementation is unfair since the last person to request the
# lock is the most likely to win it.
- lf = open(name, "a+")
- fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
- statinfo = os.fstat(lf.fileno())
- if os.path.exists(lf.name):
- statinfo2 = os.stat(lf.name)
- if statinfo.st_ino == statinfo2.st_ino:
- return lf
- # File no longer exists or changed, retry
- lf.close
+ try:
+ lf = open(name, "a+")
+ fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
+ statinfo = os.fstat(lf.fileno())
+ if os.path.exists(lf.name):
+ statinfo2 = os.stat(lf.name)
+ if statinfo.st_ino == statinfo2.st_ino:
+ return lf
+ # File no longer exists or changed, retry
+ lf.close
+ except Exception, e:
+ continue
def unlockfile(lf):
"""
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index d3701acca7..18fc9f7252 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -246,15 +246,18 @@ def lockfile(name):
# This implementation is unfair since the last person to request the
# lock is the most likely to win it.
- lf = open(name, "a+")
- fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
- statinfo = os.fstat(lf.fileno())
- if os.path.exists(lf.name):
- statinfo2 = os.stat(lf.name)
- if statinfo.st_ino == statinfo2.st_ino:
- return lf
- # File no longer exists or changed, retry
- lf.close
+ try:
+ lf = open(name, "a+")
+ fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
+ statinfo = os.fstat(lf.fileno())
+ if os.path.exists(lf.name):
+ statinfo2 = os.stat(lf.name)
+ if statinfo.st_ino == statinfo2.st_ino:
+ return lf
+ # File no longer exists or changed, retry
+ lf.close
+ except Exception, e:
+ continue
def unlockfile(lf):
"""