)]}'
{"swift/common/middleware/versioned_writes/object_versioning.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d035a231f64971ec7a9dc5f4a75db87874b868ce","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"                    \u0027/%s/%s/%s\u0027 % ("},{"line_number":1276,"context_line":"                        api_version, account,"},{"line_number":1277,"context_line":"                        get_reserved_name(\u0027versions\u0027, container_name)))"},{"line_number":1278,"context_line":"                container_info \u003d get_container_info("},{"line_number":1279,"context_line":"                    req.environ, self.app, swift_source\u003d\u0027OV\u0027)"},{"line_number":1280,"context_line":"                if is_success(container_info[\u0027status\u0027]):"},{"line_number":1281,"context_line":"                    item[\u0027bytes\u0027] \u003d item[\u0027bytes\u0027] + container_info[\u0027bytes\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_31e2fc31","line":1278,"range":{"start_line":1278,"start_character":33,"end_line":1278,"end_character":51},"updated":"2019-12-23 18:46:18.000000000","message":"This makes me a little nervous... could kick off thousands of HEAD requests for containers that aren\u0027t actually seeing much activity.\n\nCould we instead do a listing in the reserved namespace and splice the two? Fortunately, any query param translation should be pretty painless...","commit_id":"0fb1df939176a6c1e05120b81c1f4313c614b483"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"858d77a109571af819cdfa8a8cd64a835c9105f4","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"                    \u0027/%s/%s/%s\u0027 % ("},{"line_number":1276,"context_line":"                        api_version, account,"},{"line_number":1277,"context_line":"                        get_reserved_name(\u0027versions\u0027, container_name)))"},{"line_number":1278,"context_line":"                container_info \u003d get_container_info("},{"line_number":1279,"context_line":"                    req.environ, self.app, swift_source\u003d\u0027OV\u0027)"},{"line_number":1280,"context_line":"                if is_success(container_info[\u0027status\u0027]):"},{"line_number":1281,"context_line":"                    item[\u0027bytes\u0027] \u003d item[\u0027bytes\u0027] + container_info[\u0027bytes\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6e24030f","line":1278,"range":{"start_line":1278,"start_character":33,"end_line":1278,"end_character":51},"in_reply_to":"3fa7e38b_31e2fc31","updated":"2019-12-27 22:41:29.000000000","message":"Bonus bad: this only shows containers that exist in the user namespace, and won\u0027t help users when they find themselves with a %00versions%00 container whose primary got deleted. (Getting to that state would require that we deleted the versions container, too, but an async pending could pop it back into existence after that.)","commit_id":"0fb1df939176a6c1e05120b81c1f4313c614b483"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d035a231f64971ec7a9dc5f4a75db87874b868ce","unresolved":false,"context_lines":[{"line_number":1343,"context_line":"    def __call__(self, env, start_response):"},{"line_number":1344,"context_line":"        req \u003d Request(env)"},{"line_number":1345,"context_line":"        try:"},{"line_number":1346,"context_line":"            (api_version, account, container, obj) \u003d req.split_path(2, 4, True)"},{"line_number":1347,"context_line":"        except ValueError:"},{"line_number":1348,"context_line":"            return self.app(env, start_response)"},{"line_number":1349,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_5188d869","line":1346,"range":{"start_line":1346,"start_character":13,"end_line":1346,"end_character":24},"updated":"2019-12-23 18:46:18.000000000","message":"Off-topic: we should check that api_version is actually a valid API version.","commit_id":"0fb1df939176a6c1e05120b81c1f4313c614b483"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"db497a3ee6e38b45649768e39a1cc61b8a09bace","unresolved":false,"context_lines":[{"line_number":1296,"context_line":"                headers\u003d{\u0027X-Backend-Allow-Reserved-Names\u0027: \u0027true\u0027},"},{"line_number":1297,"context_line":"            )"},{"line_number":1298,"context_line":"            if \u0027prefix\u0027 in params:"},{"line_number":1299,"context_line":"                if RESERVED_STR not in params[\u0027prefix\u0027]:"},{"line_number":1300,"context_line":"                    params[\u0027prefix\u0027] \u003d self._build_versions_container_name("},{"line_number":1301,"context_line":"                        params[\u0027prefix\u0027])"},{"line_number":1302,"context_line":"                # else: don\u0027t touch params[\u0027prefix\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_20dfef0c","line":1299,"updated":"2019-12-31 14:44:31.000000000","message":"how would reserved str get in prefix!  stupid clients :disappointed:","commit_id":"aabff1783bb52438b489c0d82a34148f130ed40b"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"90848d9a7d61442bd50b17ad7c07c6d5bc1b6252","unresolved":false,"context_lines":[{"line_number":1296,"context_line":"                headers\u003d{\u0027X-Backend-Allow-Reserved-Names\u0027: \u0027true\u0027},"},{"line_number":1297,"context_line":"            )"},{"line_number":1298,"context_line":"            if \u0027prefix\u0027 in params:"},{"line_number":1299,"context_line":"                if RESERVED_STR not in params[\u0027prefix\u0027]:"},{"line_number":1300,"context_line":"                    params[\u0027prefix\u0027] \u003d self._build_versions_container_name("},{"line_number":1301,"context_line":"                        params[\u0027prefix\u0027])"},{"line_number":1302,"context_line":"                # else: don\u0027t touch params[\u0027prefix\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_6272b3b2","line":1299,"in_reply_to":"3fa7e38b_20dfef0c","updated":"2020-01-06 07:29:29.000000000","message":"in case we need to loop around to make a second listing request, the prefix would already be set with `get_reserved_name(\u0027versions\u0027)`","commit_id":"aabff1783bb52438b489c0d82a34148f130ed40b"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"db497a3ee6e38b45649768e39a1cc61b8a09bace","unresolved":false,"context_lines":[{"line_number":1301,"context_line":"                        params[\u0027prefix\u0027])"},{"line_number":1302,"context_line":"                # else: don\u0027t touch params[\u0027prefix\u0027]"},{"line_number":1303,"context_line":"            else:"},{"line_number":1304,"context_line":"                params[\u0027prefix\u0027] \u003d get_reserved_name(\u0027versions\u0027)"},{"line_number":1305,"context_line":""},{"line_number":1306,"context_line":"            versions_req.params \u003d params"},{"line_number":1307,"context_line":"            versions_resp \u003d versions_req.get_response(self.app)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e0e477e1","line":1304,"updated":"2019-12-31 14:44:31.000000000","message":"doesn\u0027t marker require some similar treatment?","commit_id":"aabff1783bb52438b489c0d82a34148f130ed40b"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"90848d9a7d61442bd50b17ad7c07c6d5bc1b6252","unresolved":false,"context_lines":[{"line_number":1301,"context_line":"                        params[\u0027prefix\u0027])"},{"line_number":1302,"context_line":"                # else: don\u0027t touch params[\u0027prefix\u0027]"},{"line_number":1303,"context_line":"            else:"},{"line_number":1304,"context_line":"                params[\u0027prefix\u0027] \u003d get_reserved_name(\u0027versions\u0027)"},{"line_number":1305,"context_line":""},{"line_number":1306,"context_line":"            versions_req.params \u003d params"},{"line_number":1307,"context_line":"            versions_resp \u003d versions_req.get_response(self.app)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_8277af9f","line":1304,"in_reply_to":"3fa7e38b_e0e477e1","updated":"2020-01-06 07:29:29.000000000","message":"yeah, and end_marker too","commit_id":"aabff1783bb52438b489c0d82a34148f130ed40b"}],"test/unit/common/middleware/test_object_versioning.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d035a231f64971ec7a9dc5f4a75db87874b868ce","unresolved":false,"context_lines":[{"line_number":2588,"context_line":"            \u0027name\u0027: \u0027regular-cont\u0027,"},{"line_number":2589,"context_line":"            \u0027last_modified\u0027: \u00271970-01-01T00:00:05.000000\u0027,"},{"line_number":2590,"context_line":"        }, {"},{"line_number":2591,"context_line":"            \u0027bytes\u0027: 0,"},{"line_number":2592,"context_line":"            \u0027count\u0027: 3,"},{"line_number":2593,"context_line":"            \u0027name\u0027: \u0027versioned-cont\u0027,"},{"line_number":2594,"context_line":"            \u0027last_modified\u0027: \u00271970-01-01T00:00:20.000000\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_11d10057","line":2591,"range":{"start_line":2591,"start_character":21,"end_line":2591,"end_character":22},"updated":"2019-12-23 18:46:18.000000000","message":"Might be a stronger test to have this non-zero -- that way we demonstrate that the reserved byte-usage is additive, rather than replacing.","commit_id":"0fb1df939176a6c1e05120b81c1f4313c614b483"}]}
