)]}'
{"test/probe/test_reconstructor_revert.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"4436a684c6787dab707b5e64c274e553beb78791","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        self.assertEqual(etag, self.proxy_get())"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        # attempt to reconstruct via the primary node"},{"line_number":397,"context_line":"        self.reconstructor.once(number\u003dself.config_number(primary_node))"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        # find a handoff holding the fragment"},{"line_number":400,"context_line":"        for hnode in self.object_ring.get_more_nodes(opart):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_b903fabd","line":397,"updated":"2015-07-30 23:45:50.000000000","message":"I don\u0027t understand why we do this here.\n\nSometimes this will find the handoff fragment and move it onto the fixed primary device.\n\nSometimes this will find nothing and do nothing.\n\n... depending on which node had the handoff.\n\nHow does either of this situations validate the behavior when partner primary tries to rebuild a frag but discovers it on another primary.","commit_id":"dc250d9d6e34fa844c785d7ebbd3ccb5f428efc4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9f12704aa7fc41ad9a502f47dddcced83e9b1f63","unresolved":false,"context_lines":[{"line_number":379,"context_line":"            self.fail(\u0027ring balancing did not use all available nodes\u0027)"},{"line_number":380,"context_line":"        primary_node \u003d node_list[0]"},{"line_number":381,"context_line":"        primary_device \u003d self.device_dir(\u0027object\u0027, primary_node)"},{"line_number":382,"context_line":"        partner_primary \u003d onodes[1]"},{"line_number":383,"context_line":"        partner_primary_device \u003d self.device_dir(\u0027object\u0027, partner_primary)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        # 507 the device"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_0201f9ae","line":382,"updated":"2015-08-25 22:05:49.000000000","message":"my gut tells me that sometimes onodes[1] will be the same as node_list[0]...","commit_id":"f94b6b52b238d925413f086dbbd073f6443a0341"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9f12704aa7fc41ad9a502f47dddcced83e9b1f63","unresolved":false,"context_lines":[{"line_number":409,"context_line":"            self.fail(\u0027Unable to find handoff fragment!\u0027)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        # Imagine that a ring rebalance occured here"},{"line_number":412,"context_line":"        shutil.move(hpart_dir, partner_primary_device)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        # revert from partner primary device with reconstructor"},{"line_number":415,"context_line":"        self.reconstructor.once(number\u003dself.config_number(partner_primary))"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_c2d46121","line":412,"updated":"2015-08-25 22:05:49.000000000","message":"does this overwrite the part dir on the partner_primary_device?","commit_id":"f94b6b52b238d925413f086dbbd073f6443a0341"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9f12704aa7fc41ad9a502f47dddcced83e9b1f63","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        shutil.move(hpart_dir, partner_primary_device)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        # revert from partner primary device with reconstructor"},{"line_number":415,"context_line":"        self.reconstructor.once(number\u003dself.config_number(partner_primary))"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        # verify fragment reverted to primary server"},{"line_number":418,"context_line":"        self.assertEqual(reverted_fragment_etag,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_62cd5584","line":415,"updated":"2015-08-25 22:05:49.000000000","message":"so here a primary has the wrong frag_index on it - so it will just pick it up and move it to the correct pimary (the one that was down during the put)","commit_id":"f94b6b52b238d925413f086dbbd073f6443a0341"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9f12704aa7fc41ad9a502f47dddcced83e9b1f63","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        # verify fragment reverted to primary server"},{"line_number":418,"context_line":"        self.assertEqual(reverted_fragment_etag,"},{"line_number":419,"context_line":"                         self.direct_get(primary_node, opart))"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"if __name__ \u003d\u003d \"__main__\":"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_22c3dd58","line":419,"updated":"2015-08-25 22:05:49.000000000","message":"and it moved it!\n\n... wait was that the behavior we were trying to see?","commit_id":"f94b6b52b238d925413f086dbbd073f6443a0341"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"cfeb250725f1b971e1a6f5a4690599970d638d40","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            if len(node_list) \u003d\u003d 1:"},{"line_number":378,"context_line":"                break"},{"line_number":379,"context_line":"        else:"},{"line_number":380,"context_line":"            self.fail(\u0027ring balancing did not use all available nodes\u0027)"},{"line_number":381,"context_line":"        primary_node \u003d node_list[0]"},{"line_number":382,"context_line":"        primary_device \u003d self.device_dir(\u0027object\u0027, primary_node)"},{"line_number":383,"context_line":"        partner_primary \u003d onodes[1]"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_451f8db7","line":380,"updated":"2015-09-01 16:20:37.000000000","message":"so in neither case did the group_nodes_by_config end up being useful?  Do the tests still pass reliably?  I wonder why it doesn\u0027t matter if the selected primary server has more than one device with a part-replica assigned to it?","commit_id":"1567a6e39969d29c38976cbbdfa76973d7d73200"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"cf904aa3e050f84904e40585bce2f0758ab6b77b","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            if len(node_list) \u003d\u003d 1:"},{"line_number":378,"context_line":"                break"},{"line_number":379,"context_line":"        else:"},{"line_number":380,"context_line":"            self.fail(\u0027ring balancing did not use all available nodes\u0027)"},{"line_number":381,"context_line":"        primary_node \u003d node_list[0]"},{"line_number":382,"context_line":"        primary_device \u003d self.device_dir(\u0027object\u0027, primary_node)"},{"line_number":383,"context_line":"        partner_primary \u003d onodes[1]"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_cae3a104","line":380,"in_reply_to":"da20952f_451f8db7","updated":"2015-09-01 18:53:58.000000000","message":"oops - i missed that node_list was being selected from the loop - i read:\n\n    primary_node \u003d node_list[0]\n\nas\n\n    primary_node \u003d onodes[0]\n\n... my mistake.  That\u0027s what I get for looking at reviews on phone.  And also for putting in this pattern in the first place.  I suck.","commit_id":"1567a6e39969d29c38976cbbdfa76973d7d73200"}]}
