All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/3] memres: fix for --observe-only
@ 2017-07-11 10:27 Robert Yang
  2017-07-11 10:27 ` [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess Robert Yang
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Robert Yang @ 2017-07-11 10:27 UTC (permalink / raw)
  To: bitbake-devel

Hello,

These are just RFC patches, bitbake memeres still has other problems as
listed here:
https://wiki.yoctoproject.org/wiki/Tinfoil2

I sent these patches earlier to make sure that I'm on the correct way.

Things I will work on recently:
1) Nongthing in bitbake-cookerdaemon.log, this is incorrect
2) Sometimes, Ctrl-C can't stop the build correctly
3) Sometimes, "bitbake -m" can't shutdown the server

// Robert

The following changes since commit 854c8c2e4c24ea3ddfec6e5b5f6477f0620510e4:

  oeqa/tinfoil: Improve test_wait_event for race issues (2017-07-08 13:34:46 +0100)

are available in the git repository at:

  git://git.pokylinux.org/poky-contrib rbt/memres
  http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=rbt/memres

Robert Yang (3):
  bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess
  bitbake: lib: fix --observe-only
  bitbake: uihelper.py: check event.pid is present

 bitbake/lib/bb/main.py          |  2 +-
 bitbake/lib/bb/server/xmlrpc.py | 13 ++++++++-----
 bitbake/lib/bb/ui/knotty.py     |  2 ++
 bitbake/lib/bb/ui/uievent.py    |  5 +++--
 bitbake/lib/bb/ui/uihelper.py   | 41 ++++++++++++++++++++++-------------------
 5 files changed, 36 insertions(+), 27 deletions(-)

-- 
2.11.0



^ permalink raw reply	[flat|nested] 11+ messages in thread

* [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess
  2017-07-11 10:27 [RFC PATCH 0/3] memres: fix for --observe-only Robert Yang
@ 2017-07-11 10:27 ` Robert Yang
  2017-07-11 22:56   ` Richard Purdie
  2017-07-11 10:27 ` [RFC PATCH 2/3] bitbake: lib: fix --observe-only Robert Yang
  2017-07-11 10:27 ` [RFC PATCH 3/3] bitbake: uihelper.py: check event.pid is present Robert Yang
  2 siblings, 1 reply; 11+ messages in thread
From: Robert Yang @ 2017-07-11 10:27 UTC (permalink / raw)
  To: bitbake-devel

Sometimes, we may see the errors:
$ bitbake --observe-only
ERROR: Unknown event: <bb.event.MonitorDiskEvent object at 0x7fbd2e0a8438>
ERROR: Unknown event: <bb.event.RecipeTaskPreProcess object at 0x7fdc6b7e7b00>

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 bitbake/lib/bb/ui/knotty.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index 11afb3e7441..71ec168fa6c 100644
--- a/bitbake/lib/bb/ui/knotty.py
+++ b/bitbake/lib/bb/ui/knotty.py
@@ -667,11 +667,13 @@ def main(server, eventHandler, params, tf = TerminalFilter):
                                   bb.event.MultiConfigParsed,
                                   bb.event.RecipeParsed,
                                   bb.event.RecipePreFinalise,
+                                  bb.event.RecipeTaskPreProcess,
                                   bb.runqueue.runQueueEvent,
                                   bb.event.OperationStarted,
                                   bb.event.OperationCompleted,
                                   bb.event.OperationProgress,
                                   bb.event.DiskFull,
+                                  bb.event.MonitorDiskEvent,
                                   bb.event.HeartbeatEvent,
                                   bb.build.TaskProgress)):
                 continue
-- 
2.11.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [RFC PATCH 2/3] bitbake: lib: fix --observe-only
  2017-07-11 10:27 [RFC PATCH 0/3] memres: fix for --observe-only Robert Yang
  2017-07-11 10:27 ` [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess Robert Yang
@ 2017-07-11 10:27 ` Robert Yang
  2017-07-11 10:27 ` [RFC PATCH 3/3] bitbake: uihelper.py: check event.pid is present Robert Yang
  2 siblings, 0 replies; 11+ messages in thread
From: Robert Yang @ 2017-07-11 10:27 UTC (permalink / raw)
  To: bitbake-devel

Fixed:
$ . ../poky/oe-init-build-env-memres .
$ bitbake world
In another terminal
$ . ../poky/oe-init-build-env-memres .
$ bitbake --observe-only
Traceback (most recent call last):
  File "/buildarea/lyang1/poky/bitbake/bin/bitbake", line 48, in <module>
    cookerdata.CookerConfiguration()))
  File "/buildarea/lyang1/poky/bitbake/lib/bb/main.py", line 456, in bitbake_main
    server, server_connection, ui_module = setup_bitbake(configParams, configuration)
  File "/buildarea/lyang1/poky/bitbake/lib/bb/main.py", line 544, in setup_bitbake
    server_connection.setupEventQueue()
  File "/buildarea/lyang1/poky/bitbake/lib/bb/server/xmlrpc.py", line 363, in setupEventQueue
    self.events = uievent.BBUIEventQueue(self.connection, self.clientinfo)
  File "/buildarea/lyang1/poky/bitbake/lib/bb/ui/uievent.py", line 72, in __init__
    raise Exception(errmsg)
Exception: Could not register UI event handler. Error: Cooker is busy: running, host 127.0.0.1, port 36350
WARNING: Could not register UI event handler. Error: Cooker is busy: running, host 127.0.0.1, port 36350, retry
[snip]

This was becuase xmlrpc doesn't allow connections when cooker is running, but
--observe-only doesn't do any builds, so allow it to connect is safe.

