]> code.ossystems Code Review - openembedded-core.git/commitdiff
bitbake/runqueue.py: Avoid starvation of events to the server
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 28 Jan 2011 10:21:41 +0000 (10:21 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 28 Jan 2011 10:21:41 +0000 (10:21 +0000)
The server UI was reading 1024 bytes, then sleeping for 0.25 seconds. Since
most new LogRecord events are larger than this it leads to a build up of data
which is only processed slowly, leading to a bottleneck and a slow down of
all bitbake processes.

Thanks to Dongxiao Xu <dongxiao.xu@intel.com> for the great work in debugging
this. A large value has been left in for the read() command just to ensure some
fairness amongst process handling if a task tries to log truly huge amounts of
data to the server, or goes crazy and ensures the main loop doesn't stall.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/lib/bb/runqueue.py

index b9d89ec0820762107581b93afb44789ce6689763..a3f444c2ab1487eade95cc3782ab2b7754f5fa75 100644 (file)
@@ -1637,7 +1637,7 @@ class runQueuePipe():
     def read(self):
         start = len(self.queue)
         try:
-            self.queue = self.queue + self.input.read(1024)
+            self.queue = self.queue + self.input.read(102400)
         except (OSError, IOError):
             pass
         end = len(self.queue)