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

Chris Lumens clumens at redhat.com
Thu Nov 20 21:02:21 UTC 2014


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.

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
 
-- 
1.9.3



More information about the anaconda-patches mailing list