[YOCTO #10731]

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 bitbake/lib/bb/main.py          |  2 +-
 bitbake/lib/bb/server/xmlrpc.py | 13 ++++++++-----
 bitbake/lib/bb/ui/uievent.py    |  5 +++--
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/bitbake/lib/bb/main.py b/bitbake/lib/bb/main.py
index 29e391162e6..f998e9dfef4 100755
--- a/bitbake/lib/bb/main.py
+++ b/bitbake/lib/bb/main.py
@@ -541,7 +541,7 @@ def setup_bitbake(configParams, configuration, extrafeatures=None, setup_logging
             bb.event.ui_queue = []
             return None, None, None
 
-        server_connection.setupEventQueue()
+        server_connection.setupEventQueue(configParams.observe_only)
 
         # Restore the environment in case the UI needs it
         for k in cleanedvars:
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py
index 1a475e04ba5..bbc37d72f9b 100644
--- a/bitbake/lib/bb/server/xmlrpc.py
+++ b/bitbake/lib/bb/server/xmlrpc.py
@@ -108,14 +108,14 @@ class BitBakeServerCommands():
         self.server = server
         self.has_client = False
 
-    def registerEventHandler(self, host, port):
+    def registerEventHandler(self, host, port, observe_only=False):
         """
         Register a remote UI Event Handler
         """
         s, t = _create_server(host, port)
 
-        # we don't allow connections if the cooker is running
-        if (self.cooker.state in [bb.cooker.state.parsing, bb.cooker.state.running]):
+        # Only allow observe_only connections if the cooker is running
+        if (self.cooker.state in [bb.cooker.state.parsing, bb.cooker.state.running]) and not observe_only:
             return None, "Cooker is busy: %s" % bb.cooker.state.get_name(self.cooker.state)
 
         self.event_handle = bb.event.register_UIHhandler(s, True)
@@ -359,11 +359,14 @@ class BitBakeXMLRPCServerConnection(BitBakeBaseServerConnection):
         self.transport.set_connection_token(token)
         return self
 
-    def setupEventQueue(self):
-        self.events = uievent.BBUIEventQueue(self.connection, self.clientinfo)
+    def setupEventQueue(self, observe_only=False):
+        self.events = uievent.BBUIEventQueue(self.connection, self.clientinfo, observe_only)
         for event in bb.event.ui_queue:
             self.events.queue_event(event)
 
+        if observe_only:
+            return
+
         _, error = self.connection.runCommand(["setFeatures", self.featureset])
         if error:
             # disconnect the client, we can't make the setFeature work
diff --git a/bitbake/lib/bb/ui/uievent.py b/bitbake/lib/bb/ui/uievent.py
index 9542b911ca0..7dfe02c6c97 100644
--- a/bitbake/lib/bb/ui/uievent.py
+++ b/bitbake/lib/bb/ui/uievent.py
@@ -28,7 +28,7 @@ import socket, threading, pickle, collections
 from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
 
 class BBUIEventQueue:
-    def __init__(self, BBServer, clientinfo=("localhost, 0")):
+    def __init__(self, BBServer, clientinfo=("localhost, 0"), observe_only=False):
 
         self.eventQueue = []
         self.eventQueueLock = threading.Lock()
@@ -36,6 +36,7 @@ class BBUIEventQueue:
 
         self.BBServer = BBServer
         self.clientinfo = clientinfo
+        self.observe_only = observe_only
 
         server = UIXMLRPCServer(self.clientinfo)
         self.host, self.port = server.socket.getsockname()
@@ -51,7 +52,7 @@ class BBUIEventQueue:
         # giving up
 
         for count_tries in range(5):
-            ret = self.BBServer.registerEventHandler(self.host, self.port)
+            ret = self.BBServer.registerEventHandler(self.host, self.port, self.observe_only)
 
             if isinstance(ret, collections.Iterable):
                 self.EventHandle, error = ret
-- 
2.11.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [RFC PATCH 3/3] bitbake: uihelper.py: check event.pid is present
  2017-07-11 10:27 [RFC PATCH 0/3] memres: fix for --observe-only Robert Yang
  2017-07-11 10:27 ` [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess Robert Yang
  2017-07-11 10:27 ` [RFC PATCH 2/3] bitbake: lib: fix --observe-only Robert Yang
@ 2017-07-11 10:27 ` Robert Yang
  2 siblings, 0 replies; 11+ messages in thread
From: Robert Yang @ 2017-07-11 10:27 UTC (permalink / raw)
  To: bitbake-devel

Fixed:
$ . ../poky/oe-init-build-env-memres .
$ bitbake world
In another terminal:
$ . ../poky/oe-init-build-env-memres .
Run the following command and Ctrl-C several times:
$ bitbake --observe-only
Traceback (most recent call last):
  File "/buildarea/lyang1/poky/bitbake/lib/bb/ui/knotty.py", line 441, in main
    helper.eventHandler(event)
  File "/buildarea/lyang1/poky/bitbake/lib/bb/ui/uihelper.py", line 42, in eventHandler
    del self.running_tasks[event.pid]
KeyError: 43646

This was becase the ui maybe connected at any time, so the event.pid may not be
present.

[YOCTO #11781]

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 bitbake/lib/bb/ui/uihelper.py | 41 ++++++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 19 deletions(-)

diff --git a/bitbake/lib/bb/ui/uihelper.py b/bitbake/lib/bb/ui/uihelper.py
index 113fcedeaf1..307c87e149c 100644
--- a/bitbake/lib/bb/ui/uihelper.py
+++ b/bitbake/lib/bb/ui/uihelper.py
@@ -38,29 +38,32 @@ class BBUIHelper:
                 self.running_tasks[event.pid] = { 'title' : "%s %s" % (event._package, event._task), 'starttime' : time.time() }
             self.running_pids.append(event.pid)
             self.needUpdate = True
-        elif isinstance(event, bb.build.TaskSucceeded):
-            del self.running_tasks[event.pid]
-            self.running_pids.remove(event.pid)
-            self.needUpdate = True
-        elif isinstance(event, bb.build.TaskFailedSilent):
-            del self.running_tasks[event.pid]
-            self.running_pids.remove(event.pid)
-            # Don't add to the failed tasks list since this is e.g. a setscene task failure
-            self.needUpdate = True
-        elif isinstance(event, bb.build.TaskFailed):
-            del self.running_tasks[event.pid]
-            self.running_pids.remove(event.pid)
-            self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)})
-            self.needUpdate = True
+        # The ui maybe connected at any time, so make sure that the
+        # event.pid is already in self.running_tasks.
+        elif getattr(event, 'pid', 'none_pid') in self.running_tasks:
+            if isinstance(event, bb.build.TaskSucceeded):
+                del self.running_tasks[event.pid]
+                self.running_pids.remove(event.pid)
+                self.needUpdate = True
+            elif isinstance(event, bb.build.TaskFailedSilent):
+                del self.running_tasks[event.pid]
+                self.running_pids.remove(event.pid)
+                # Don't add to the failed tasks list since this is e.g. a setscene task failure
+                self.needUpdate = True
+            elif isinstance(event, bb.build.TaskFailed):
+                del self.running_tasks[event.pid]
+                self.running_pids.remove(event.pid)
+                self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)})
+                self.needUpdate = True
+            elif isinstance(event, bb.build.TaskProgress):
+                if event.pid > 0:
+                    self.running_tasks[event.pid]['progress'] = event.progress
+                    self.running_tasks[event.pid]['rate'] = event.rate
+                    self.needUpdate = True
         elif isinstance(event, bb.runqueue.runQueueTaskStarted) or isinstance(event, bb.runqueue.sceneQueueTaskStarted):
             self.tasknumber_current = event.stats.completed + event.stats.active + event.stats.failed + 1
             self.tasknumber_total = event.stats.total
             self.needUpdate = True
-        elif isinstance(event, bb.build.TaskProgress):
-            if event.pid > 0:
-                self.running_tasks[event.pid]['progress'] = event.progress
-                self.running_tasks[event.pid]['rate'] = event.rate
-                self.needUpdate = True
 
     def getTasks(self):
         self.needUpdate = False
-- 
2.11.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess
  2017-07-11 10:27 ` [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess Robert Yang
@ 2017-07-11 22:56   ` Richard Purdie
  2017-07-12  9:45     ` Robert Yang
  0 siblings, 1 reply; 11+ messages in thread
From: Richard Purdie @ 2017-07-11 22:56 UTC (permalink / raw)
  To: Robert Yang, bitbake-devel

On Tue, 2017-07-11 at 03:27 -0700, Robert Yang wrote:
> Sometimes, we may see the errors:
> $ bitbake --observe-only
> ERROR: Unknown event: <bb.event.MonitorDiskEvent object at
> 0x7fbd2e0a8438>
> ERROR: Unknown event: <bb.event.RecipeTaskPreProcess object at
> 0x7fdc6b7e7b00>
> 
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> ---
>  bitbake/lib/bb/ui/knotty.py | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/bitbake/lib/bb/ui/knotty.py
> b/bitbake/lib/bb/ui/knotty.py
> index 11afb3e7441..71ec168fa6c 100644
> --- a/bitbake/lib/bb/ui/knotty.py
> +++ b/bitbake/lib/bb/ui/knotty.py
> @@ -667,11 +667,13 @@ def main(server, eventHandler, params, tf =
> TerminalFilter):
>                                    bb.event.MultiConfigParsed,
>                                    bb.event.RecipeParsed,
>                                    bb.event.RecipePreFinalise,
> +                                  bb.event.RecipeTaskPreProcess,
>                                    bb.runqueue.runQueueEvent,
>                                    bb.event.OperationStarted,
>                                    bb.event.OperationCompleted,
>                                    bb.event.OperationProgress,
>                                    bb.event.DiskFull,
> +                                  bb.event.MonitorDiskEvent,
>                                    bb.event.HeartbeatEvent,
>                                    bb.build.TaskProgress)):
>                  continue

Do you know why we don't either always see these or always don't see
them? I'm a bit worried there may be a deeper issue lurking here. Are
those events part of the event mask being set?

For reference, I've been looking at the server abstraction in bitbake
and am close to rewriting a large part of bb.server.* and bb.main with
a view to simplifying the code structure and making things easier to
understand.

I've noticed I see some new events with my change, equally I think its
an event mask issue with my new code...

I pushed my changes onto http://git.yoctoproject.org/cgit.cgi/poky-cont
rib/commit/?h=rpurdie/wip-
rss2&id=7d970e7b9f5499f5fcdb0e73246f106844ecf09b
however I am well aware things don't work properly yet and its full of
debug. When finished I should be able to delete server/__init__.py and
server/xmlrpc.py.

Cheers,

Richard




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess
  2017-07-11 22:56   ` Richard Purdie
@ 2017-07-12  9:45     ` Robert Yang
  2017-07-13 19:34       ` Richard Purdie
  0 siblings, 1 reply; 11+ messages in thread
From: Robert Yang @ 2017-07-12  9:45 UTC (permalink / raw)
  To: Richard Purdie, bitbake-devel

Hi RP,

On 07/12/2017 06:56 AM, Richard Purdie wrote:
> On Tue, 2017-07-11 at 03:27 -0700, Robert Yang wrote:
>> Sometimes, we may see the errors:
>> $ bitbake --observe-only
>> ERROR: Unknown event: <bb.event.MonitorDiskEvent object at
>> 0x7fbd2e0a8438>
>> ERROR: Unknown event: <bb.event.RecipeTaskPreProcess object at
>> 0x7fdc6b7e7b00>
>>
>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>> ---
>>  bitbake/lib/bb/ui/knotty.py | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/bitbake/lib/bb/ui/knotty.py
>> b/bitbake/lib/bb/ui/knotty.py
>> index 11afb3e7441..71ec168fa6c 100644
>> --- a/bitbake/lib/bb/ui/knotty.py
>> +++ b/bitbake/lib/bb/ui/knotty.py
>> @@ -667,11 +667,13 @@ def main(server, eventHandler, params, tf =
>> TerminalFilter):
>>                                    bb.event.MultiConfigParsed,
>>                                    bb.event.RecipeParsed,
>>                                    bb.event.RecipePreFinalise,
>> +                                  bb.event.RecipeTaskPreProcess,
>>                                    bb.runqueue.runQueueEvent,
>>                                    bb.event.OperationStarted,
>>                                    bb.event.OperationCompleted,
>>                                    bb.event.OperationProgress,
>>                                    bb.event.DiskFull,
>> +                                  bb.event.MonitorDiskEvent,
>>                                    bb.event.HeartbeatEvent,
>>                                    bb.build.TaskProgress)):
>>                  continue
>
> Do you know why we don't either always see these or always don't see
> them? I'm a bit worried there may be a deeper issue lurking here. Are
> those events part of the event mask being set?

I digged this today, and find the reason, finally. It is harder than I
had thought. Take MonitorDiskEvent as an example, the reproducer is:

In terminal 1:
$ bitbake -m ; . ../poky/oe-init-build-env-memres . && bitbake world -k

In Terminal 2:
$ bitbake --observe-only

Note, the time and order is very important, otherwise we can't reproduce
the problem, we must run "bitbake target" in terminal 1 firstly, and then
run "bitbake --observe-only" in terminal 2 after "cache loaded"
before runqueue is ready, in another words, run "bitbake --observe-only"
when "Initialising tasks" is displaying in terminal 1, no early or late,
then we will see the error in terminal 2 (And only in terminal 2):

ERROR: Unknown event: <bb.event.MonitorDiskEvent object at 0x7f5c3776f940>

The "bitbake world" (first) does everything well, but "bitbake --observe-only"
(second) doesn't becuase of the following code in lib/bb/main.py:

         try:
             return ui_module.main(server_connection.connection, 
server_connection.events,
                                   configParams)

The second run of "ui_module.main()" sends server_connection.events 
(bb.event.MonitorDiskEvent) which is prepared by first run, and knotty.py
doesn't know how to handle it, and we will get the error. So we can't
get the error if we run second bitbake earlier (the event is not ready)
or later (the event had been handled by first bitbake).

I think that bb.event.RecipeTaskPreProcess is similar, add them
to ignore list should be fine, and I will add these explanations to
commit message.

>
> For reference, I've been looking at the server abstraction in bitbake
> and am close to rewriting a large part of bb.server.* and bb.main with
> a view to simplifying the code structure and making things easier to
> understand.

That's great, something var name is not easy for me to understand, for example,
observe_only vs observer_only. And I think that we need a simple way to
restart the server, something like bitbake --restart.

>
> I've noticed I see some new events with my change, equally I think its
> an event mask issue with my new code...
>
> I pushed my changes onto http://git.yoctoproject.org/cgit.cgi/poky-cont
> rib/commit/?h=rpurdie/wip-
> rss2&id=7d970e7b9f5499f5fcdb0e73246f106844ecf09b
> however I am well aware things don't work properly yet and its full of
> debug. When finished I should be able to delete server/__init__.py and
> server/xmlrpc.py.

I will hold on my patches until you've finished the rewriting, and please
let me know if anything I can do.

// Robert

>
> Cheers,
>
> Richard
>
>
>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess
  2017-07-12  9:45     ` Robert Yang
@ 2017-07-13 19:34       ` Richard Purdie
  2017-07-14  1:57         ` Robert Yang
  0 siblings, 1 reply; 11+ messages in thread
From: Richard Purdie @ 2017-07-13 19:34 UTC (permalink / raw)
  To: Robert Yang, bitbake-devel

On Wed, 2017-07-12 at 17:45 +0800, Robert Yang wrote:
> On 07/12/2017 06:56 AM, Richard Purdie wrote:
> > 
> > Do you know why we don't either always see these or always don't
> > see
> > them? I'm a bit worried there may be a deeper issue lurking here.
> > Are
> > those events part of the event mask being set?
> I digged this today, and find the reason, finally. It is harder than
> I had thought. Take MonitorDiskEvent as an example, the reproducer
> is:
> 
> In terminal 1:
> $ bitbake -m ; . ../poky/oe-init-build-env-memres . && bitbake world
> -k
> 
> In Terminal 2:
> $ bitbake --observe-only
> 
> Note, the time and order is very important, otherwise we can't
> reproduce
> the problem, we must run "bitbake target" in terminal 1 firstly, and
> then
> run "bitbake --observe-only" in terminal 2 after "cache loaded"
> before runqueue is ready, in another words, run "bitbake --observe-
> only"
> when "Initialising tasks" is displaying in terminal 1, no early or
> late,
> then we will see the error in terminal 2 (And only in terminal 2):
> 
> ERROR: Unknown event: <bb.event.MonitorDiskEvent object at
> 0x7f5c3776f940>
> 
> The "bitbake world" (first) does everything well, but "bitbake --
> observe-only"
> (second) doesn't becuase of the following code in lib/bb/main.py:
> 
>          try:
>              return ui_module.main(server_connection.connection, 
> server_connection.events,
>                                    configParams)
> 
> The second run of "ui_module.main()" sends server_connection.events 
> (bb.event.MonitorDiskEvent) which is prepared by first run, and
> knotty.py
> doesn't know how to handle it, and we will get the error. So we can't
> get the error if we run second bitbake earlier (the event is not
> ready)
> or later (the event had been handled by first bitbake).
> 
> I think that bb.event.RecipeTaskPreProcess is similar, add them
> to ignore list should be fine, and I will add these explanations to
> commit message.

I'm not sure I agree here, I think you're right that there is a race
issue however I'd rather solve any race issue than workaround it.
Whilst you need to add these events today, there are likely other
events which might appear tomorrow.

> > For reference, I've been looking at the server abstraction in
> > bitbake and am close to rewriting a large part of bb.server.* and
> > bb.main with a view to simplifying the code structure and making
> > things easier to understand.
> That's great, something var name is not easy for me to understand,
> for example, observe_only vs observer_only. And I think that we need
> a simple way to restart the server, something like bitbake --restart.
> 
> > 
> > 
> > I've noticed I see some new events with my change, equally I think
> > its
> > an event mask issue with my new code...
> > 
> > I pushed my changes onto http://git.yoctoproject.org/cgit.cgi/poky-
> > cont
> > rib/commit/?h=rpurdie/wip-
> > rss2&id=7d970e7b9f5499f5fcdb0e73246f106844ecf09b
> > however I am well aware things don't work properly yet and its full
> > of
> > debug. When finished I should be able to delete server/__init__.py
> > and
> > server/xmlrpc.py.
> I will hold on my patches until you've finished the rewriting, and
> please let me know if anything I can do.

The changes are now in master-next. I plan to split the patch up and
have been revising it a bit as I find issues. It would be great if you
could apply this locally and see if the issues you've found are still
present after this change and help with stressing the changes a bit,
see what issues we have?

One thing I know is probably broken at the moment is observe-only
unfortunately. I am tempted to merge the code changes I have as this
gives us a platform to build on which is much more understandable than
the existing codebase even if there are issues like that.

Cheers,

Richard




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess
  2017-07-13 19:34       ` Richard Purdie
@ 2017-07-14  1:57         ` Robert Yang
  2017-07-14 10:27           ` Robert Yang
  0 siblings, 1 reply; 11+ messages in thread
From: Robert Yang @ 2017-07-14  1:57 UTC (permalink / raw)
  To: Richard Purdie, bitbake-devel



On 07/14/2017 03:34 AM, Richard Purdie wrote:
> On Wed, 2017-07-12 at 17:45 +0800, Robert Yang wrote:
>> On 07/12/2017 06:56 AM, Richard Purdie wrote:
>>>
>>> Do you know why we don't either always see these or always don't
>>> see
>>> them? I'm a bit worried there may be a deeper issue lurking here.
>>> Are
>>> those events part of the event mask being set?
>> I digged this today, and find the reason, finally. It is harder than
>> I had thought. Take MonitorDiskEvent as an example, the reproducer
>> is:
>>
>> In terminal 1:
>> $ bitbake -m ; . ../poky/oe-init-build-env-memres . && bitbake world
>> -k
>>
>> In Terminal 2:
>> $ bitbake --observe-only
>>
>> Note, the time and order is very important, otherwise we can't
>> reproduce
>> the problem, we must run "bitbake target" in terminal 1 firstly, and
>> then
>> run "bitbake --observe-only" in terminal 2 after "cache loaded"
>> before runqueue is ready, in another words, run "bitbake --observe-
>> only"
>> when "Initialising tasks" is displaying in terminal 1, no early or
>> late,
>> then we will see the error in terminal 2 (And only in terminal 2):
>>
>> ERROR: Unknown event: <bb.event.MonitorDiskEvent object at
>> 0x7f5c3776f940>
>>
>> The "bitbake world" (first) does everything well, but "bitbake --
>> observe-only"
>> (second) doesn't becuase of the following code in lib/bb/main.py:
>>
>>          try:
>>              return ui_module.main(server_connection.connection,
>> server_connection.events,
>>                                    configParams)
>>
>> The second run of "ui_module.main()" sends server_connection.events
>> (bb.event.MonitorDiskEvent) which is prepared by first run, and
>> knotty.py
>> doesn't know how to handle it, and we will get the error. So we can't
>> get the error if we run second bitbake earlier (the event is not
>> ready)
>> or later (the event had been handled by first bitbake).
>>
>> I think that bb.event.RecipeTaskPreProcess is similar, add them
>> to ignore list should be fine, and I will add these explanations to
>> commit message.
>
> I'm not sure I agree here, I think you're right that there is a race
> issue however I'd rather solve any race issue than workaround it.
> Whilst you need to add these events today, there are likely other
> events which might appear tomorrow.

A rough thoughts on fixing this might be:

The original code:
try:
     return ui_module.main(server_connection.connection, 
server_connection.events, configParams)

The problem is server_connection.events contains more events than
ui_module.main() can handle, we can filter them out: (fake code)

filtered_events = []

for event in server_connection.events:
	if event in ui_module._evt_list:
		filtered_events.append(event)

And use filtered_events to call ui_module.main():
return ui_module.main(server_connection.connection, filtered_events, configParams)

Then we can totally remove the ignore list in ui like knotty.py:

             # ignore
             if isinstance(event, (bb.event.BuildBase,
                                   bb.event.MetadataEvent,
                                   bb.event.StampUpdate,
                                   bb.event.ConfigParsed,
                                   bb.event.MultiConfigParsed,
                                   bb.event.RecipeParsed,
                                   bb.event.RecipePreFinalise,
                                   bb.runqueue.runQueueEvent,
                                   bb.event.OperationStarted,
                                   bb.event.OperationCompleted,
                                   bb.event.OperationProgress,
                                   bb.event.DiskFull,
                                   bb.event.HeartbeatEvent,
                                   bb.build.TaskProgress)):
                 continue

>
>>> For reference, I've been looking at the server abstraction in
>>> bitbake and am close to rewriting a large part of bb.server.* and
>>> bb.main with a view to simplifying the code structure and making
>>> things easier to understand.
>> That's great, something var name is not easy for me to understand,
>> for example, observe_only vs observer_only. And I think that we need
>> a simple way to restart the server, something like bitbake --restart.
>>
>>>
>>>
>>> I've noticed I see some new events with my change, equally I think
>>> its
>>> an event mask issue with my new code...
>>>
>>> I pushed my changes onto http://git.yoctoproject.org/cgit.cgi/poky-
>>> cont
>>> rib/commit/?h=rpurdie/wip-
>>> rss2&id=7d970e7b9f5499f5fcdb0e73246f106844ecf09b
>>> however I am well aware things don't work properly yet and its full
>>> of
>>> debug. When finished I should be able to delete server/__init__.py
>>> and
>>> server/xmlrpc.py.
>> I will hold on my patches until you've finished the rewriting, and
>> please let me know if anything I can do.
>
> The changes are now in master-next. I plan to split the patch up and
> have been revising it a bit as I find issues. It would be great if you
> could apply this locally and see if the issues you've found are still
> present after this change and help with stressing the changes a bit,
> see what issues we have?
>
> One thing I know is probably broken at the moment is observe-only
> unfortunately. I am tempted to merge the code changes I have as this
> gives us a platform to build on which is much more understandable than
> the existing codebase even if there are issues like that.

Sure, I'd like to test them today.

// Robert

>
> Cheers,
>
> Richard
>
>
>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess
  2017-07-14  1:57         ` Robert Yang
@ 2017-07-14 10:27           ` Robert Yang
  2017-07-17 10:39             ` Robert Yang
  0 siblings, 1 reply; 11+ messages in thread
From: Robert Yang @ 2017-07-14 10:27 UTC (permalink / raw)
  To: Richard Purdie, bitbake-devel

Hi RP,

I tested master-next + memres today, unfortunately, I couldn't make memres
work by now, I fixes part of the problems, but there are still other issues.
Here are 3 fixes:

   git://git.pokylinux.org/poky-contrib rbt/master-next-memres
   http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=rbt/master-next-memres

Robert Yang (3):
   oe-init-build-env-memres: remove "-t xmlrpc" when run bitbake
   server/process.py: fix self.bitbake_lock.write()
   bb/main.py: fix infinite loop for --server-only


The main remaing issue is "bitbake --status-only" doesn't work:
* Reproducer:
$ . ../poky/oe-init-build-env-memres .
$ bitbake --status-only
[snip]
OverflowError: getsockaddrarg: port must be 0-65535.

I think that it is because it can't handle BBSERVER or "port == -1"
correctly, we may need read port from bitbake.lock or BBSERVER,
the similar to "bitbake -m":

* Reproducer:
$ . ../poky/oe-init-build-env-memres .
$ bitbake -m
OverflowError: getsockaddrarg: port must be 0-65535.
WARNING: Could not create socket for localhost:-1 (getsockaddrarg: port must be 
0-65535.)

Other problems:
1) $ . ../poky/oe-init-build-env-memres .
Starting bitbake server...
DEBUG: Removed the following variables from the environment: TERMCAP, ..
It prints DEBUG messages, maybe because logger is not enabled or set correctly
when --server-only

