)]}'
{"swift/common/ring/builder.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0b522b67e40349fe3af68efe709cc97f36011fc9","unresolved":false,"context_lines":[{"line_number":1139,"context_line":"            overweight_dev_replica.sort("},{"line_number":1140,"context_line":"                key\u003dlambda dr: dr[0][\u0027parts_wanted\u0027])"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"            dev, replica \u003d overweight_dev_replica[0]"},{"line_number":1143,"context_line":"            # this is the most overweight_device holding a replica of this"},{"line_number":1144,"context_line":"            # part we don\u0027t know where it\u0027s going to end up - but we\u0027ll"},{"line_number":1145,"context_line":"            # pick it up and hope for the best."}],"source_content_type":"text/x-python","patch_set":3,"id":"7a3c09a3_de3663e6","line":1142,"updated":"2017-01-16 15:04:39.000000000","message":"ok, we can\u0027t get past line 1137 if overweight_dev_replica is empty","commit_id":"bbefaca2ef4103e99ff614a03bdb3315d87aa2fa"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0b522b67e40349fe3af68efe709cc97f36011fc9","unresolved":false,"context_lines":[{"line_number":1150,"context_line":"                \"Gathered %d/%d from dev %d [weight forced]\","},{"line_number":1151,"context_line":"                part, replica, dev[\u0027id\u0027])"},{"line_number":1152,"context_line":"            self._replica2part2dev[replica][part] \u003d NONE_DEV"},{"line_number":1153,"context_line":"            self._set_part_moved(part)"},{"line_number":1154,"context_line":""},{"line_number":1155,"context_line":"    def _reassign_parts(self, reassign_parts, replica_plan):"},{"line_number":1156,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a3c09a3_1bef1db1","line":1153,"updated":"2017-01-16 15:04:39.000000000","message":"yep, makes sense wrt change made here https://review.openstack.org/#/c/419107/2/swift/common/ring/builder.py\n\nbefore that _set_part_moved will cause can_part_move to be false so effectively the loop breaks after dev, replica always.","commit_id":"bbefaca2ef4103e99ff614a03bdb3315d87aa2fa"}],"test/unit/common/ring/test_builder.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0b522b67e40349fe3af68efe709cc97f36011fc9","unresolved":false,"context_lines":[{"line_number":743,"context_line":"        }"},{"line_number":744,"context_line":"        self.assertEqual(zone_histogram, expected)"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        # After rebalancing one more times, we expect that everything is in a"},{"line_number":747,"context_line":"        # good state"},{"line_number":748,"context_line":"        rb.rebalance(seed\u003d3)"},{"line_number":749,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a3c09a3_3bbbf9e6","line":746,"updated":"2017-01-16 15:04:39.000000000","message":"yep, changed here https://review.openstack.org/#/c/419107/2/test/unit/common/ring/test_builder.py","commit_id":"bbefaca2ef4103e99ff614a03bdb3315d87aa2fa"}]}
