[tor-commits] [sbws/master] fixup! scanner: check that ResultDump queue is not full

juga at torproject.org juga at torproject.org
Sun Mar 3 12:44:39 UTC 2019


commit cf5b324d4557b5b7dc8891f64a7f1d12dff6154e
Author: juga0 <juga at riseup.net>
Date:   Sat Feb 23 15:51:15 2019 +0000

    fixup! scanner: check that ResultDump queue is not full
---
 sbws/core/scanner.py | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/sbws/core/scanner.py b/sbws/core/scanner.py
index 4c85ee4..7ab1e6e 100644
--- a/sbws/core/scanner.py
+++ b/sbws/core/scanner.py
@@ -1,4 +1,5 @@
 ''' Measure the relays. '''
+import queue
 
 from ..lib.circuitbuilder import GapsCircuitBuilder as CB
 from ..lib.resultdump import ResultDump
@@ -317,16 +318,19 @@ def result_putter(result_dump):
     result -- and return that function so it can be used by someone else '''
 
     def closure(measurement_result):
-        # in case the queue is full, wait until is not.
         # Since result_dump thread is calling queue.get() every second,
         # the queue should be full for only 1 second.
-        while result_dump.queue.full():
-            log.info('The results queue is full, after 1 second it should '
-                     'not be full.')
-            time.sleep(1)
-        # Non blocking, wait a maximum of 1 second if the queue is full.
-        # Because of the timeout, the previous while should not be needed.
-        result_dump.queue.put(measurement_result, timeout=1)
+        # This call blocks at maximum timeout seconds.
+        try:
+            result_dump.queue.put(measurement_result, timeout=3)
+        except queue.Full:
+            # The result would be lost, the scanner will continue working.
+            log.warning(
+                "The queue with measurements is full, when adding %s.\n"
+                "It is possible that the thread that get them to "
+                "write them to the disk (ResultDump.enter) is stalled.",
+                measurement_result
+                )
     return closure
 
 





More information about the tor-commits mailing list