[PATCH 2/2] Can't add thread AnaExecuteStorageThread (#1200613)

Jiri Konecny jkonecny at redhat.com
Mon Mar 23 14:42:02 UTC 2015


Before start of the new thread 'AnaExecuteStorageThread' wait for the old thread
to finish.
Remove gtk_action_nowait to prevent blocking of main thread.
Print warning if we need to wait on storage thread to finish
---
 pyanaconda/ui/gui/spokes/storage.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/pyanaconda/ui/gui/spokes/storage.py b/pyanaconda/ui/gui/spokes/storage.py
index 8273dcb..eaca3f9 100644
--- a/pyanaconda/ui/gui/spokes/storage.py
+++ b/pyanaconda/ui/gui/spokes/storage.py
@@ -51,7 +51,7 @@ from pyanaconda.ui.gui.spokes.lib.detailederror import DetailedErrorDialog
 from pyanaconda.ui.gui.spokes.lib.resize import ResizeDialog
 from pyanaconda.ui.gui.spokes.lib.dasdfmt import DasdFormatDialog
 from pyanaconda.ui.categories.system import SystemCategory
-from pyanaconda.ui.gui.utils import escape_markup, gtk_action_nowait, ignoreEscape
+from pyanaconda.ui.gui.utils import escape_markup, ignoreEscape
 from pyanaconda.ui.helpers import StorageChecker
 
 from pyanaconda.kickstart import doKickstartStorage, refreshAutoSwapSize, resetCustomStorageData
@@ -308,11 +308,17 @@ class StorageSpoke(NormalSpoke, StorageChecker):
         # user may have set up before now.
         self.storage.config.clearNonExistent = self.data.autopart.autopart
 
-    @gtk_action_nowait
     def execute(self):
         # Spawn storage execution as a separate thread so there's no big delay
         # going back from this spoke to the hub while StorageChecker.run runs.
         # Yes, this means there's a thread spawning another thread.  Sorry.
+
+        # Wait for the existing thread to finish before starting the new one.
+        if threadMgr.wait(name=constants.THREAD_EXECUTE_STORAGE):
+            log.warn("storage waited on %s thread to start, thread with the "
+                     "same name already running",
+                     constants.THREAD_EXECUTE_STORAGE)
+
         threadMgr.add(AnacondaThread(name=constants.THREAD_EXECUTE_STORAGE,
                                      target=self._doExecute))
 
-- 
2.1.0



More information about the anaconda-patches mailing list