diff options
-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( |