[gnome-continuous-yocto/gnomeostree-3.28-rocko: 7106/8267] bitbake: process: Fix disconnect when BB_SERVER_TIMEOUT



commit 11bde5de8343f5b37c65c10a71824cdd57b85f86
Author: Robert Yang <liezhi yang windriver com>
Date:   Tue Aug 8 02:12:07 2017 -0700

    bitbake: process: Fix disconnect when BB_SERVER_TIMEOUT
    
    Fixed:
    $ export BB_SERVER_TIMEOUT=10000
    $ bitbake --server-only
    $ bitbake --status-only
    [snip]
      File "/buildarea/lyang1/poky/bitbake/lib/bb/server/process.py", line 472, in recvfds
        msg, ancdata, flags, addr = sock.recvmsg(1, socket.CMSG_LEN(bytes_size))
    OSError: [Errno 9] Bad file descriptor
    
    And:
    $ export BB_SERVER_TIMEOUT=10000
    $ bitbake --server-only -B localhost:-1
    $ bitbake --status-only # Everything is fine in first run
    $ bitbake --status-only
    [snip]
      File "/buildarea/lyang1/poky/bitbake/lib/bb/server/process.py", line 472, in recvfds
        msg, ancdata, flags, addr = sock.recvmsg(1, socket.CMSG_LEN(bytes_size))
    OSError: [Errno 9] Bad file descriptor
    
    This was because self.controllersock was not set to False, so it still ran
    sock.recvmsg() when sock was closed.
    
    And also need set command_channel to Flase, otherwise the
    self.command_channel.get() will always run when EOF, and cause infinite loop.
    
    (Bitbake rev: 7b739a38601b053d9bea4df2c0b44a952ab670c4)
    
    Signed-off-by: Robert Yang <liezhi yang windriver com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 bitbake/lib/bb/server/process.py |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
---
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py
index bfd6404..5b8a549 100644
--- a/bitbake/lib/bb/server/process.py
+++ b/bitbake/lib/bb/server/process.py
@@ -173,6 +173,7 @@ class ProcessServer(multiprocessing.Process):
                     self.event_writer.writer.close()
                     del self.event_writer
                     self.controllersock.close()
+                    self.controllersock = False
                     self.haveui = False
                     self.lastui = time.time()
                     self.cooker.clientComplete()
@@ -188,6 +189,7 @@ class ProcessServer(multiprocessing.Process):
                     command = self.command_channel.get()
                 except EOFError:
                     # Client connection shutting down
+                    self.command_channel = False
                     continue
                 if command[0] == "terminateServer":
                     self.quit = True


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]