At Thu, 30 Jun 2016 10:27:22 +0900,
IWAMOTO Toshihiro wrote:
>
> If an AppManager.close call is started and all AppManager.services
> are stopped, AppManager.run_apps starts another close() call,
> resulting in a KeyError exception in close() (*1). Prevent that using
> a semaphore.
>
> (*1) https://launchpad.net/bugs/1589746
> Signed-off-by: IWAMOTO Toshihiro <[email protected]>
Reworded the commit message a bit and added a bug report URL.
Any more comments?
> ---
> 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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel