Patchwork [bitbake-devel,1/1] bitbake: cooker: clear up state on stateShutdown command

login
register
mail settings
Submitter Alexandru DAMIAN
Date Sept. 10, 2013, 3:48 p.m.
Message ID <1378828081-22646-1-git-send-email-alexandru.damian@intel.com>
Download mbox | patch
Permalink /patch/57773/
State New
Headers show

Comments

Alexandru DAMIAN - Sept. 10, 2013, 3:48 p.m.
From: Alexandru DAMIAN <alexandru.damian@intel.com>

On resident bitbake server, a stateShutdown command (first
Ctrl-C in client) will leave the server in an unusable state.

This patch forces the server to reload data and begin
processing commands again, coping correctly with Ctrl-C commands.

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Richard Purdie - Sept. 13, 2013, 12:47 p.m.
On Tue, 2013-09-10 at 16:48 +0100, Alex DAMIAN wrote:
> From: Alexandru DAMIAN <alexandru.damian@intel.com>
> 
> On resident bitbake server, a stateShutdown command (first
> Ctrl-C in client) will leave the server in an unusable state.
> 
> This patch forces the server to reload data and begin
> processing commands again, coping correctly with Ctrl-C commands.
> 
> Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
> 
> diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
> index c3721aa..42eec2c 100644
> --- a/bitbake/lib/bb/cooker.py
> +++ b/bitbake/lib/bb/cooker.py
> @@ -1101,6 +1101,7 @@ class BBCooker:
>                  rq.finish_runqueue(True)
>              elif self.state == state.shutdown:
>                  rq.finish_runqueue(False)
> +                self.state = state.initial
>              failures = 0
>              try:
>                  retval = rq.execute_runqueue()
> @@ -1191,7 +1192,7 @@ class BBCooker:
>          if self.state == state.running:
>              return
>  
> -        if self.state in (state.shutdown, state.stop):
> +        if self.state == state.stop:
>              self.parser.shutdown(clean=False, force = True)
>              sys.exit(1)

This doesn't seem very intuitive. As I read the code above, "shutdown"
means it sits and does nothing, "stop" means it exits? Surely these
should be the other way around?

Cheers,

Richard
Richard Purdie - Sept. 14, 2013, 8:33 a.m.
On Fri, 2013-09-13 at 13:47 +0100, Richard Purdie wrote:
> On Tue, 2013-09-10 at 16:48 +0100, Alex DAMIAN wrote:
> > From: Alexandru DAMIAN <alexandru.damian@intel.com>
> > 
> > On resident bitbake server, a stateShutdown command (first
> > Ctrl-C in client) will leave the server in an unusable state.
> > 
> > This patch forces the server to reload data and begin
> > processing commands again, coping correctly with Ctrl-C commands.
> > 
> > Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
> > 
> > diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
> > index c3721aa..42eec2c 100644
> > --- a/bitbake/lib/bb/cooker.py
> > +++ b/bitbake/lib/bb/cooker.py
> > @@ -1101,6 +1101,7 @@ class BBCooker:
> >                  rq.finish_runqueue(True)
> >              elif self.state == state.shutdown:
> >                  rq.finish_runqueue(False)
> > +                self.state = state.initial
> >              failures = 0
> >              try:
> >                  retval = rq.execute_runqueue()
> > @@ -1191,7 +1192,7 @@ class BBCooker:
> >          if self.state == state.running:
> >              return
> >  
> > -        if self.state in (state.shutdown, state.stop):
> > +        if self.state == state.stop:
> >              self.parser.shutdown(clean=False, force = True)
> >              sys.exit(1)
> 
> This doesn't seem very intuitive. As I read the code above, "shutdown"
> means it sits and does nothing, "stop" means it exits? Surely these
> should be the other way around?

For completeness, my patch series addresses the above problems in
different ways. The underlying problems were the server not being reset
to state.initial after a command failed and the sys.exit() call causing
the server to exit.

Cheers,

Richard

Patch

diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index c3721aa..42eec2c 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -1101,6 +1101,7 @@  class BBCooker:
                 rq.finish_runqueue(True)
             elif self.state == state.shutdown:
                 rq.finish_runqueue(False)
+                self.state = state.initial
             failures = 0
             try:
                 retval = rq.execute_runqueue()
@@ -1191,7 +1192,7 @@  class BBCooker:
         if self.state == state.running:
             return
 
-        if self.state in (state.shutdown, state.stop):
+        if self.state == state.stop:
             self.parser.shutdown(clean=False, force = True)
             sys.exit(1)