summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemco van Oosterhout <mail@vhabion.net>2015-10-21 12:33:52 +0000
committerRemco van Oosterhout <mail@vhabion.net>2015-10-21 12:52:10 +0000
commit8161f4a818872c0a5ca6219e179ba61e454551f9 (patch)
tree8fb2e89d098daea5fc69575a8e5be76e12622805
parent37e458e69270399141fdd9b70237daf01c9e19fa (diff)
downloadpymemcache-8161f4a818872c0a5ca6219e179ba61e454551f9.tar.gz
Fixed bugs caused by setting retry attempts to 0 on HashClient
-rw-r--r--pymemcache/client/hash.py4
-rw-r--r--pymemcache/test/test_client_hash.py12
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(