diff options
author | Remco van Oosterhout <mail@vhabion.net> | 2015-10-21 12:33:52 +0000 |
---|---|---|
committer | Remco van Oosterhout <mail@vhabion.net> | 2015-10-21 12:52:10 +0000 |
commit | 8161f4a818872c0a5ca6219e179ba61e454551f9 (patch) | |
tree | 8fb2e89d098daea5fc69575a8e5be76e12622805 | |
parent | 37e458e69270399141fdd9b70237daf01c9e19fa (diff) | |
download | pymemcache-8161f4a818872c0a5ca6219e179ba61e454551f9.tar.gz |
Fixed bugs caused by setting retry attempts to 0 on HashClient
-rw-r--r-- | pymemcache/client/hash.py | 4 | ||||
-rw-r--r-- | pymemcache/test/test_client_hash.py | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/pymemcache/client/hash.py b/pymemcache/client/hash.py index 709ad31..55b6287 100644 --- a/pymemcache/client/hash.py +++ b/pymemcache/client/hash.py @@ -185,13 +185,13 @@ class HashClient(object): # dead immediately elif ( client.server not in self._failed_clients and - self.retry_attempts < 0 + self.retry_attempts <= 0 ): self._failed_clients[client.server] = { 'failed_time': time.time(), 'attempts': 0, } - logger.debug("marking server as dead %s" % client.server) + logger.debug("marking server as dead %s", client.server) self.remove_server(*client.server) # This client has failed previously, we need to update the metadata # to reflect that we have attempted it again diff --git a/pymemcache/test/test_client_hash.py b/pymemcache/test/test_client_hash.py index dc3dde0..6672fd7 100644 --- a/pymemcache/test/test_client_hash.py +++ b/pymemcache/test/test_client_hash.py @@ -7,6 +7,7 @@ from .test_client import ClientTestMixin, MockSocket import unittest import pytest import mock +import socket class TestHashClient(ClientTestMixin, unittest.TestCase): @@ -144,6 +145,17 @@ class TestHashClient(ClientTestMixin, unittest.TestCase): assert str(e.value) == 'All servers seem to be down right now' + def test_unavailable_servers_zero_retry_raise_exception(self): + from pymemcache.client.hash import HashClient + client = HashClient( + [('example.com', 11211)], use_pooling=True, + ignore_exc=False, + retry_attempts=0, timeout=1, connect_timeout=1 + ) + + with pytest.raises(socket.error) as e: + client.get('foo') + def test_no_servers_left_with_commands(self): from pymemcache.client.hash import HashClient client = HashClient( |