From d1baf887cd11bc12175856adaad225e0879554bf Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 24 Dec 2018 16:32:18 +0000 Subject: 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: f770d6a332812031682dc6bef1a2a84da52a4c32) Signed-off-by: Richard Purdie --- bitbake/lib/bb/server/process.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'bitbake/lib') diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py index 01a4b3030c..49a1b7c143 100644 --- a/bitbake/lib/bb/server/process.py +++ b/bitbake/lib/bb/server/process.py @@ -478,7 +478,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) -- cgit v1.2.3-54-g00ecf