diff --git a/patroni/ctl.py b/patroni/ctl.py index 1023a6d7..bfd22c43 100644 --- a/patroni/ctl.py +++ b/patroni/ctl.py @@ -1180,7 +1180,7 @@ def version(obj, cluster_name, member_names): if not member_names or m.name in member_names: try: response = request_patroni(m) - data = json.loads(response.data) + data = json.loads(response.data.decode('utf-8')) version = data.get('patroni', {}).get('version') pg_version = data.get('server_version') pg_version_str = " PostgreSQL {0}".format(format_pg_version(pg_version)) if pg_version else "" diff --git a/patroni/ha.py b/patroni/ha.py index 6218c87f..b6f1efbd 100644 --- a/patroni/ha.py +++ b/patroni/ha.py @@ -553,8 +553,9 @@ class Ha(object): try: response = self.patroni.request(member, timeout=2, retries=0) - logger.info('Got response from %s %s: %s', member.name, member.api_url, response.data.decode('utf-8')) - return _MemberStatus.from_api_response(member, json.loads(response.data)) + data = response.data.decode('utf-8') + logger.info('Got response from %s %s: %s', member.name, member.api_url, data) + return _MemberStatus.from_api_response(member, json.loads(data)) except Exception as e: logger.warning("Request failed to %s: GET %s (%s)", member.name, member.api_url, e) return _MemberStatus.unknown(member) diff --git a/tests/test_ctl.py b/tests/test_ctl.py index 0733d88f..0a7a9496 100644 --- a/tests/test_ctl.py +++ b/tests/test_ctl.py @@ -559,7 +559,7 @@ class TestCtl(unittest.TestCase): with patch.object(PoolManager, 'request') as mocked: result = self.runner.invoke(ctl, ['version']) assert 'patronictl version' in result.output - mocked.return_value.data = json.dumps({'patroni': {'version': '1.2.3'}, 'server_version': 100001}) + mocked.return_value.data = b'{"patroni":{"version":"1.2.3"},"server_version": 100001}' result = self.runner.invoke(ctl, ['version', 'dummy']) assert '1.2.3' in result.output with patch.object(PoolManager, 'request', Mock(side_effect=Exception)):