At Tue, 28 Jun 2016 15:02:52 +0900,
Takashi YAMAMOTO wrote:
> 
> On Tue, Jun 28, 2016 at 2:25 PM, IWAMOTO Toshihiro <iwam...@valinux.co.jp>
> wrote:
> 
> > If an AppManager.close call is started and all AppManager.services
> > are stop, AppManager.run_apps starts another close() call,
> >
> 
> why joinall in run_apps returns before AppManager.close finish clearing
> self.applications?

Because OfctlService isn't in services (run_apps local variable) and
RyuApp.close() causes eventlet context switches?

> > resulting in a strange error in close().  Prevent that using
> > a semaphore.
> >
> > Signed-off-by: IWAMOTO Toshihiro <iwam...@valinux.co.jp>
> > ---
> >  ryu/base/app_manager.py | 12 ++++++++----
> >  1 file changed, 8 insertions(+), 4 deletions(-)
> >
> > diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py
> > index 13e41f4..f684259 100644
> > --- a/ryu/base/app_manager.py
> > +++ b/ryu/base/app_manager.py
> > @@ -386,6 +386,7 @@ class AppManager(object):
> >          self.applications = {}
> >          self.contexts_cls = {}
> >          self.contexts = {}
> > +        self.close_sem = hub.Semaphore()
> >
> >      def load_app(self, name):
> >          mod = utils.import_module(name)
> > @@ -541,7 +542,10 @@ class AppManager(object):
> >                  self._close(app)
> >              close_dict.clear()
> >
> > -        for app_name in list(self.applications.keys()):
> > -            self.uninstantiate(app_name)
> > -        assert not self.applications
> > -        close_all(self.contexts)
> > +        # This semaphore prevents parallel execution of this function,
> > +        # as run_apps's finally clause starts another close() call.
> > +        with self.close_sem:
> > +            for app_name in list(self.applications.keys()):
> > +                self.uninstantiate(app_name)
> > +            assert not self.applications
> > +            close_all(self.contexts)
> > --
> > 2.1.4
> >
> >
> >
> > ------------------------------------------------------------------------------
> > Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
> > Francisco, CA to explore cutting-edge tech and listen to tech luminaries
> > present their vision of the future. This family event has something for
> > everyone, including kids. Get more information and register today.
> > http://sdm.link/attshape
> > _______________________________________________
> > Ryu-devel mailing list
> > Ryu-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/ryu-devel
> >

------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to