2) Errors when run oe-init-build-env-memres again: (when bitbake.lock exists)
   $ . ../poky/oe-init-build-env-memres .
   $ . ../poky/oe-init-build-env-memres .
   File "/buildarea/lyang1/poky/bitbake/lib/bb/server/xmlrpcclient.py", line 
140, in connectXMLRPC
     s.connect((host, port))
OSError: [Errno 22] Invalid argument


3) See the code of 2), there is a bb.warn() in xmlrpcclient.py:
    bb.warn("Could not create socket for %s:%s (%s)" % (host, port, str(e)))

    But it doesn't print to screen, maybe the similar reason to step 1),
    and print() works.

// Robert

On 07/14/2017 09:57 AM, Robert Yang wrote:
>
>
> On 07/14/2017 03:34 AM, Richard Purdie wrote:
>> On Wed, 2017-07-12 at 17:45 +0800, Robert Yang wrote:
>>> On 07/12/2017 06:56 AM, Richard Purdie wrote:
>>>>
>>>> Do you know why we don't either always see these or always don't
>>>> see
>>>> them? I'm a bit worried there may be a deeper issue lurking here.
>>>> Are
>>>> those events part of the event mask being set?
>>> I digged this today, and find the reason, finally. It is harder than
>>> I had thought. Take MonitorDiskEvent as an example, the reproducer
>>> is:
>>>
>>> In terminal 1:
>>> $ bitbake -m ; . ../poky/oe-init-build-env-memres . && bitbake world
>>> -k
>>>
>>> In Terminal 2:
>>> $ bitbake --observe-only
>>>
>>> Note, the time and order is very important, otherwise we can't
>>> reproduce
>>> the problem, we must run "bitbake target" in terminal 1 firstly, and
>>> then
>>> run "bitbake --observe-only" in terminal 2 after "cache loaded"
>>> before runqueue is ready, in another words, run "bitbake --observe-
>>> only"
>>> when "Initialising tasks" is displaying in terminal 1, no early or
>>> late,
>>> then we will see the error in terminal 2 (And only in terminal 2):
>>>
>>> ERROR: Unknown event: <bb.event.MonitorDiskEvent object at
>>> 0x7f5c3776f940>
>>>
>>> The "bitbake world" (first) does everything well, but "bitbake --
>>> observe-only"
>>> (second) doesn't becuase of the following code in lib/bb/main.py:
>>>
>>>          try:
>>>              return ui_module.main(server_connection.connection,
>>> server_connection.events,
>>>                                    configParams)
>>>
>>> The second run of "ui_module.main()" sends server_connection.events
>>> (bb.event.MonitorDiskEvent) which is prepared by first run, and
>>> knotty.py
>>> doesn't know how to handle it, and we will get the error. So we can't
>>> get the error if we run second bitbake earlier (the event is not
>>> ready)
>>> or later (the event had been handled by first bitbake).
>>>
>>> I think that bb.event.RecipeTaskPreProcess is similar, add them
>>> to ignore list should be fine, and I will add these explanations to
>>> commit message.
>>
>> I'm not sure I agree here, I think you're right that there is a race
>> issue however I'd rather solve any race issue than workaround it.
>> Whilst you need to add these events today, there are likely other
>> events which might appear tomorrow.
>
> A rough thoughts on fixing this might be:
>
> The original code:
> try:
>     return ui_module.main(server_connection.connection,
> server_connection.events, configParams)
>
> The problem is server_connection.events contains more events than
> ui_module.main() can handle, we can filter them out: (fake code)
>
> filtered_events = []
>
> for event in server_connection.events:
>     if event in ui_module._evt_list:
>         filtered_events.append(event)
>
> And use filtered_events to call ui_module.main():
> return ui_module.main(server_connection.connection, filtered_events, configParams)
>
> Then we can totally remove the ignore list in ui like knotty.py:
>
>             # ignore
>             if isinstance(event, (bb.event.BuildBase,
>                                   bb.event.MetadataEvent,
>                                   bb.event.StampUpdate,
>                                   bb.event.ConfigParsed,
>                                   bb.event.MultiConfigParsed,
>                                   bb.event.RecipeParsed,
>                                   bb.event.RecipePreFinalise,
>                                   bb.runqueue.runQueueEvent,
>                                   bb.event.OperationStarted,
>                                   bb.event.OperationCompleted,
>                                   bb.event.OperationProgress,
>                                   bb.event.DiskFull,
>                                   bb.event.HeartbeatEvent,
>                                   bb.build.TaskProgress)):
>                 continue
>
>>
>>>> For reference, I've been looking at the server abstraction in
>>>> bitbake and am close to rewriting a large part of bb.server.* and
>>>> bb.main with a view to simplifying the code structure and making
>>>> things easier to understand.
>>> That's great, something var name is not easy for me to understand,
>>> for example, observe_only vs observer_only. And I think that we need
>>> a simple way to restart the server, something like bitbake --restart.
>>>
>>>>
>>>>
>>>> I've noticed I see some new events with my change, equally I think
>>>> its
>>>> an event mask issue with my new code...
>>>>
>>>> I pushed my changes onto http://git.yoctoproject.org/cgit.cgi/poky-
>>>> cont
>>>> rib/commit/?h=rpurdie/wip-
>>>> rss2&id=7d970e7b9f5499f5fcdb0e73246f106844ecf09b
>>>> however I am well aware things don't work properly yet and its full
>>>> of
>>>> debug. When finished I should be able to delete server/__init__.py
>>>> and
>>>> server/xmlrpc.py.
>>> I will hold on my patches until you've finished the rewriting, and
>>> please let me know if anything I can do.
>>
>> The changes are now in master-next. I plan to split the patch up and
>> have been revising it a bit as I find issues. It would be great if you
>> could apply this locally and see if the issues you've found are still
>> present after this change and help with stressing the changes a bit,
>> see what issues we have?
>>
>> One thing I know is probably broken at the moment is observe-only
>> unfortunately. I am tempted to merge the code changes I have as this
>> gives us a platform to build on which is much more understandable than
>> the existing codebase even if there are issues like that.
>
> Sure, I'd like to test them today.
>
> // Robert
>
>>
>> Cheers,
>>
>> Richard
>>
>>
>>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess
  2017-07-14 10:27           ` Robert Yang
@ 2017-07-17 10:39             ` Robert Yang
  2017-07-18 22:02               ` Richard Purdie
  0 siblings, 1 reply; 11+ messages in thread
From: Robert Yang @ 2017-07-17 10:39 UTC (permalink / raw)
  To: Richard Purdie, bitbake-devel

Hi RP,

I can make master-next + memres partially work now, all the patches
are here:

   git://git.pokylinux.org/poky-contrib rbt/master-next-memres
   http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=rbt/master-next-memres

Robert Yang (8):
   oe-init-build-env-memres: remove "-t xmlrpc" when run bitbake
   server/process.py: fix self.bitbake_lock.write()
   bb/main.py: fix infinite loop for --server-only
   bb/main.py: read port and host from bitbake.lock
   oe-init-build-env-memres: don't export BBSERVER
   bb/main.py: avoid starting server when not needed
   server/process.py: don't quit when server_only
   bb/main.py: fix logic for --observe-only


I'm not sure about:
oe-init-build-env-memres: don't export BBSERVER

The BBSERVER did cause problems, but don't export it makes bitbake
know nothing about whether we need memeres or not, for example:
$ . ../poky/oe-init-build-env-memres .
$ bitbake -m #shutdown it
$ bitbake core-image-minimal
Then an one time bitbake will start (not memres), compared to old
*master* branch:
$ bitbake core-image-minimal
WARNING: Could not connect to server at 127.0.0.1:44006 ([Errno 111] Connection 
refused)
ERROR: Could not connect to server 127.0.0.1:44006
: [Errno 111] Connection refused

I think that once the user uses "oe-init-build-env-memres" to intialize
the build, then all bitbake commands should be memeres by default.
(No matter connect to an existed server or shutdown and restart).
So maybe we still need export BBSERVER and add more checking in bitbake
to make it work as expected.

BTW., we still have the warnings on master-next:
ERROR: Unknown event: <bb.event.MonitorDiskEvent object at 0x7f8777de5c50>

And:
File "/buildarea/lyang1/poky/bitbake/lib/bb/ui/uihelper.py", line 42, in 
eventHandler
     del self.running_tasks[event.pid]
KeyError: 37402


I will rebase the 3 patches and resubmit after the new code is stable.

// Robert

On 07/14/2017 06:27 PM, Robert Yang wrote:
> Hi RP,
>
> I tested master-next + memres today, unfortunately, I couldn't make memres
> work by now, I fixes part of the problems, but there are still other issues.
> Here are 3 fixes:
>
>   git://git.pokylinux.org/poky-contrib rbt/master-next-memres
>   http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=rbt/master-next-memres
>
> Robert Yang (3):
>   oe-init-build-env-memres: remove "-t xmlrpc" when run bitbake
>   server/process.py: fix self.bitbake_lock.write()
>   bb/main.py: fix infinite loop for --server-only
>
>
> The main remaing issue is "bitbake --status-only" doesn't work:
> * Reproducer:
> $ . ../poky/oe-init-build-env-memres .
> $ bitbake --status-only
> [snip]
> OverflowError: getsockaddrarg: port must be 0-65535.
>
> I think that it is because it can't handle BBSERVER or "port == -1"
> correctly, we may need read port from bitbake.lock or BBSERVER,
> the similar to "bitbake -m":
>
> * Reproducer:
> $ . ../poky/oe-init-build-env-memres .
> $ bitbake -m
> OverflowError: getsockaddrarg: port must be 0-65535.
> WARNING: Could not create socket for localhost:-1 (getsockaddrarg: port must be
> 0-65535.)
>
> Other problems:
> 1) $ . ../poky/oe-init-build-env-memres .
> Starting bitbake server...
> DEBUG: Removed the following variables from the environment: TERMCAP, ..
> It prints DEBUG messages, maybe because logger is not enabled or set correctly
> when --server-only
>
> 2) Errors when run oe-init-build-env-memres again: (when bitbake.lock exists)
>   $ . ../poky/oe-init-build-env-memres .
>   $ . ../poky/oe-init-build-env-memres .
>   File "/buildarea/lyang1/poky/bitbake/lib/bb/server/xmlrpcclient.py", line 140,
> in connectXMLRPC
>     s.connect((host, port))
> OSError: [Errno 22] Invalid argument
>
>
> 3) See the code of 2), there is a bb.warn() in xmlrpcclient.py:
>    bb.warn("Could not create socket for %s:%s (%s)" % (host, port, str(e)))
>
>    But it doesn't print to screen, maybe the similar reason to step 1),
>    and print() works.
>
> // Robert
>
> On 07/14/2017 09:57 AM, Robert Yang wrote:
>>
>>
>> On 07/14/2017 03:34 AM, Richard Purdie wrote:
>>> On Wed, 2017-07-12 at 17:45 +0800, Robert Yang wrote:
>>>> On 07/12/2017 06:56 AM, Richard Purdie wrote:
>>>>>
>>>>> Do you know why we don't either always see these or always don't
>>>>> see
>>>>> them? I'm a bit worried there may be a deeper issue lurking here.
>>>>> Are
>>>>> those events part of the event mask being set?
>>>> I digged this today, and find the reason, finally. It is harder than
>>>> I had thought. Take MonitorDiskEvent as an example, the reproducer
>>>> is:
>>>>
>>>> In terminal 1:
>>>> $ bitbake -m ; . ../poky/oe-init-build-env-memres . && bitbake world
>>>> -k
>>>>
>>>> In Terminal 2:
>>>> $ bitbake --observe-only
>>>>
>>>> Note, the time and order is very important, otherwise we can't
>>>> reproduce
>>>> the problem, we must run "bitbake target" in terminal 1 firstly, and
>>>> then
>>>> run "bitbake --observe-only" in terminal 2 after "cache loaded"
>>>> before runqueue is ready, in another words, run "bitbake --observe-
>>>> only"
>>>> when "Initialising tasks" is displaying in terminal 1, no early or
>>>> late,
>>>> then we will see the error in terminal 2 (And only in terminal 2):
>>>>
>>>> ERROR: Unknown event: <bb.event.MonitorDiskEvent object at
>>>> 0x7f5c3776f940>
>>>>
>>>> The "bitbake world" (first) does everything well, but "bitbake --
>>>> observe-only"
>>>> (second) doesn't becuase of the following code in lib/bb/main.py:
>>>>
>>>>          try:
>>>>              return ui_module.main(server_connection.connection,
>>>> server_connection.events,
>>>>                                    configParams)
>>>>
>>>> The second run of "ui_module.main()" sends server_connection.events
>>>> (bb.event.MonitorDiskEvent) which is prepared by first run, and
>>>> knotty.py
>>>> doesn't know how to handle it, and we will get the error. So we can't
>>>> get the error if we run second bitbake earlier (the event is not
>>>> ready)
>>>> or later (the event had been handled by first bitbake).
>>>>
>>>> I think that bb.event.RecipeTaskPreProcess is similar, add them
>>>> to ignore list should be fine, and I will add these explanations to
>>>> commit message.
>>>
>>> I'm not sure I agree here, I think you're right that there is a race
>>> issue however I'd rather solve any race issue than workaround it.
>>> Whilst you need to add these events today, there are likely other
>>> events which might appear tomorrow.
>>
>> A rough thoughts on fixing this might be:
>>
>> The original code:
>> try:
>>     return ui_module.main(server_connection.connection,
>> server_connection.events, configParams)
>>
>> The problem is server_connection.events contains more events than
>> ui_module.main() can handle, we can filter them out: (fake code)
>>
>> filtered_events = []
>>
>> for event in server_connection.events:
>>     if event in ui_module._evt_list:
>>         filtered_events.append(event)
>>
>> And use filtered_events to call ui_module.main():
>> return ui_module.main(server_connection.connection, filtered_events,
>> configParams)
>>
>> Then we can totally remove the ignore list in ui like knotty.py:
>>
>>             # ignore
>>             if isinstance(event, (bb.event.BuildBase,
>>                                   bb.event.MetadataEvent,
>>                                   bb.event.StampUpdate,
>>                                   bb.event.ConfigParsed,
>>                                   bb.event.MultiConfigParsed,
>>                                   bb.event.RecipeParsed,
>>                                   bb.event.RecipePreFinalise,
>>                                   bb.runqueue.runQueueEvent,
>>                                   bb.event.OperationStarted,
>>                                   bb.event.OperationCompleted,
>>                                   bb.event.OperationProgress,
>>                                   bb.event.DiskFull,
>>                                   bb.event.HeartbeatEvent,
>>                                   bb.build.TaskProgress)):
>>                 continue
>>
>>>
>>>>> For reference, I've been looking at the server abstraction in
>>>>> bitbake and am close to rewriting a large part of bb.server.* and
>>>>> bb.main with a view to simplifying the code structure and making
>>>>> things easier to understand.
>>>> That's great, something var name is not easy for me to understand,
>>>> for example, observe_only vs observer_only. And I think that we need
>>>> a simple way to restart the server, something like bitbake --restart.
>>>>
>>>>>
>>>>>
>>>>> I've noticed I see some new events with my change, equally I think
>>>>> its
>>>>> an event mask issue with my new code...
>>>>>
>>>>> I pushed my changes onto http://git.yoctoproject.org/cgit.cgi/poky-
>>>>> cont
>>>>> rib/commit/?h=rpurdie/wip-
>>>>> rss2&id=7d970e7b9f5499f5fcdb0e73246f106844ecf09b
>>>>> however I am well aware things don't work properly yet and its full
>>>>> of
>>>>> debug. When finished I should be able to delete server/__init__.py
>>>>> and
>>>>> server/xmlrpc.py.
>>>> I will hold on my patches until you've finished the rewriting, and
>>>> please let me know if anything I can do.
>>>
>>> The changes are now in master-next. I plan to split the patch up and
>>> have been revising it a bit as I find issues. It would be great if you
>>> could apply this locally and see if the issues you've found are still
>>> present after this change and help with stressing the changes a bit,
>>> see what issues we have?
>>>
>>> One thing I know is probably broken at the moment is observe-only
>>> unfortunately. I am tempted to merge the code changes I have as this
>>> gives us a platform to build on which is much more understandable than
>>> the existing codebase even if there are issues like that.
>>
>> Sure, I'd like to test them today.
>>
>> // Robert
>>
>>>
>>> Cheers,
>>>
>>> Richard
>>>
>>>
>>>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess
  2017-07-17 10:39             ` Robert Yang
