]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
bitbake: process: Handle EWOULDBLOCK in socket connect
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 24 Dec 2018 16:32:18 +0000 (16:32 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 26 Dec 2018 11:10:33 +0000 (11:10 +0000)
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>
bitbake/lib/bb/server/process.py

index f1fbe3313c105f4213c87bfd0699ec8a33e0a4a5..1e4b51e35edce7ba1dd8132019094bff9d83c47c 100644 (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)