diff --git a/doublethink/rethinker.py b/doublethink/rethinker.py index b0135c7..8a517d9 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.*not available.*', + 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..baf611b 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.dev76', packages=['doublethink'], classifiers=[ 'Programming Language :: Python :: 2.7',