diff options
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/ui/uievent.py | 22 |
1 files changed, 19 insertions, 3 deletions
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 |