diff options
| author | Victor Shyba <victor1984@riseup.net> | 2017-08-07 21:09:44 -0300 | 
|---|---|---|
| committer | Victor Shyba <victor1984@riseup.net> | 2017-08-07 21:09:44 -0300 | 
| commit | 90c8ebd220b0e15b75e9c1efc6c760f8b6592c4f (patch) | |
| tree | e0bda12a90c8b3d3a32cf4de08096a3da85a8d97 | |
| parent | faa01b5858f9a7a80edb2120f3d767891801b897 (diff) | |
[bug] skip processing if no consumers to avoid data loss
| -rw-r--r-- | src/leap/soledad/client/incoming.py | 2 | ||||
| -rw-r--r-- | testing/tests/client/test_incoming_processing_flow.py | 8 | 
2 files changed, 10 insertions, 0 deletions
| diff --git a/src/leap/soledad/client/incoming.py b/src/leap/soledad/client/incoming.py index 879684e8..42522303 100644 --- a/src/leap/soledad/client/incoming.py +++ b/src/leap/soledad/client/incoming.py @@ -73,6 +73,8 @@ class IncomingBoxProcessingLoop:      @defer.inlineCallbacks      def _process(self): +        if not self.consumers: +            defer.returnValue(None)          pending = yield self.incoming_box.list_pending()          for item_id in pending:              item = yield self.incoming_box.fetch_for_processing(item_id) diff --git a/testing/tests/client/test_incoming_processing_flow.py b/testing/tests/client/test_incoming_processing_flow.py index 1e64fcc2..40409f0a 100644 --- a/testing/tests/client/test_incoming_processing_flow.py +++ b/testing/tests/client/test_incoming_processing_flow.py @@ -77,6 +77,14 @@ class IncomingBoxProcessingTestCase(unittest.TestCase):          self.box.fetch_for_processing.assert_called_once_with('one_item')      @defer.inlineCallbacks +    def test_no_consumers(self): +        items = ['one', 'two', 'three'] +        self._set_pending_items(items) +        yield self.loop() +        self.box.fetch_for_processing.assert_not_called() +        self.box.delete.assert_not_called() + +    @defer.inlineCallbacks      def test_pending_list_with_multiple_items(self):          items = ['one', 'two', 'three']          self._set_pending_items(items) | 
