[bitbake-devel] [PATCH] command/runqueue: Fix shutdown logic

Martin Jansa martin.jansa at gmail.com
Tue Jul 22 14:46:05 UTC 2014


On Mon, Jul 21, 2014 at 09:35:53AM +0100, Richard Purdie wrote:
> If you hit Ctrl+C at the right point, the system processes the request
> but merrily continues building. It turns out finish_runqueue() is called
> but this doesn't stop the later generation and execution of the
> runqueue.
> 
> This patch adjusts some of the conditionals to ensure the build really
> does stop.

Great, I've included this change in my world builds to see if it fixes
bitbake still running after jenkins job is aborted.

I don't think it's caused by this change and I don't know how much we
can do about it, but today I was testing snort build (which eats all
memory in m4 call until OOMK kills it) and when I wanted to interrupt
the build it failed with 2 tracebacks:

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Running task 569 of 610 (ID: 5, /OE/build/oe-core/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.6.0.bb, do_configure)
NOTE: recipe snort-2.9.6.0-r0: task do_configure: Started
^C^C^C^C^C^C^C^C^C^C^C^C^C^CTraceback (most recent call last):
  File "/OE/build/oe-core/bitbake/bin/bitbake", line 382, in <module>
    ret = main()
  File "/OE/build/oe-core/bitbake/bin/bitbake", line 372, in main
    bb.event.ui_queue = []
KeyboardInterrupt
^CException KeyboardInterrupt in <module 'threading' from '/usr/lib64/python2.7/threading.pyc'> ignored

^CError in atexit._run_exitfuncs:
^CError in sys.exitfunc:
Traceback (most recent call last):
  File "/usr/lib64/python2.7/atexit.py", line 30, in _run_exitfuncs
    traceback.print_exc()
  File "/usr/lib64/python2.7/traceback.py", line 233, in print_exc
    print_exception(etype, value, tb, limit, file)
  File "/usr/lib64/python2.7/traceback.py", line 110, in print_exception
    def print_exception(etype, value, tb, limit=None, file=None):
KeyboardInterrupt

There was also about 5 minute delay between first 2 Ctrl+C and actual
exit, but that could be caused by huge load caused by that faulty m4.

Regards,

> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> 
> diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
> index 84fcdf9..d797fcf 100644
> --- a/bitbake/lib/bb/command.py
> +++ b/bitbake/lib/bb/command.py
> @@ -86,7 +86,7 @@ class Command:
>  
>      def runAsyncCommand(self):
>          try:
> -            if self.cooker.state == bb.cooker.state.error:
> +            if self.cooker.state in (bb.cooker.state.error, bb.cooker.state.shutdown, bb.cooker.state.forceshutdown):
>                  return False
>              if self.currentAsyncCommand is not None:
>                  (command, options) = self.currentAsyncCommand
> diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
> index 4ea4970..f68a11d 100644
> --- a/bitbake/lib/bb/runqueue.py
> +++ b/bitbake/lib/bb/runqueue.py
> @@ -1065,7 +1065,7 @@ class RunQueue:
>          if self.state is runQueueCleanUp:
>             self.rqexe.finish()
>  
> -        if self.state is runQueueComplete or self.state is runQueueFailed:
> +        if (self.state is runQueueComplete or self.state is runQueueFailed) and self.rqexe:
>              self.teardown_workers()
>              if self.rqexe.stats.failed:
>                  logger.info("Tasks Summary: Attempted %d tasks of which %d didn't need to be rerun and %d failed.", self.rqexe.stats.completed + self.rqexe.stats.failed, self.rqexe.stats.skipped, self.rqexe.stats.failed)
> @@ -1106,6 +1106,7 @@ class RunQueue:
>  
>      def finish_runqueue(self, now = False):
>          if not self.rqexe:
> +            self.state = runQueueComplete
>              return
>  
>          if now:
> -- 
> cgit v0.10.1
> 
> 
> 
> -- 
> _______________________________________________
> bitbake-devel mailing list
> bitbake-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/bitbake-devel

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/bitbake-devel/attachments/20140722/4e3b7577/attachment-0002.sig>


More information about the bitbake-devel mailing list