[Toaster] [PATCH] bitbake: xmlrpc: set single use mode differently
Smith, Elliot
elliot.smith at intel.com
Thu Mar 17 04:35:45 PDT 2016
Sent to bitbake-devel and added to toaster-next.
Thanks.
Elliot
On 17 March 2016 at 07:21, Ed Bartosh <ed.bartosh at linux.intel.com> wrote:
> Currently xmlrpc server implicitly sets itself into single use mode
> when bitbake server is started with anonymous port (0) or no port is
> provided in command line. In this mode bitbake shuts down xmlrpc server
> after build is done. This assumption is incorrect in some cases.
> For example Toaster uses bitbake in this mode and expects xmlrpc server
> to stay in memory.
>
> Till recent changes single use mode was always unset due to the bug.
> When the bug was fixed it broke toaster builds as Toaster couldn't
> communicate with bitbake server in single use mode.
>
> Reimplemented logic of setting single use mode. The mode is explicity
> set when --server-only command line parameter is not provided to bitbake.
> It doesn't depend on the port number anymore.
>
> [YOCTO #9275]
> [YOCTO #9240]
> [YOCTO #9252]
>
> Signed-off-by: Ed Bartosh <ed.bartosh at linux.intel.com>
> ---
> bitbake/lib/bb/main.py | 5 +++--
> bitbake/lib/bb/server/process.py | 2 +-
> bitbake/lib/bb/server/xmlrpc.py | 8 ++++----
> 3 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/bitbake/lib/bb/main.py b/bitbake/lib/bb/main.py
> index bf59793..a28c751 100755
> --- a/bitbake/lib/bb/main.py
> +++ b/bitbake/lib/bb/main.py
> @@ -282,12 +282,13 @@ class
> BitBakeConfigParameters(cookerdata.ConfigParameters):
>
> def start_server(servermodule, configParams, configuration, features):
> server = servermodule.BitBakeServer()
> + single_use = not configParams.server_only
> if configParams.bind:
> (host, port) = configParams.bind.split(':')
> - server.initServer((host, int(port)))
> + server.initServer((host, int(port)), single_use)
> configuration.interface = [ server.serverImpl.host,
> server.serverImpl.port ]
> else:
> - server.initServer()
> + server.initServer(single_use=single_use)
> configuration.interface = []
>
> try:
> diff --git a/bitbake/lib/bb/server/process.py
> b/bitbake/lib/bb/server/process.py
> index e387b30..a3078a8 100644
> --- a/bitbake/lib/bb/server/process.py
> +++ b/bitbake/lib/bb/server/process.py
> @@ -242,7 +242,7 @@ class ProcessEventQueue(multiprocessing.queues.Queue):
>
>
> class BitBakeServer(BitBakeBaseServer):
> - def initServer(self):
> + def initServer(self, single_use=True):
> # establish communication channels. We use bidirectional pipes
> for
> # ui <--> server command/response pairs
> # and a queue for server -> ui event notifications
> diff --git a/bitbake/lib/bb/server/xmlrpc.py
> b/bitbake/lib/bb/server/xmlrpc.py
> index a79b490..48d45d8 100644
> --- a/bitbake/lib/bb/server/xmlrpc.py
> +++ b/bitbake/lib/bb/server/xmlrpc.py
> @@ -189,12 +189,12 @@ class XMLRPCServer(SimpleXMLRPCServer,
> BaseImplServer):
> # remove this when you're done with debugging
> # allow_reuse_address = True
>
> - def __init__(self, interface):
> + def __init__(self, interface, single_use=False):
> """
> Constructor
> """
> BaseImplServer.__init__(self)
> - self.single_use = interface[1] == 0 # anonymous port, not getting
> reused
> + self.single_use = single_use
> # Use auto port configuration
> if (interface[1] == -1):
> interface = (interface[0], 0)
> @@ -335,9 +335,9 @@ class
> BitBakeXMLRPCServerConnection(BitBakeBaseServerConnection):
> pass
>
> class BitBakeServer(BitBakeBaseServer):
> - def initServer(self, interface = ("localhost", 0)):
> + def initServer(self, interface = ("localhost", 0), single_use =
> False):
> self.interface = interface
> - self.serverImpl = XMLRPCServer(interface)
> + self.serverImpl = XMLRPCServer(interface, single_use)
>
> def detach(self):
> daemonize.createDaemon(self.serverImpl.serve_forever,
> "bitbake-cookerdaemon.log")
> --
> 2.1.4
>
> --
> _______________________________________________
> toaster mailing list
> toaster at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster
>
--
Elliot Smith
Software Engineer
Intel Open Source Technology Centre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/toaster/attachments/20160317/a6f49b78/attachment-0001.html>
More information about the toaster
mailing list