Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class. release-1.0.4

Fri, 31 Mar 2017 17:59:28 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 31 Mar 2017 17:59:28 +0200
changeset 47
4e19b213fc3f
parent 46
9f7a962f3655
child 48
2d174b0a1b83

Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.

ChangeLog file | annotate | diff | comparison | revisions
PluginVulture.py file | annotate | diff | comparison | revisions
PluginVulture.zip file | annotate | diff | comparison | revisions
VultureChecker/VultureCheckerService.py file | annotate | diff | comparison | revisions
--- a/ChangeLog	Mon Mar 27 19:51:21 2017 +0200
+++ b/ChangeLog	Fri Mar 31 17:59:28 2017 +0200
@@ -1,5 +1,8 @@
 ChangeLog
 ---------
+Version 1.0.4:
+- bug fixes
+
 Version 1.0.3:
 - bug fixes
 
--- a/PluginVulture.py	Mon Mar 27 19:51:21 2017 +0200
+++ b/PluginVulture.py	Fri Mar 31 17:59:28 2017 +0200
@@ -24,7 +24,7 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "1.0.3"
+version = "1.0.4"
 className = "VulturePlugin"
 packageName = "VultureChecker"
 shortDescription = "Plug-in to detect unused code using the vulture library"
Binary file PluginVulture.zip has changed
--- a/VultureChecker/VultureCheckerService.py	Mon Mar 27 19:51:21 2017 +0200
+++ b/VultureChecker/VultureCheckerService.py	Fri Mar 31 17:59:28 2017 +0200
@@ -14,8 +14,9 @@
 except NameError:
     pass
 
+import sys
 import multiprocessing
-import sys
+import queue
 
 from vulture import Vulture
 
@@ -89,11 +90,25 @@
     # Get and send results
     endIndex = len(argumentsList) - initialTasks
     for i in range(len(argumentsList)):
-        filename, result = doneQueue.get()
-        send(fx, filename, result)
-        if cancelled():
+        resultSent = False
+        wasCancelled = False
+        
+        while not resultSent:
+            try:
+                # get result (waiting max. 3 seconds and send it to frontend
+                filename, result = doneQueue.get()
+                send(fx, filename, result)
+                resultSent = True
+            except queue.Empty:
+                # ignore empty queue, just carry on
+                if cancelled():
+                    wasCancelled = True
+                    break
+        
+        if wasCancelled or cancelled():
             # just exit the loop ignoring the results of queued tasks
             break
+        
         if i < endIndex:
             taskQueue.put(argumentsList[i + initialTasks])
 

eric ide

mercurial