)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"a7be6420af08e3935ca6fd30bfe8ebf9b0a955e4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"left over from the related change."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Also drive-by optimization to free some memory in the part move bitmap"},{"line_number":24,"context_line":"as soon as we\u0027re done with it."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Related-Change: Ia1629abd5ce6e1b3acc2e94f818ed8223eed993a"},{"line_number":27,"context_line":"Change-Id: Ia6c64ff4ff293cca362388b55818d0662ba010aa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f201791_c197ec39","line":24,"updated":"2017-06-27 19:37:33.000000000","message":"Tim Burke had pointed out this change is doing two things.  We might want to break them up and merge them separately.","commit_id":"d9b7cd6b2ae8ae2abbc4e3835789fcc1244f1bc1"}],"swift/common/ring/builder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"a7be6420af08e3935ca6fd30bfe8ebf9b0a955e4","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def _set_part_moved(self, part):"},{"line_number":131,"context_line":"        self._last_part_moves[part] \u003d 0"},{"line_number":132,"context_line":"        byte, bit \u003d divmod(part, 8)"},{"line_number":133,"context_line":"        self._part_moved_bitmap[byte] |\u003d (128 \u003e\u003e bit)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def _has_part_moved(self, part):"},{"line_number":136,"context_line":"        byte, bit \u003d divmod(part, 8)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f201791_214220ac","line":133,"updated":"2017-06-27 19:37:33.000000000","message":"if we kept a boolean `is_initial_rebalance` around we could maybe have a speical case in here...","commit_id":"d9b7cd6b2ae8ae2abbc4e3835789fcc1244f1bc1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"a7be6420af08e3935ca6fd30bfe8ebf9b0a955e4","unresolved":false,"context_lines":[{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"        for part, replace_replicas in reassign_parts:"},{"line_number":1233,"context_line":"            # always update part_moves, even on initial balance"},{"line_number":1234,"context_line":"            self._set_part_moved(part)"},{"line_number":1235,"context_line":"            # count up where these replicas be"},{"line_number":1236,"context_line":"            replicas_at_tier \u003d defaultdict(int)"},{"line_number":1237,"context_line":"            for dev in self._devs_for_part(part):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f201791_c1fecc69","line":1234,"updated":"2017-06-27 19:37:33.000000000","message":"if we *always* set part moves on gather - perhaps we could just *remove* this line?  It doesn\u0027t *really* matter how many times we reassign parts on the initial placement.\n\nI hadn\u0027t intended to make initial rebalance worse so much as make how we we tracked moved parts consistent.","commit_id":"d9b7cd6b2ae8ae2abbc4e3835789fcc1244f1bc1"}],"test/unit/common/ring/test_utils.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"a7be6420af08e3935ca6fd30bfe8ebf9b0a955e4","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        part_replicas_moved \u003d rb.rebalance(seed\u003d100)[0]"},{"line_number":628,"context_line":"        self.assertEqual(part_replicas_moved, 51)"},{"line_number":629,"context_line":"        rb.validate()"},{"line_number":630,"context_line":"        self.assertEqual(rb.get_balance(), 1.5625)"},{"line_number":631,"context_line":"        self.assertEqual(rb.dispersion, 39.84375)"},{"line_number":632,"context_line":"        # ... seriously, that\u0027s it tho"},{"line_number":633,"context_line":"        part_replicas_moved \u003d rb.rebalance(seed\u003d100)[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f201791_61c93857","line":630,"updated":"2017-06-27 19:37:33.000000000","message":"Tim Burke expressed some concerns about how poorly this ring performs on initial balance.  In the entire test suite it was the only one affected that we noticed, but it made a big difference.\n\nPerhaps this is an example of why it might be worth it to carry the special case for initial placement.","commit_id":"d9b7cd6b2ae8ae2abbc4e3835789fcc1244f1bc1"}]}
