)]}'
{"swift/common/middleware/versioned_writes/object_versioning.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"3c7285d7f7e7e93b278528758fb01cd80e953622","unresolved":false,"context_lines":[{"line_number":1193,"context_line":"                    continue"},{"line_number":1194,"context_line":"                broken_listing.append({"},{"line_number":1195,"context_line":"                    \u0027name\u0027: name.decode(\u0027utf8\u0027) if six.PY2 else name,"},{"line_number":1196,"context_line":"                    \u0027is_latest\u0027: False if len(null_listing) \u003e 0 else True,"},{"line_number":1197,"context_line":"                    \u0027version_id\u0027: ts.internal,"},{"line_number":1198,"context_line":"                    \u0027content_type\u0027: item[\u0027content_type\u0027],"},{"line_number":1199,"context_line":"                    \u0027bytes\u0027: item[\u0027bytes\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_8ba01138","line":1196,"range":{"start_line":1196,"start_character":46,"end_line":1196,"end_character":58},"updated":"2020-01-07 20:33:43.000000000","message":"But this is a listing of *all* null-versioned objects, yeah? Not just the ones matching name...","commit_id":"ac7e7a7b1ab9aaab9fa2111409a57ccf39955dde"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"3c7285d7f7e7e93b278528758fb01cd80e953622","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"                app_resp \u003d [body]"},{"line_number":1214,"context_line":"            else:"},{"line_number":1215,"context_line":"                versions_listing \u003d []"},{"line_number":1216,"context_line":"                latest_flag \u003d set()"},{"line_number":1217,"context_line":"                for item in listing:"},{"line_number":1218,"context_line":"                    if \u0027name\u0027 not in item:"},{"line_number":1219,"context_line":"                        # remove reserved chars from subdir"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_eb666528","line":1216,"updated":"2020-01-07 20:33:43.000000000","message":"I think we\u0027re gonna want to hoist this *way* up and start adding to it as we build up null_listing.","commit_id":"ac7e7a7b1ab9aaab9fa2111409a57ccf39955dde"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"3c7285d7f7e7e93b278528758fb01cd80e953622","unresolved":false,"context_lines":[{"line_number":1237,"context_line":"                              DELETE_MARKER_CONTENT_TYPE"},{"line_number":1238,"context_line":"                              and name not in latest_flag):"},{"line_number":1239,"context_line":"                            item[\u0027is_latest\u0027] \u003d False if len("},{"line_number":1240,"context_line":"                                null_listing) \u003e 0 else True"},{"line_number":1241,"context_line":"                            latest_flag.add(name)"},{"line_number":1242,"context_line":"                        else:"},{"line_number":1243,"context_line":"                            item[\u0027is_latest\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ab5dcd48","line":1240,"updated":"2020-01-07 20:33:43.000000000","message":"This is going to get hairy with reversed listings, isn\u0027t it...\n\n*shrug* I suppose I\u0027m not *that* worried about having an older delete marker show up as latest as long as\n\n* _some_ delete marker ought to be latest and\n* _only one_ entry is marked latest.","commit_id":"ac7e7a7b1ab9aaab9fa2111409a57ccf39955dde"}],"test/probe/test_object_versioning.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"56fbb4043e141c0b845d4606f8ba48023ca26c55","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def test_account_listing(self):"},{"line_number":41,"context_line":"        versions_header_key \u003d \u0027X-Versions-Enabled\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        # Create container1 and container2"},{"line_number":44,"context_line":"        container_name \u003d \u0027container1\u0027"},{"line_number":45,"context_line":"        obj_name \u003d \u0027object1\u0027"},{"line_number":46,"context_line":"        client.put_container(self.url, self.token, container_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_56639c41","line":43,"range":{"start_line":43,"start_character":32,"end_line":43,"end_character":42},"updated":"2020-01-07 22:01:45.000000000","message":"eh?","commit_id":"5460dec7ce6f1f4de999b2ee79bcbe0cb7744da5"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"e7fcd375cf512dec8498eaa4e99b2ab31135ddd5","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def test_account_listing(self):"},{"line_number":41,"context_line":"        versions_header_key \u003d \u0027X-Versions-Enabled\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        # Create container1 and container2"},{"line_number":44,"context_line":"        container_name \u003d \u0027container1\u0027"},{"line_number":45,"context_line":"        obj_name \u003d \u0027object1\u0027"},{"line_number":46,"context_line":"        client.put_container(self.url, self.token, container_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_916cbe6b","line":43,"range":{"start_line":43,"start_character":32,"end_line":43,"end_character":42},"in_reply_to":"3fa7e38b_56639c41","updated":"2020-01-07 22:24:20.000000000","message":"copy and paste error","commit_id":"5460dec7ce6f1f4de999b2ee79bcbe0cb7744da5"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"56fbb4043e141c0b845d4606f8ba48023ca26c55","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        # directly delete primary container to leave an orphan hidden"},{"line_number":93,"context_line":"        # container"},{"line_number":94,"context_line":"        client.delete_object(self.url, self.token, container_name, obj_name)"},{"line_number":95,"context_line":"        self.direct_delete_container(container\u003dcontainer_name)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Get to final state"},{"line_number":98,"context_line":"        self.get_to_final_state()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_b1953a8a","line":95,"range":{"start_line":95,"start_character":13,"end_line":95,"end_character":36},"updated":"2020-01-07 22:01:45.000000000","message":"I was debating about doing a split brain, or having the container servers go down for v2 in a sequence like\n\n PUT v1\n PUT v2\n PUT v3\n DELETE all listable versions\n DELETE container\n\nso the async pending pops it back into existence... *shrug*\n\nThis seems simpler/more direct/faster.","commit_id":"5460dec7ce6f1f4de999b2ee79bcbe0cb7744da5"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"56fbb4043e141c0b845d4606f8ba48023ca26c55","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            hdr_cont_count\u003d\u00271\u0027,"},{"line_number":105,"context_line":"            hdr_obj_count\u003d\u00273\u0027,"},{"line_number":106,"context_line":"            hdr_bytes\u003d\u002716\u0027,"},{"line_number":107,"context_line":"            cont_count\u003d3,"},{"line_number":108,"context_line":"            cont_bytes\u003d16)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_51eac60d","line":107,"range":{"start_line":107,"start_character":23,"end_line":107,"end_character":24},"updated":"2020-01-07 22:01:45.000000000","message":"Wait, what? I expected this to be 0...","commit_id":"5460dec7ce6f1f4de999b2ee79bcbe0cb7744da5"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"e7fcd375cf512dec8498eaa4e99b2ab31135ddd5","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            hdr_cont_count\u003d\u00271\u0027,"},{"line_number":105,"context_line":"            hdr_obj_count\u003d\u00273\u0027,"},{"line_number":106,"context_line":"            hdr_bytes\u003d\u002716\u0027,"},{"line_number":107,"context_line":"            cont_count\u003d3,"},{"line_number":108,"context_line":"            cont_bytes\u003d16)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_d176b63f","line":107,"range":{"start_line":107,"start_character":23,"end_line":107,"end_character":24},"in_reply_to":"3fa7e38b_51eac60d","updated":"2020-01-07 22:24:20.000000000","message":"it\u0027s really a listing of the hidden container at this point[1], so it has 2 versions + delete marker, maybe we need to update cont to be 0 to be consistent with normal operations\n\n[1] - https://review.opendev.org/#/c/682382/68/swift/common/middleware/versioned_writes/object_versioning.py@1390","commit_id":"5460dec7ce6f1f4de999b2ee79bcbe0cb7744da5"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c0715ce8c4b8a9e8bcce4fff3778ba474256498f","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            hdr_cont_count\u003d\u00271\u0027,"},{"line_number":105,"context_line":"            hdr_obj_count\u003d\u00273\u0027,"},{"line_number":106,"context_line":"            hdr_bytes\u003d\u002716\u0027,"},{"line_number":107,"context_line":"            cont_count\u003d3,"},{"line_number":108,"context_line":"            cont_bytes\u003d16)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_31938a02","line":107,"range":{"start_line":107,"start_character":23,"end_line":107,"end_character":24},"in_reply_to":"3fa7e38b_d176b63f","updated":"2020-01-07 22:48:31.000000000","message":"Oh! It\u0027s a count of the *objects*, not the *number of containers* in the response! Ignore me, I\u0027m being dumb.\n\nPlus, my expectation should have still been 1, anyway ;-)","commit_id":"5460dec7ce6f1f4de999b2ee79bcbe0cb7744da5"}]}
