diff options
author | Victor Shyba <victor.shyba@gmail.com> | 2016-01-20 07:54:35 -0300 |
---|---|---|
committer | Victor Shyba <victor.shyba@gmail.com> | 2016-01-21 17:58:21 -0300 |
commit | 4c214b7ff9351dd98efbb033dd5e09b8ff9ff763 (patch) | |
tree | 4a833fb47547c2593e58e2c35c735737d7265458 | |
parent | 888d3d532770cb06fbc575088dc3e27edff8d703 (diff) |
[Fix] slow IO-bound calls block reactor
- Move them to a thread so reactor can continue
processing e.g. http requests
-rw-r--r-- | client/src/leap/soledad/client/encdecpool.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/client/src/leap/soledad/client/encdecpool.py b/client/src/leap/soledad/client/encdecpool.py index 0954c1df..34667a1e 100644 --- a/client/src/leap/soledad/client/encdecpool.py +++ b/client/src/leap/soledad/client/encdecpool.py @@ -28,6 +28,7 @@ import json import logging from twisted.internet import reactor +from twisted.internet import threads from twisted.internet import defer from twisted.python import log @@ -687,7 +688,11 @@ class SyncDecrypterPool(SyncEncryptDecryptPool): """ insertable = yield self._get_insertable_docs() for doc_fields in insertable: - self._insert_decrypted_local_doc(*doc_fields) + method = self._insert_decrypted_local_doc + # FIXME: This is used only because SQLCipherU1DBSync is synchronous + # When adbapi is used there is no need for an external thread + # Without this the reactor can freeze and fail docs download + yield threads.deferToThread(method, *doc_fields) defer.returnValue(insertable) def _delete_processed_docs(self, inserted): |