From 506b5bd729920d7bab694f28d674888d1b7398db Mon Sep 17 00:00:00 2001 From: Alexandru DAMIAN Date: Tue, 3 Jun 2014 16:26:12 +0100 Subject: bitbake: uievent: retry on handler registration failure The registration of a remote UI event handler may fail if the server cooker is currently in some certain states. This may happen, for example, when a remote UI is started very fast after the bitbake server is started, and the server hadn't time to finish initial configuration parsing. Rather than fail outright, we have the remote UI event retry registration for five time at one-second intervals, in the hope it will succeed. (Bitbake rev: c3d520c92ae4ae80d31926a416456df510654b6a) Signed-off-by: Alexandru DAMIAN Signed-off-by: Richard Purdie --- bitbake/lib/bb/ui/uievent.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'bitbake') diff --git a/bitbake/lib/bb/ui/uievent.py b/bitbake/lib/bb/ui/uievent.py index eb760c00c3..c6b100c840 100644 --- a/bitbake/lib/bb/ui/uievent.py +++ b/bitbake/lib/bb/ui/uievent.py @@ -44,10 +44,26 @@ class BBUIEventQueue: server.register_function( self.send_event, "event.sendpickle" ) server.socket.settimeout(1) - self.EventHandle = self.BBServer.registerEventHandler(self.host, self.port) + self.EventHandler = None + count_tries = 0 - if (self.EventHandle == None): - bb.warn("Could not register UI event handler %s:%d" % (self.host, self.port)) + # the event handler registration may fail here due to cooker being in invalid state + # this is a transient situation, and we should retry a couple of times before + # giving up + + while self.EventHandler == None and count_tries < 5: + self.EventHandle = self.BBServer.registerEventHandler(self.host, self.port) + + if (self.EventHandle != None): + break + + bb.warn("Could not register UI event handler %s:%d, retry" % (self.host, self.port)) + count_tries += 1 + import time + time.sleep(1) + + + if self.EventHandle == None: raise Exception("Could not register UI event handler") self.server = server -- cgit 1.2.3-korg