diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/changes/bug_5449_preload-strptime-to-avoid-multi-thread-problem | 2 | ||||
| -rw-r--r-- | common/src/leap/soledad/common/couch.py | 11 | 
2 files changed, 13 insertions, 0 deletions
| diff --git a/common/changes/bug_5449_preload-strptime-to-avoid-multi-thread-problem b/common/changes/bug_5449_preload-strptime-to-avoid-multi-thread-problem new file mode 100644 index 00000000..17d1f463 --- /dev/null +++ b/common/changes/bug_5449_preload-strptime-to-avoid-multi-thread-problem @@ -0,0 +1,2 @@ +  o Preload time.strptime() to avoid multi-threaded problem on couch backend +    get_docs() method (#5449). diff --git a/common/src/leap/soledad/common/couch.py b/common/src/leap/soledad/common/couch.py index 1bb84985..8e8613a1 100644 --- a/common/src/leap/soledad/common/couch.py +++ b/common/src/leap/soledad/common/couch.py @@ -1401,6 +1401,17 @@ class CouchDatabase(CommonBackend):                   in matching doc_ids order.          :rtype: iterable          """ +        # Workaround for: +        # +        #   http://bugs.python.org/issue7980 +        #   https://leap.se/code/issues/5449 +        # +        # python-couchdb uses time.strptime, which is not thread safe. In +        # order to avoid the problem described on the issues above, we preload +        # strptime here by evaluating the conversion of an arbitrary date. +        # This will not be needed when/if we switch from python-couchdb to +        # paisley. +        time.strptime('Mar 4 1917', '%b %d %Y')          # spawn threads to retrieve docs          threads = []          for doc_id in doc_ids: | 
