recover from a transient error, which happens for me at least rethinkdb starts up

This commit is contained in:
Noah Levitt 2017-05-01 14:01:01 -07:00
parent 501ec1ff23
commit 6c57b81de8
2 changed files with 12 additions and 1 deletions

View File

@ -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)

View File

@ -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',