From e495c3bbef1730fd78ed10cf01541d8986dea1e1 Mon Sep 17 00:00:00 2001 From: Tim Burke Date: Thu, 27 May 2021 10:53:01 -0700 Subject: [PATCH] sharder: Send broker path as referer when updating root When we send object updates, we get the object name in the request path; let's get something similar for shard updates. Referer has the benefit of already getting logged. Change-Id: I4ee8f9f3056f5425c82d3bb1f538049815697088 --- swift/container/sharder.py | 3 ++- test/unit/container/test_sharder.py | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/swift/container/sharder.py b/swift/container/sharder.py index cc490c6da2..4bade2e90d 100644 --- a/swift/container/sharder.py +++ b/swift/container/sharder.py @@ -1888,7 +1888,8 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator): include_deleted=True) # send everything if self._send_shard_ranges( - broker.root_account, broker.root_container, shard_ranges): + broker.root_account, broker.root_container, shard_ranges, + {'Referer': quote(broker.path)}): # on success, mark ourselves as reported so we don't keep # hammering the root own_shard_range.reported = True diff --git a/test/unit/container/test_sharder.py b/test/unit/container/test_sharder.py index 7e81bcbd18..b052e85700 100644 --- a/test/unit/container/test_sharder.py +++ b/test/unit/container/test_sharder.py @@ -4688,12 +4688,14 @@ class TestSharder(BaseTestSharder): def check_shard_ranges_sent(self, broker, expected_sent): bodies = [] servers = [] + referers = [] def capture_send(conn, data): bodies.append(data) - def capture_connect(host, port, *a, **kw): + def capture_connect(host, port, _method, _path, headers, *a, **kw): servers.append((host, port)) + referers.append(headers.get('Referer')) self.assertFalse(broker.get_own_shard_range().reported) # sanity with self._mock_sharder() as sharder: @@ -4712,6 +4714,7 @@ class TestSharder(BaseTestSharder): ('10.0.1.1', 1101), ('10.0.1.2', 1102), ]) + self.assertEqual([broker.path] * 3, referers) self.assertTrue(broker.get_own_shard_range().reported) def test_update_root_container_own_range(self):