)]}'
{"swift/proxy/controllers/container.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d64fed7368e848bbf25b9826f6265d5a78eb9686","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            elif marker:"},{"line_number":180,"context_line":"                params[\u0027marker\u0027] \u003d marker"},{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                params[\u0027marker\u0027] \u003d \u0027\u0027"},{"line_number":183,"context_line":"            # Always set end_marker to ensure that misplaced objects beyond the"},{"line_number":184,"context_line":"            # expected shard range are not fetched. This prevents a misplaced"},{"line_number":185,"context_line":"            # object obscuring correctly placed objects in the next shard"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_478fbe22","line":182,"updated":"2018-05-22 21:41:06.000000000","message":"I don\u0027t think this is needed. We can just do\n\n if objects:\n     ...\n\nand the alternative is that the marker will be carried from the previous iteration of the loop, falling back to req.params.\n\nOf course, then we should update the\n\n\u003e Always set marker ...\n\npart of the comment.","commit_id":"ff832955fc8e0ac746a05c78c0140336707699c7"}],"test/unit/proxy/controllers/test_container.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"76bd214372535456fec6d066ccbfc8301e821dc0","unresolved":false,"context_lines":[{"line_number":817,"context_line":"            expected_requests, query_string\u003d\u0027?marker\u003d%s\u0026reverse\u003dtrue\u0027 % marker,"},{"line_number":818,"context_line":"            reverse\u003dTrue)"},{"line_number":819,"context_line":"        self.check_response(resp, root_resp_hdrs)"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"    def test_GET_sharded_container_with_delimiter(self):"},{"line_number":822,"context_line":"        shard_bounds \u003d ((\u0027\u0027, \u0027ham\u0027), (\u0027ham\u0027, \u0027pie\u0027), (\u0027pie\u0027, \u0027\u0027))"},{"line_number":823,"context_line":"        shard_ranges \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_2e45cd70","line":820,"updated":"2018-05-21 20:48:00.000000000","message":"I sort of agree with Sam, if this part of this patch was a follow on, I wonder if we\u0027d merge it?  Maybe start w/o it?\n\n    diff --git a/swift/proxy/controllers/container.py b/swift/proxy/controllers/container.py\n    index b5a6ca1..fbe3567 100644\n    --- a/swift/proxy/controllers/container.py\n    +++ b/swift/proxy/controllers/container.py\n    @@ -166,17 +166,6 @@ class ContainerController(Controller):\n     \n             limit \u003d req_limit\n             for shard_range in shard_ranges:\n    -            # container server should only return shard ranges between marker\n    -            # and end-marker but be defensive and ignore any unexpected shard\n    -            # ranges\n    -            if reverse:\n    -                if ((marker and marker \u003c\u003d shard_range.lower) or\n    -                        end_marker \u003e\u003d shard_range.upper):\n    -                    continue\n    -            else:\n    -                if (marker \u003e\u003d shard_range.upper or\n    -                        (end_marker and end_marker \u003c\u003d shard_range.lower)):\n    -                    continue\n                 params[\u0027limit\u0027] \u003d limit\n                 # Always set marker to ensure that object names less than or equal\n                 # to those already in the listing are not fetched; if the listing\n    diff --git a/test/unit/proxy/controllers/test_container.py b/test/unit/proxy/controllers/test_container.py\n    index e519403..14184ae 100644\n    --- a/test/unit/proxy/controllers/test_container.py\n    +++ b/test/unit/proxy/controllers/test_container.py\n    @@ -762,61 +762,6 @@ class TestContainerController(TestRingBase):\n                 % (end_marker, marker, limit), reverse\u003dTrue)\n             self.check_response(resp, root_resp_hdrs)\n     \n    -        # unexpected range returned below marker - check marker is respected\n    -        marker \u003d sr_objs[1][0][\u0027name\u0027]\n    -        limit \u003d 10000\n    -        mock_responses \u003d [\n    -            # status, body, headers\n    -            (200, sr_dicts, root_shard_resp_hdrs),\n    -            (200, sr_objs[1], shard_resp_hdrs[1]),\n    -            (200, sr_objs[2], shard_resp_hdrs[2])\n    -        ]\n    -        expected_requests \u003d [\n    -            # path, headers, params\n    -            (\u0027a/c\u0027, {\u0027X-Backend-Record-Type\u0027: \u0027auto\u0027},\n    -             dict(states\u003d\u0027listing\u0027, marker\u003dmarker)),  # 200\n    -            # no request is made to unexpected range\n    -            (shard_ranges[1].name, {\u0027X-Backend-Record-Type\u0027: \u0027auto\u0027},\n    -             dict(marker\u003dmarker, end_marker\u003d\u0027pie\\x00\u0027, states\u003d\u0027listing\u0027,\n    -             limit\u003dstr(limit))),  # 200\n    -            (shard_ranges[2].name, {\u0027X-Backend-Record-Type\u0027: \u0027auto\u0027},\n    -             dict(marker\u003dsr_objs[1][-1][\u0027name\u0027], end_marker\u003d\u0027\u0027,\n    -                  states\u003d\u0027listing\u0027,\n    -             limit\u003dstr(limit - len(sr_objs[1])))),  # 200\n    -        ]\n    -        resp \u003d self._check_GET_shard_listing(\n    -            mock_responses, sr_objs[1] + sr_objs[2], expected_requests,\n    -            query_string\u003d\u0027?marker\u003d%s\u0027 % marker)\n    -        self.check_response(resp, root_resp_hdrs)\n    -\n    -        # reverse, unexpected range returned above marker - check marker is\n    -        # respected\n    -        marker \u003d sr_objs[1][-1][\u0027name\u0027]\n    -        limit \u003d 10000\n    -        mock_responses \u003d [\n    -            # status, body, headers\n    -            (200, list(reversed(sr_dicts)), root_shard_resp_hdrs),\n    -            (200, list(reversed(sr_objs[1])), shard_resp_hdrs[1]),\n    -            (200, list(reversed(sr_objs[0])), shard_resp_hdrs[0])\n    -        ]\n    -        expected_requests \u003d [\n    -            # path, headers, params\n    -            (\u0027a/c\u0027, {\u0027X-Backend-Record-Type\u0027: \u0027auto\u0027},\n    -             dict(states\u003d\u0027listing\u0027, marker\u003dmarker, reverse\u003d\u0027true\u0027)),  # 200\n    -            # no request is made to unexpected range\n    -            (shard_ranges[1].name, {\u0027X-Backend-Record-Type\u0027: \u0027auto\u0027},\n    -             dict(marker\u003dmarker, end_marker\u003d\u0027ham\u0027, states\u003d\u0027listing\u0027,\n    -             limit\u003dstr(limit), reverse\u003d\u0027true\u0027)),  # 200\n    -            (shard_ranges[0].name, {\u0027X-Backend-Record-Type\u0027: \u0027auto\u0027},\n    -             dict(marker\u003dsr_objs[1][0][\u0027name\u0027], end_marker\u003d\u0027\u0027,\n    -             states\u003d\u0027listing\u0027,\n    -             limit\u003dstr(limit - len(sr_objs[1])), reverse\u003d\u0027true\u0027)),  # 200\n    -        ]\n    -        resp \u003d self._check_GET_shard_listing(\n    -            mock_responses, list(reversed(sr_objs[0] + sr_objs[1])),\n    -            expected_requests, query_string\u003d\u0027?marker\u003d%s\u0026reverse\u003dtrue\u0027 % marker,\n    -            reverse\u003dTrue)\n    -        self.check_response(resp, root_resp_hdrs)\n     \n         def test_GET_sharded_container_with_delimiter(self):\n             shard_bounds \u003d ((\u0027\u0027, \u0027ham\u0027), (\u0027ham\u0027, \u0027pie\u0027), (\u0027pie\u0027, \u0027\u0027))","commit_id":"2d6d819ac2949d88289fcc8bdc6bb567a71195b1"}]}
