)]}'
{"swift/container/reconciler.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"13bc72b1d2ca811186d443b506558c93ad16bc93","unresolved":true,"context_lines":[{"line_number":43,"context_line":"    You have to squint to see it, but the general strategy is just:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    if either has been recreated:"},{"line_number":46,"context_line":"        return the newest (of the recreated)"},{"line_number":47,"context_line":"    else"},{"line_number":48,"context_line":"        return the oldest"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5483f5cf_c53b3904","side":"PARENT","line":46,"updated":"2021-11-12 17:44:02.000000000","message":"the assumption here was if you did a PUT0 DELETE0 PUT1 DELETE1 PUT2 and r1 missed DELETE1 it\u0027s SPI from PUT1 would be trumped by PUT2 i.e. the newest re-creation\n\nthe test shows PUT0 DELETE0 PUT1 PUT2 and lacking the DELETE1 on any node - we *should* reject PUT2","commit_id":"27478f07c3f45067a2644140b7da2b356ca9ac60"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"13bc72b1d2ca811186d443b506558c93ad16bc93","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        elif not remote_recreated:"},{"line_number":89,"context_line":"            return -1"},{"line_number":90,"context_line":"        return cmp(remote_info[\u0027status_changed_at\u0027],"},{"line_number":91,"context_line":"                   info[\u0027status_changed_at\u0027])"},{"line_number":92,"context_line":"    return cmp(info[\u0027status_changed_at\u0027], remote_info[\u0027status_changed_at\u0027])"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"e95a64fb_6b979fdf","side":"PARENT","line":91,"updated":"2021-11-12 17:44:02.000000000","message":"oddly, flipping these around cmp(info, remote_info) fixes the new test and doesn\u0027t break any others.\n\nthis is apparently not a well tested (i.e. understood) conditional branch","commit_id":"27478f07c3f45067a2644140b7da2b356ca9ac60"}],"test/unit/container/test_reconciler.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"13bc72b1d2ca811186d443b506558c93ad16bc93","unresolved":true,"context_lines":[{"line_number":592,"context_line":"            responses.append(req.get_response(controller))"},{"line_number":593,"context_line":"        # note: 409 from replica 0 because PUT follows previous PUT"},{"line_number":594,"context_line":"        self.assertEqual([resp.status_int for resp in responses],"},{"line_number":595,"context_line":"                         [409, 201])"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        # now do a HEAD on all replicas"},{"line_number":598,"context_line":"        responses \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"d030cdb4_ef84ad91","line":595,"updated":"2021-11-12 17:44:02.000000000","message":"this is an interesting case - I don\u0027t think I\u0027d considered a deleted container get recreated before it was revivified by replication.  I think all nodes would eventually settle on SPI2, which probably isn\u0027t what we want.","commit_id":"d40a2a6bb4c140240ea65318a846cbfd3970f886"}]}
