Skip to content

Commit

Permalink
Merge pull request #73 from zalando/bugfix/update-machines-cache
Browse files Browse the repository at this point in the history
Bugfix/update machines cache
  • Loading branch information
Oleksii Kliukin committed Oct 21, 2015
2 parents e2261f5 + c4a6dd4 commit 3c3694d
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 16 deletions.
6 changes: 5 additions & 1 deletion patroni/etcd.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,11 @@ def machines(self):
def api_execute(self, path, method, **kwargs):
# Update machines_cache if previous attempt of update has failed
self._update_machines_cache and self._load_machines_cache()
return super(Client, self).api_execute(path, method, **kwargs)
try:
return super(Client, self).api_execute(path, method, **kwargs)
except etcd.EtcdConnectionFailed:
self._update_machines_cache = True
raise

@staticmethod
def get_srv_record(host):
Expand Down
13 changes: 9 additions & 4 deletions tests/test_etcd.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,13 +106,13 @@ def etcd_read(key, **kwargs):
"modifiedIndex": 20437, "createdIndex": 20437},
{"key": "/service/batman5/members", "dir": True, "nodes": [
{"key": "/service/batman5/members/postgresql1",
"value": "postgres://replicator:rep-pass@127.0.0.1:5434/postgres"
+ "?application_name=http://127.0.0.1:8009/patroni",
"value": "postgres://replicator:rep-pass@127.0.0.1:5434/postgres" +
"?application_name=http://127.0.0.1:8009/patroni",
"expiration": "2015-05-15T09:10:59.949384522Z", "ttl": 21,
"modifiedIndex": 20727, "createdIndex": 20727},
{"key": "/service/batman5/members/postgresql0",
"value": "postgres://replicator:rep-pass@127.0.0.1:5433/postgres"
+ "?application_name=http://127.0.0.1:8008/patroni",
"value": "postgres://replicator:rep-pass@127.0.0.1:5433/postgres" +
"?application_name=http://127.0.0.1:8008/patroni",
"expiration": "2015-05-15T09:11:09.611860899Z", "ttl": 30,
"modifiedIndex": 20730, "createdIndex": 20730}],
"modifiedIndex": 1581, "createdIndex": 1581}], "modifiedIndex": 1581, "createdIndex": 1581}}
Expand Down Expand Up @@ -165,6 +165,11 @@ def test_api_execute(self):
self.client._base_uri = 'http://localhost:4001'
self.client._machines_cache = ['http://localhost:2379']
self.client.api_execute('/', 'GET')
self.client._update_machines_cache = False
self.client._base_uri = 'http://localhost:4001'
self.client._machines_cache = []
self.assertRaises(etcd.EtcdConnectionFailed, self.client.api_execute, '/', 'GET')
self.assertTrue(self.client._update_machines_cache)

def test_get_srv_record(self):
self.assertEquals(self.client.get_srv_record('blabla'), [])
Expand Down
15 changes: 5 additions & 10 deletions tests/test_postgresql.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,7 @@
import shutil
import unittest

from sys import version_info
if version_info.major == 2:
import __builtin__ as builtins
else:
import builtins

from six.moves import builtins
from mock import Mock, MagicMock, PropertyMock, patch, mock_open
from patroni.dcs import Cluster, Leader, Member
from patroni.exceptions import PostgresException, PostgresConnectionException
Expand Down Expand Up @@ -146,10 +141,10 @@ def pg_controldata_string(*args, **kwargs):


def postmaster_opts_string(*args, **kwargs):
return '/usr/local/pgsql/bin/postgres "-D" "data/postgresql0" "--listen_addresses=127.0.0.1" "--port=5432"'\
' "--hot_standby=on" "--wal_keep_segments=8" "--wal_level=hot_standby" "--archive_command=mkdir -p ../wal_archive \n'\
'&& cp %p ../wal_archive/%f" "--wal_log_hints=on" "--max_wal_senders=5" "--archive_timeout=1800s" "--archive_mode=on"'\
' "--max_replication_slots=5"\n'
return '/usr/local/pgsql/bin/postgres "-D" "data/postgresql0" "--listen_addresses=127.0.0.1" \
"--port=5432" "--hot_standby=on" "--wal_keep_segments=8" "--wal_level=hot_standby" \
"--archive_command=mkdir -p ../wal_archive && cp %p ../wal_archive/%f" "--wal_log_hints=on" \
"--max_wal_senders=5" "--archive_timeout=1800s" "--archive_mode=on" "--max_replication_slots=5"\n'


def psycopg2_connect(*args, **kwargs):
Expand Down
4 changes: 3 additions & 1 deletion tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,9 @@ def test_deadline(self):
self.assertRaises(RetryFailedError, retry, self._fail(times=100))

def test_copy(self):
_sleep = lambda t: None
def _sleep(t):
None

retry = self._makeOne(sleep_func=_sleep)
rcopy = retry.copy()
self.assertTrue(rcopy.sleep_func is _sleep)

0 comments on commit 3c3694d

Please sign in to comment.