diff --git a/.travis.yml b/.travis.yml index 4186a47..d2518fe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,10 @@ python: - nightly - pypy - pypy3 +matrix: + allow_failures: + - python: nightly + - python: 3.7-dev services: - docker before_install: diff --git a/doublethink/__init__.pyc b/doublethink/__init__.pyc deleted file mode 100644 index dec6a5e..0000000 Binary files a/doublethink/__init__.pyc and /dev/null differ diff --git a/doublethink/rethinker.py b/doublethink/rethinker.py index b0135c7..7978083 100644 --- a/doublethink/rethinker.py +++ b/doublethink/rethinker.py @@ -21,6 +21,7 @@ import logging import random import time import types +import re class RethinkerWrapper(object): logger = logging.getLogger('doublethink.RethinkerWrapper') @@ -66,6 +67,16 @@ class RethinkerWrapper(object): return result except r.ReqlTimeoutError as e: time.sleep(0.5) + except r.ReqlOpFailedError as e: + if e.args and re.match( + '^Cannot perform.*primary replica.*', + e.args[0]): + self.logger.error( + 'will keep trying after potentially recoverable ' + 'error: %s', e) + time.sleep(0.5) + else: + raise finally: if not is_iter: conn.close(noreply_wait=False) diff --git a/setup.py b/setup.py index d740c4d..fc894e1 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ import codecs setuptools.setup( name='doublethink', - version='0.2.0.dev75', + version='0.2.0.dev78', packages=['doublethink'], classifiers=[ 'Programming Language :: Python :: 2.7',