bitbake: 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.

(Bitbake rev: d5b0a9a302ac0eafa4f797ac15ea77db87e82b3c)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2018-12-24 16:32:18 +00:00
parent c263f31e39
commit 5bc4f6935b

View File

@@ -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)