aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2018-12-24 16:32:18 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-01-28 16:59:57 +0000
commitc2000651a200530ba08161207ade5eea8bbeec43 (patch)
treebfa6752901f412d7a96a75025380bfe90a6c1a98
parent469cc520593ba52775a373faad03072b7af05dba (diff)
downloadbitbake-contrib-c2000651a200530ba08161207ade5eea8bbeec43.tar.gz
process: Handle EWOULDBLOCK in socket connect
Now that we set a timeout for the socket, it can return EWOULDBLOCK if a signal or other event happens to wake up even if we don't timeout. If this happens, retry the connection, else we simply see it quickly loop through the retries and abort the connection in a very short interval. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/server/process.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/bb/server/process.py b/lib/bb/server/process.py
index f1fbe3313..1e4b51e35 100644
--- a/lib/bb/server/process.py
+++ b/lib/bb/server/process.py
@@ -479,7 +479,14 @@ def connectProcessServer(sockname, featureset):
try:
try:
os.chdir(os.path.dirname(sockname))
- sock.connect(os.path.basename(sockname))
+ finished = False
+ while not finished:
+ try:
+ sock.connect(os.path.basename(sockname))
+ finished = True
+ except IOError as e:
+ if e.errno == errno.EWOULDBLOCK:
+ pass
finally:
os.chdir(cwd)