@ 2017-07-18 22:02               ` Richard Purdie
  0 siblings, 0 replies; 11+ messages in thread
From: Richard Purdie @ 2017-07-18 22:02 UTC (permalink / raw)
  To: Robert Yang, bitbake-devel

Hi Robert,

Thanks for these. I've queued some of this, I fixed some things
differently and I have a request for some tweaks please! :)

For: http://git.yoctoproject.org/cgit.cgi/poky-contrib/commit/?h=rbt/ma
ster-next-memres&id=1d7df2f917cbcfa5f21c437ba2f0cc656e256eaa could you
please leave pid in the lockfile. We are going to likely need an easier
way to find the server in future so I'd like to have that there.

With oe-init-build-env-memres, I'm simply planning to delete this. If
someone wants to start a standalone server over xmlrpc, they still can
but going forward most people will just set BB_SERVER_TIMEOUT=X. We can
therefore drop that script (patch queued).

For: http://git.yoctoproject.org/cgit.cgi/poky-contrib/commit/?h=rbt/ma
ster-next-memres&id=78333885f4117e4586336c7aff6b5a9e3a6378b8
could you rename the "server_only" parameter in ProcessServer to
stay_resident please?

I've queued everything in bitbake master-next, I can't update poky
master-next at the moment as a build is in progress.

I'm hopeful the patches are becoming more stable now, not sure how many
of your other issues remain if we remove the memres init script and use
BB_SERVER_TIMEOUT as the preferred way to enable memres?

Cheers,

Richard



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-07-18 22:02 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-11 10:27 [RFC PATCH 0/3] memres: fix for --observe-only Robert Yang
2017-07-11 10:27 ` [RFC PATCH 1/3] bitbake: knotty.py: add MonitorDiskEvent and RecipeTaskPreProcess Robert Yang
2017-07-11 22:56   ` Richard Purdie
2017-07-12  9:45     ` Robert Yang
2017-07-13 19:34       ` Richard Purdie
2017-07-14  1:57         ` Robert Yang
2017-07-14 10:27           ` Robert Yang
2017-07-17 10:39             ` Robert Yang
2017-07-18 22:02               ` Richard Purdie
2017-07-11 10:27 ` [RFC PATCH 2/3] bitbake: lib: fix --observe-only Robert Yang
2017-07-11 10:27 ` [RFC PATCH 3/3] bitbake: uihelper.py: check event.pid is present Robert Yang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.