summaryrefslogtreecommitdiff
path: root/swift/proxy/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'swift/proxy/controllers')
-rw-r--r--swift/proxy/controllers/base.py11
-rw-r--r--swift/proxy/controllers/container.py12
2 files changed, 17 insertions, 6 deletions
diff --git a/swift/proxy/controllers/base.py b/swift/proxy/controllers/base.py
index 825fbb7c2..e0b95107e 100644
--- a/swift/proxy/controllers/base.py
+++ b/swift/proxy/controllers/base.py
@@ -40,6 +40,7 @@ from eventlet import sleep
from eventlet.timeout import Timeout
import six
+from swift.common.memcached import MemcacheConnectionError
from swift.common.wsgi import make_pre_authed_env, make_pre_authed_request
from swift.common.utils import Timestamp, WatchdogTimeout, config_true_value, \
public, split_path, list_from_csv, GreenthreadSafeIterator, \
@@ -2400,9 +2401,13 @@ class Controller(object):
if skip_chance and random.random() < skip_chance:
self.logger.increment('shard_updating.cache.skip')
else:
- cached_ranges = memcache.get(cache_key)
- self.logger.increment('shard_updating.cache.%s' % (
- 'hit' if cached_ranges else 'miss'))
+ try:
+ cached_ranges = memcache.get(
+ cache_key, raise_on_error=True)
+ cache_state = 'hit' if cached_ranges else 'miss'
+ except MemcacheConnectionError:
+ cache_state = 'error'
+ self.logger.increment('shard_updating.cache.%s' % cache_state)
if cached_ranges:
shard_ranges = [
diff --git a/swift/proxy/controllers/container.py b/swift/proxy/controllers/container.py
index 4ac00d010..a21a55d22 100644
--- a/swift/proxy/controllers/container.py
+++ b/swift/proxy/controllers/container.py
@@ -20,6 +20,7 @@ import random
import six
from six.moves.urllib.parse import unquote
+from swift.common.memcached import MemcacheConnectionError
from swift.common.utils import public, private, csv_append, Timestamp, \
config_true_value, ShardRange, cache_from_env, filter_shard_ranges
from swift.common.constraints import check_metadata, CONTAINER_LISTING_LIMIT
@@ -152,9 +153,14 @@ class ContainerController(Controller):
if skip_chance and random.random() < skip_chance:
self.logger.increment('shard_listing.cache.skip')
else:
- cached_ranges = memcache.get(cache_key)
- self.logger.increment('shard_listing.cache.%s' % (
- 'hit' if cached_ranges else 'miss'))
+ try:
+ cached_ranges = memcache.get(
+ cache_key, raise_on_error=True)
+ cache_state = 'hit' if cached_ranges else 'miss'
+ except MemcacheConnectionError:
+ cache_state = 'error'
+ self.logger.increment(
+ 'shard_listing.cache.%s' % cache_state)
if cached_ranges is not None:
infocache[cache_key] = tuple(cached_ranges)