[PATCH] If a message is for a spoke not on the current hub, throw it away.

David Shea dshea at redhat.com
Thu Nov 20 22:17:21 UTC 2014


On 11/20/2014 04:02 PM, Chris Lumens wrote:
> This is an attempt to solve this problem (condensed):
>
>      DEBUG anaconda: _autoContinue clicking continue button
>      DEBUG anaconda: Left hub: SummaryHub
>      DEBUG anaconda: Entered hub: ProgressHub
>      INFO anaconda: Running Thread: AnaInstallThread (139961321248512)
>      DEBUG anaconda: spoke is ready: <pyanaconda.ui.gui.spokes.source.SourceSpoke object at 0x7f4b5c6fcc10>
>      DEBUG anaconda: _autoContinue clicking continue button
>      INFO program: Running... systemctl --no-wall poweroff
>
> Basically, for whatever reason the source spoke is saying it's ready twice
> and the second message gets processed after we've moved to the progress
> hub.  Each time this message gets processed, we find there's nothing else
> to wait on and we should click the continue button.  Unfortunately, the
> second time we click the continue button, there are no more actions so
> anaconda thinks it's time to shut down.

This is probably because the software spoke also says that the source 
spoke is ready, since the software spoke will lock and unlock source 
during dependency checks. I guess something needs to be unravelled in 
that dependency, but this fix seems like a good idea.

>
> So, just check if the spoke that sent the message is even displayed on
> the hub that is currently shown.  If not, throw the message away.
>
> Since this problem is hard to expose (it's only happened to me during live
> image building a couple of times), I can't really test if this fixes it.
> However, I don't see how it can do more harm except perhaps to the custom
> part spoke.  But I don't think there either.
> ---
>   pyanaconda/ui/gui/hubs/__init__.py | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/pyanaconda/ui/gui/hubs/__init__.py b/pyanaconda/ui/gui/hubs/__init__.py
> index 98b5e3f..4dc5c9d 100644
> --- a/pyanaconda/ui/gui/hubs/__init__.py
> +++ b/pyanaconda/ui/gui/hubs/__init__.py
> @@ -260,7 +260,7 @@ class Hub(GUIObject, common.Hub):
>               # The first argument to all codes is the name of the spoke we are
>               # acting on.  If no such spoke exists, throw the message away.
>               spoke = self._spokes.get(args[0], None)
> -            if not spoke:
> +            if not spoke or spoke.name not in self._spokes:
>                   q.task_done()
>                   continue
>   



More information about the anaconda-patches mailing list