Merge "sharder: fix host logged when send_shard_ranges fails"
This commit is contained in:
commit
629516cbe7
@ -38,7 +38,8 @@ from swift.common.swob import str_to_wsgi
|
|||||||
from swift.common.utils import get_logger, config_true_value, \
|
from swift.common.utils import get_logger, config_true_value, \
|
||||||
dump_recon_cache, whataremyips, Timestamp, ShardRange, GreenAsyncPile, \
|
dump_recon_cache, whataremyips, Timestamp, ShardRange, GreenAsyncPile, \
|
||||||
config_positive_int_value, quorum_size, parse_override_options, \
|
config_positive_int_value, quorum_size, parse_override_options, \
|
||||||
Everything, config_auto_int_value, ShardRangeList, config_percent_value
|
Everything, config_auto_int_value, ShardRangeList, config_percent_value, \
|
||||||
|
node_to_string
|
||||||
from swift.container.backend import ContainerBroker, \
|
from swift.container.backend import ContainerBroker, \
|
||||||
RECORD_TYPE_SHARD, UNSHARDED, SHARDING, SHARDED, COLLAPSED, \
|
RECORD_TYPE_SHARD, UNSHARDED, SHARDING, SHARDED, COLLAPSED, \
|
||||||
SHARD_UPDATE_STATES, sift_shard_ranges, SHARD_UPDATE_STAT_STATES
|
SHARD_UPDATE_STATES, sift_shard_ranges, SHARD_UPDATE_STAT_STATES
|
||||||
@ -1196,13 +1197,13 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
|
|||||||
headers=headers, contents=body)
|
headers=headers, contents=body)
|
||||||
except DirectClientException as err:
|
except DirectClientException as err:
|
||||||
self.warning(broker,
|
self.warning(broker,
|
||||||
'Failed to put shard ranges to %s:%s/%s %s/%s: %s',
|
'Failed to put shard ranges to %s %s/%s: %s',
|
||||||
node['ip'], node['port'], node['device'],
|
node_to_string(node, replication=True),
|
||||||
quote(account), quote(container), err.http_status)
|
quote(account), quote(container), err.http_status)
|
||||||
except (Exception, Timeout) as err:
|
except (Exception, Timeout) as err:
|
||||||
self.exception(broker,
|
self.exception(broker,
|
||||||
'Failed to put shard ranges to %s:%s/%s %s/%s: %s',
|
'Failed to put shard ranges to %s %s/%s: %s',
|
||||||
node['ip'], node['port'], node['device'],
|
node_to_string(node, replication=True),
|
||||||
quote(account), quote(container), err)
|
quote(account), quote(container), err)
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
@ -5187,14 +5187,14 @@ class TestSharder(BaseTestSharder):
|
|||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
req_headers['User-Agent'].startswith('container-sharder'))
|
req_headers['User-Agent'].startswith('container-sharder'))
|
||||||
self.assertEqual(sharder.ring.replica_count, len(hosts))
|
self.assertEqual(sharder.ring.replica_count, len(hosts))
|
||||||
return res, sharder
|
return res, sharder, hosts
|
||||||
|
|
||||||
replicas = 3
|
replicas = 3
|
||||||
res, sharder = do_test(replicas, 202, 202, 202)
|
res, sharder, _ = do_test(replicas, 202, 202, 202)
|
||||||
self.assertTrue(res)
|
self.assertTrue(res)
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
res, sharder = do_test(replicas, 202, 202, 404)
|
res, sharder, _ = do_test(replicas, 202, 202, 404)
|
||||||
self.assertTrue(res)
|
self.assertTrue(res)
|
||||||
self.assertEqual([True], [
|
self.assertEqual([True], [
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges' in line for line in
|
||||||
@ -5203,7 +5203,7 @@ class TestSharder(BaseTestSharder):
|
|||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('warning')])
|
sharder.logger.get_lines_for_level('warning')])
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
res, sharder = do_test(replicas, 202, 202, Exception)
|
res, sharder, _ = do_test(replicas, 202, 202, Exception)
|
||||||
self.assertTrue(res)
|
self.assertTrue(res)
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
||||||
self.assertEqual([True], [
|
self.assertEqual([True], [
|
||||||
@ -5212,7 +5212,7 @@ class TestSharder(BaseTestSharder):
|
|||||||
self.assertEqual([True], [
|
self.assertEqual([True], [
|
||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('error')])
|
sharder.logger.get_lines_for_level('error')])
|
||||||
res, sharder = do_test(replicas, 202, 404, 404)
|
res, sharder, _ = do_test(replicas, 202, 404, 404)
|
||||||
self.assertFalse(res)
|
self.assertFalse(res)
|
||||||
self.assertEqual([True, True], [
|
self.assertEqual([True, True], [
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges' in line for line in
|
||||||
@ -5221,23 +5221,21 @@ class TestSharder(BaseTestSharder):
|
|||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('warning')])
|
sharder.logger.get_lines_for_level('warning')])
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
res, sharder = do_test(replicas, 500, 500, 500)
|
res, sharder, hosts = do_test(replicas, 500, 500, 500)
|
||||||
self.assertFalse(res)
|
self.assertFalse(res)
|
||||||
self.assertEqual([True, True, True], [
|
self.assertEqual(set(
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges to %s a/c: 500, path: a/c, db: %s' %
|
||||||
sharder.logger.get_lines_for_level('warning')])
|
(host, broker.db_file) for host in hosts),
|
||||||
self.assertEqual([True, True, True], [
|
set(sharder.logger.get_lines_for_level('warning')))
|
||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
|
||||||
sharder.logger.get_lines_for_level('warning')])
|
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
res, sharder = do_test(replicas, Exception, Exception, 202)
|
res, sharder, _ = do_test(replicas, Exception, Exception, 202)
|
||||||
self.assertEqual([True, True], [
|
self.assertEqual([True, True], [
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges' in line for line in
|
||||||
sharder.logger.get_lines_for_level('error')])
|
sharder.logger.get_lines_for_level('error')])
|
||||||
self.assertEqual([True, True], [
|
self.assertEqual([True, True], [
|
||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('error')])
|
sharder.logger.get_lines_for_level('error')])
|
||||||
res, sharder = do_test(replicas, Exception, eventlet.Timeout(), 202)
|
res, sharder, _ = do_test(replicas, Exception, eventlet.Timeout(), 202)
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
||||||
self.assertEqual([True, True], [
|
self.assertEqual([True, True], [
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges' in line for line in
|
||||||
@ -5247,11 +5245,11 @@ class TestSharder(BaseTestSharder):
|
|||||||
sharder.logger.get_lines_for_level('error')])
|
sharder.logger.get_lines_for_level('error')])
|
||||||
|
|
||||||
replicas = 2
|
replicas = 2
|
||||||
res, sharder = do_test(replicas, 202, 202)
|
res, sharder, _ = do_test(replicas, 202, 202)
|
||||||
self.assertTrue(res)
|
self.assertTrue(res)
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
res, sharder = do_test(replicas, 202, 404)
|
res, sharder, _ = do_test(replicas, 202, 404)
|
||||||
self.assertTrue(res)
|
self.assertTrue(res)
|
||||||
self.assertEqual([True], [
|
self.assertEqual([True], [
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges' in line for line in
|
||||||
@ -5260,7 +5258,7 @@ class TestSharder(BaseTestSharder):
|
|||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('warning')])
|
sharder.logger.get_lines_for_level('warning')])
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
res, sharder = do_test(replicas, 202, Exception)
|
res, sharder, _ = do_test(replicas, 202, Exception)
|
||||||
self.assertTrue(res)
|
self.assertTrue(res)
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
||||||
self.assertEqual([True], [
|
self.assertEqual([True], [
|
||||||
@ -5269,7 +5267,7 @@ class TestSharder(BaseTestSharder):
|
|||||||
self.assertEqual([True], [
|
self.assertEqual([True], [
|
||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('error')])
|
sharder.logger.get_lines_for_level('error')])
|
||||||
res, sharder = do_test(replicas, 404, 404)
|
res, sharder, _ = do_test(replicas, 404, 404)
|
||||||
self.assertFalse(res)
|
self.assertFalse(res)
|
||||||
self.assertEqual([True, True], [
|
self.assertEqual([True, True], [
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges' in line for line in
|
||||||
@ -5278,16 +5276,14 @@ class TestSharder(BaseTestSharder):
|
|||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('warning')])
|
sharder.logger.get_lines_for_level('warning')])
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
res, sharder = do_test(replicas, Exception, Exception)
|
res, sharder, hosts = do_test(replicas, Exception, Exception)
|
||||||
self.assertFalse(res)
|
self.assertFalse(res)
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
||||||
self.assertEqual([True, True], [
|
self.assertEqual(set(
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges to %s a/c: FakeStatus Error, '
|
||||||
sharder.logger.get_lines_for_level('error')])
|
'path: a/c, db: %s: ' % (host, broker.db_file) for host in hosts),
|
||||||
self.assertEqual([True, True], [
|
set(sharder.logger.get_lines_for_level('error')))
|
||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
res, sharder, _ = do_test(replicas, eventlet.Timeout(), Exception)
|
||||||
sharder.logger.get_lines_for_level('error')])
|
|
||||||
res, sharder = do_test(replicas, eventlet.Timeout(), Exception)
|
|
||||||
self.assertFalse(res)
|
self.assertFalse(res)
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
||||||
self.assertEqual([True, True], [
|
self.assertEqual([True, True], [
|
||||||
@ -5298,11 +5294,11 @@ class TestSharder(BaseTestSharder):
|
|||||||
sharder.logger.get_lines_for_level('error')])
|
sharder.logger.get_lines_for_level('error')])
|
||||||
|
|
||||||
replicas = 4
|
replicas = 4
|
||||||
res, sharder = do_test(replicas, 202, 202, 202, 202)
|
res, sharder, _ = do_test(replicas, 202, 202, 202, 202)
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
self.assertTrue(res)
|
self.assertTrue(res)
|
||||||
res, sharder = do_test(replicas, 202, 202, 404, 404)
|
res, sharder, _ = do_test(replicas, 202, 202, 404, 404)
|
||||||
self.assertTrue(res)
|
self.assertTrue(res)
|
||||||
self.assertEqual([True, True], [
|
self.assertEqual([True, True], [
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges' in line for line in
|
||||||
@ -5311,7 +5307,7 @@ class TestSharder(BaseTestSharder):
|
|||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('warning')])
|
sharder.logger.get_lines_for_level('warning')])
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
res, sharder = do_test(replicas, 202, 202, Exception, Exception)
|
res, sharder, _ = do_test(replicas, 202, 202, Exception, Exception)
|
||||||
self.assertTrue(res)
|
self.assertTrue(res)
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
self.assertFalse(sharder.logger.get_lines_for_level('warning'))
|
||||||
self.assertEqual([True, True], [
|
self.assertEqual([True, True], [
|
||||||
@ -5320,7 +5316,7 @@ class TestSharder(BaseTestSharder):
|
|||||||
self.assertEqual([True, True], [
|
self.assertEqual([True, True], [
|
||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('error')])
|
sharder.logger.get_lines_for_level('error')])
|
||||||
res, sharder = do_test(replicas, 202, 404, 404, 404)
|
res, sharder, _ = do_test(replicas, 202, 404, 404, 404)
|
||||||
self.assertFalse(res)
|
self.assertFalse(res)
|
||||||
self.assertEqual([True, True, True], [
|
self.assertEqual([True, True, True], [
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges' in line for line in
|
||||||
@ -5329,7 +5325,7 @@ class TestSharder(BaseTestSharder):
|
|||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('warning')])
|
sharder.logger.get_lines_for_level('warning')])
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
res, sharder = do_test(replicas, 500, 500, 500, 202)
|
res, sharder, _ = do_test(replicas, 500, 500, 500, 202)
|
||||||
self.assertFalse(res)
|
self.assertFalse(res)
|
||||||
self.assertEqual([True, True, True], [
|
self.assertEqual([True, True, True], [
|
||||||
'Failed to put shard ranges' in line for line in
|
'Failed to put shard ranges' in line for line in
|
||||||
@ -5338,7 +5334,7 @@ class TestSharder(BaseTestSharder):
|
|||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('warning')])
|
sharder.logger.get_lines_for_level('warning')])
|
||||||
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
self.assertFalse(sharder.logger.get_lines_for_level('error'))
|
||||||
res, sharder = do_test(replicas, Exception, Exception, 202, 404)
|
res, sharder, _ = do_test(replicas, Exception, Exception, 202, 404)
|
||||||
self.assertFalse(res)
|
self.assertFalse(res)
|
||||||
self.assertEqual([True], [
|
self.assertEqual([True], [
|
||||||
all(msg in line for msg in ('Failed to put shard ranges', '404'))
|
all(msg in line for msg in ('Failed to put shard ranges', '404'))
|
||||||
@ -5352,7 +5348,7 @@ class TestSharder(BaseTestSharder):
|
|||||||
self.assertEqual([True, True], [
|
self.assertEqual([True, True], [
|
||||||
'path: a/c, db: %s' % broker.db_file in line for line in
|
'path: a/c, db: %s' % broker.db_file in line for line in
|
||||||
sharder.logger.get_lines_for_level('error')])
|
sharder.logger.get_lines_for_level('error')])
|
||||||
res, sharder = do_test(
|
res, sharder, _ = do_test(
|
||||||
replicas, eventlet.Timeout(), eventlet.Timeout(), 202, 404)
|
replicas, eventlet.Timeout(), eventlet.Timeout(), 202, 404)
|
||||||
self.assertFalse(res)
|
self.assertFalse(res)
|
||||||
self.assertEqual([True], [
|
self.assertEqual([True], [
|
||||||
|
Loading…
Reference in New Issue
Block a user