[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