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 <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexandru DAMIAN 2014-06-03 16:26:12 +01:00 committed by Richard Purdie
parent e89db137f0
commit 506b5bd729
1 changed files with 19 additions and 3 deletions

View File

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