)]}'
{"swift/common/utils.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":4856,"context_line":"        self.state \u003d self.FOUND if state is None else state"},{"line_number":4857,"context_line":"        self.state_timestamp \u003d state_timestamp"},{"line_number":4858,"context_line":"        self.epoch \u003d epoch"},{"line_number":4859,"context_line":"        self.reported \u003d reported"},{"line_number":4860,"context_line":""},{"line_number":4861,"context_line":"    @classmethod"},{"line_number":4862,"context_line":"    def _encode(cls, value):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_6a13b669","line":4859,"updated":"2020-02-06 21:54:05.000000000","message":"for some reason I was expecting self._reported instead of going through our setter","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":5129,"context_line":"    def reported(self, value):"},{"line_number":5130,"context_line":"        self._reported \u003d bool(value)"},{"line_number":5131,"context_line":""},{"line_number":5132,"context_line":"    def update_state(self, state, state_timestamp\u003dNone):"},{"line_number":5133,"context_line":"        \"\"\""},{"line_number":5134,"context_line":"        Set state to the given value and optionally update the state_timestamp"},{"line_number":5135,"context_line":"        to the given time."}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_cafbca13","line":5132,"updated":"2020-02-06 21:54:05.000000000","message":"so this is called a few places in the sharder to change the shard state to shrinking, sharderd, cleaved, etc","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":5141,"context_line":"            otherwise"},{"line_number":5142,"context_line":"        \"\"\""},{"line_number":5143,"context_line":"        if state_timestamp is None and self.state \u003d\u003d state:"},{"line_number":5144,"context_line":"            return False"},{"line_number":5145,"context_line":"        self.state \u003d state"},{"line_number":5146,"context_line":"        if state_timestamp is not None:"},{"line_number":5147,"context_line":"            self.state_timestamp \u003d state_timestamp"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_b13fccdd","line":5144,"updated":"2020-02-06 21:54:05.000000000","message":"and it only resets reported if the state actually *changes*","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":5145,"context_line":"        self.state \u003d state"},{"line_number":5146,"context_line":"        if state_timestamp is not None:"},{"line_number":5147,"context_line":"            self.state_timestamp \u003d state_timestamp"},{"line_number":5148,"context_line":"        self.reported \u003d False"},{"line_number":5149,"context_line":"        return True"},{"line_number":5150,"context_line":""},{"line_number":5151,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_5123f8bb","line":5148,"updated":"2020-02-06 21:54:05.000000000","message":"but this is only in memory, we only do a write back in merge_shard_ranges","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"d368c225f55c796678f09281afbb7d622df15b37","unresolved":false,"context_lines":[{"line_number":5145,"context_line":"        self.state \u003d state"},{"line_number":5146,"context_line":"        if state_timestamp is not None:"},{"line_number":5147,"context_line":"            self.state_timestamp \u003d state_timestamp"},{"line_number":5148,"context_line":"        self.reported \u003d False"},{"line_number":5149,"context_line":"        return True"},{"line_number":5150,"context_line":""},{"line_number":5151,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_de3b2035","line":5148,"in_reply_to":"3fa7e38b_5123f8bb","updated":"2020-06-03 05:18:01.000000000","message":"yeah at this point the whole class is used to track state in memory. Then then we write it back to the broker through merge_shard_ranges. Changing the state here isn\u0027t doing anything on disk. That happens in the broker\u0027s state change functions.","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"}],"swift/container/backend.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"bd1695ae2dbbc72f17228e420e1c03af094c751a","unresolved":false,"context_lines":[{"line_number":1596,"context_line":"            CONTAINER_STAT_VIEW_SCRIPT +"},{"line_number":1597,"context_line":"            \u0027COMMIT;\u0027)"},{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"    def _migrate_add_shard_range_reported(self, conn):"},{"line_number":1600,"context_line":"        \"\"\""},{"line_number":1601,"context_line":"        Add the reported column to the \u0027shard_range\u0027 table."},{"line_number":1602,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_940c90ec","line":1599,"updated":"2019-10-15 22:28:10.000000000","message":"Since there\u0027s a migration, we need to touch test/unit/container/test_backend.py to add another class like TestContainerBrokerBeforeShardRangeReportedColumn.","commit_id":"333431e3cb1d2e106db9a2ef89bc335543f30718"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":61,"context_line":"# tuples and vice-versa"},{"line_number":62,"context_line":"SHARD_RANGE_KEYS \u003d (\u0027name\u0027, \u0027timestamp\u0027, \u0027lower\u0027, \u0027upper\u0027, \u0027object_count\u0027,"},{"line_number":63,"context_line":"                    \u0027bytes_used\u0027, \u0027meta_timestamp\u0027, \u0027deleted\u0027, \u0027state\u0027,"},{"line_number":64,"context_line":"                    \u0027state_timestamp\u0027, \u0027epoch\u0027, \u0027reported\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"POLICY_STAT_TABLE_CREATE \u003d \u0027\u0027\u0027"},{"line_number":67,"context_line":"    CREATE TABLE policy_stat ("}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_fc219ba2","line":64,"updated":"2020-02-06 21:54:05.000000000","message":"so this is used in the sql args when selecting from the shard ranges table","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":281,"context_line":"    # now we need to look for meta data updates"},{"line_number":282,"context_line":"    if existing[\u0027meta_timestamp\u0027] \u003e\u003d shard_data[\u0027meta_timestamp\u0027]:"},{"line_number":283,"context_line":"        for k in (\u0027object_count\u0027, \u0027bytes_used\u0027, \u0027meta_timestamp\u0027):"},{"line_number":284,"context_line":"            shard_data[k] \u003d existing[k]"},{"line_number":285,"context_line":"    else:"},{"line_number":286,"context_line":"        new_content \u003d True"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_9cbae709","line":284,"updated":"2020-02-06 21:54:05.000000000","message":"so below, if the existing meta_timestamp is \u003e we expect count and bytes to be the same...","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"d368c225f55c796678f09281afbb7d622df15b37","unresolved":false,"context_lines":[{"line_number":281,"context_line":"    # now we need to look for meta data updates"},{"line_number":282,"context_line":"    if existing[\u0027meta_timestamp\u0027] \u003e\u003d shard_data[\u0027meta_timestamp\u0027]:"},{"line_number":283,"context_line":"        for k in (\u0027object_count\u0027, \u0027bytes_used\u0027, \u0027meta_timestamp\u0027):"},{"line_number":284,"context_line":"            shard_data[k] \u003d existing[k]"},{"line_number":285,"context_line":"    else:"},{"line_number":286,"context_line":"        new_content \u003d True"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_fe88a4c6","line":284,"in_reply_to":"3fa7e38b_9cbae709","updated":"2020-06-03 05:18:01.000000000","message":"If the existing meta_timestamp is \u003e then it\u0027s got newer metadata values, so we use those.\n\nBelow, if they then happen to be the same we can safely mark this shard as reported as the data is current and has already updated. If they aren\u0027t the same then don\u0027t latch it so the SR with newer meta is updated to the root.","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            existing[\u0027bytes_used\u0027] \u003d\u003d shard_data[\u0027bytes_used\u0027] and \\"},{"line_number":292,"context_line":"            existing[\u0027state\u0027] \u003d\u003d shard_data[\u0027state\u0027] and \\"},{"line_number":293,"context_line":"            existing[\u0027epoch\u0027] \u003d\u003d shard_data[\u0027epoch\u0027]:"},{"line_number":294,"context_line":"        shard_data[\u0027reported\u0027] \u003d 1"},{"line_number":295,"context_line":"    else:"},{"line_number":296,"context_line":"        shard_data.setdefault(\u0027reported\u0027, 0)"},{"line_number":297,"context_line":"        if shard_data[\u0027reported\u0027] and not existing[\u0027reported\u0027]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_9ca3c7fd","line":294,"updated":"2020-02-06 21:54:05.000000000","message":"I\u0027m confused we force new row to \"reported\" even if we\u0027ve never reported it - e.g. maybe we\u0027re receiving this row via replication?","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"04c4e26e697ba3e18ba3b454dbbed90536593cf8","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            existing[\u0027bytes_used\u0027] \u003d\u003d shard_data[\u0027bytes_used\u0027] and \\"},{"line_number":292,"context_line":"            existing[\u0027state\u0027] \u003d\u003d shard_data[\u0027state\u0027] and \\"},{"line_number":293,"context_line":"            existing[\u0027epoch\u0027] \u003d\u003d shard_data[\u0027epoch\u0027]:"},{"line_number":294,"context_line":"        shard_data[\u0027reported\u0027] \u003d 1"},{"line_number":295,"context_line":"    else:"},{"line_number":296,"context_line":"        shard_data.setdefault(\u0027reported\u0027, 0)"},{"line_number":297,"context_line":"        if shard_data[\u0027reported\u0027] and not existing[\u0027reported\u0027]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_e9e23c36","line":294,"in_reply_to":"3fa7e38b_9ca3c7fd","updated":"2020-02-06 23:49:07.000000000","message":"Or we\u0027re merging in a shard range record fetched from the root, as I recall. It\u0027s been a bit, but I don\u0027t think I have the reported flag in get-shard-ranges responses (since I\u0027m not certain that it\u0027d be appropriate for anyone to consume other than the server that set it).","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"d368c225f55c796678f09281afbb7d622df15b37","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            existing[\u0027bytes_used\u0027] \u003d\u003d shard_data[\u0027bytes_used\u0027] and \\"},{"line_number":292,"context_line":"            existing[\u0027state\u0027] \u003d\u003d shard_data[\u0027state\u0027] and \\"},{"line_number":293,"context_line":"            existing[\u0027epoch\u0027] \u003d\u003d shard_data[\u0027epoch\u0027]:"},{"line_number":294,"context_line":"        shard_data[\u0027reported\u0027] \u003d 1"},{"line_number":295,"context_line":"    else:"},{"line_number":296,"context_line":"        shard_data.setdefault(\u0027reported\u0027, 0)"},{"line_number":297,"context_line":"        if shard_data[\u0027reported\u0027] and not existing[\u0027reported\u0027]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_7e31340b","line":294,"in_reply_to":"3fa7e38b_e9e23c36","updated":"2020-06-03 05:18:01.000000000","message":"Seeing as we are using:\n\n  if existing[\u0027reported\u0027] and \\...\n\nThen this only matches if the existing has been reported and the counts haven\u0027t changed (and therefore no point in reporting the change in meta_timestamp). \nWe could probably do:\n\n shard_data[\u0027reported\u0027] \u003d existing[\u0027reported\u0027]\n\nBut being specific is fine I guess.","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":610,"context_line":"                state INTEGER,"},{"line_number":611,"context_line":"                state_timestamp TEXT,"},{"line_number":612,"context_line":"                epoch TEXT,"},{"line_number":613,"context_line":"                reported INTEGER DEFAULT 0"},{"line_number":614,"context_line":"            );"},{"line_number":615,"context_line":"        \"\"\" % SHARD_RANGE_TABLE)"},{"line_number":616,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_af430040","line":613,"updated":"2020-02-06 21:54:05.000000000","message":"I think this is the only way we create the shard range table, so we should be good here","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":1447,"context_line":"                    self._migrate_add_shard_range_reported(conn)"},{"line_number":1448,"context_line":"                    return _really_merge_items(conn)"},{"line_number":1449,"context_line":"                if (\u0027no such table: %s\u0027 % SHARD_RANGE_TABLE) in str(err):"},{"line_number":1450,"context_line":"                    self.create_shard_range_table(conn)"},{"line_number":1451,"context_line":"                    return _really_merge_items(conn)"},{"line_number":1452,"context_line":"                raise"},{"line_number":1453,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_0f3574d3","line":1450,"updated":"2020-02-06 21:54:05.000000000","message":"and it looks like this will *also* create the reported column","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":1606,"context_line":"            ALTER TABLE %s"},{"line_number":1607,"context_line":"            ADD COLUMN reported INTEGER DEFAULT 0;"},{"line_number":1608,"context_line":"            COMMIT;"},{"line_number":1609,"context_line":"        \u0027\u0027\u0027 % SHARD_RANGE_TABLE)"},{"line_number":1610,"context_line":""},{"line_number":1611,"context_line":"    def _reclaim(self, conn, age_timestamp, sync_timestamp):"},{"line_number":1612,"context_line":"        super(ContainerBroker, self)._reclaim(conn, age_timestamp,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_ef6258da","line":1609,"updated":"2020-02-06 21:54:05.000000000","message":"this looks a lot like _migrate_add_container_sync_points - WFM!","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":1657,"context_line":"        elif states is not None:"},{"line_number":1658,"context_line":"            included_states.add(states)"},{"line_number":1659,"context_line":""},{"line_number":1660,"context_line":"        def do_query(conn, use_reported_column\u003dTrue):"},{"line_number":1661,"context_line":"            condition \u003d \u0027\u0027"},{"line_number":1662,"context_line":"            conditions \u003d []"},{"line_number":1663,"context_line":"            params \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_aa1a0ec4","line":1660,"updated":"2020-02-06 21:54:05.000000000","message":"interesting... i guess sometimes we do reads where we don\u0027t need this column and don\u0027t want to trigger a migration.\n\nI\u0027m not sure where yet tho.","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"04c4e26e697ba3e18ba3b454dbbed90536593cf8","unresolved":false,"context_lines":[{"line_number":1657,"context_line":"        elif states is not None:"},{"line_number":1658,"context_line":"            included_states.add(states)"},{"line_number":1659,"context_line":""},{"line_number":1660,"context_line":"        def do_query(conn, use_reported_column\u003dTrue):"},{"line_number":1661,"context_line":"            condition \u003d \u0027\u0027"},{"line_number":1662,"context_line":"            conditions \u003d []"},{"line_number":1663,"context_line":"            params \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_69d64c57","line":1660,"in_reply_to":"3fa7e38b_aa1a0ec4","updated":"2020-02-06 23:49:07.000000000","message":"container-server, pretty sure. Didn\u0027t want a GET to the root container to trigger a migration.","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"}],"swift/container/sharder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":608,"context_line":"    def _send_shard_ranges(self, account, container, shard_ranges,"},{"line_number":609,"context_line":"                           headers\u003dNone):"},{"line_number":610,"context_line":"        body \u003d json.dumps([dict(sr, reported\u003d0)"},{"line_number":611,"context_line":"                           for sr in shard_ranges]).encode(\u0027ascii\u0027)"},{"line_number":612,"context_line":"        part, nodes \u003d self.ring.get_nodes(account, container)"},{"line_number":613,"context_line":"        headers \u003d headers or {}"},{"line_number":614,"context_line":"        headers.update({\u0027X-Backend-Record-Type\u0027: RECORD_TYPE_SHARD,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_0a548222","line":611,"updated":"2020-02-06 21:54:05.000000000","message":"so here we\u0027re clearing about the reported value in our own table as we sync?","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":1439,"context_line":""},{"line_number":1440,"context_line":"    def _update_root_container(self, broker):"},{"line_number":1441,"context_line":"        own_shard_range \u003d broker.get_own_shard_range(no_default\u003dTrue)"},{"line_number":1442,"context_line":"        if not own_shard_range or own_shard_range.reported:"},{"line_number":1443,"context_line":"            return"},{"line_number":1444,"context_line":""},{"line_number":1445,"context_line":"        # persist the reported shard metadata"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_ea1d6678","line":1442,"updated":"2020-02-06 21:54:05.000000000","message":"so here\u0027s the shortcut to skip if reported - i can see we clear the flag when we change state and also in merge_shard_ranges I guess","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":1451,"context_line":"        # send everything"},{"line_number":1452,"context_line":"        self._send_shard_ranges("},{"line_number":1453,"context_line":"            broker.root_account, broker.root_container,"},{"line_number":1454,"context_line":"            shard_ranges)"},{"line_number":1455,"context_line":"        # mark ourselves as reported so we don\u0027t keep hammering the root"},{"line_number":1456,"context_line":"        own_shard_range.reported \u003d True"},{"line_number":1457,"context_line":"        broker.merge_shard_ranges(own_shard_range)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_dc805ff9","line":1454,"updated":"2020-02-06 21:54:05.000000000","message":"I think this *does* send to all replicas, but it fail and not return success, maybe we should only mark ourselves are reported on success?","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"04c4e26e697ba3e18ba3b454dbbed90536593cf8","unresolved":false,"context_lines":[{"line_number":1451,"context_line":"        # send everything"},{"line_number":1452,"context_line":"        self._send_shard_ranges("},{"line_number":1453,"context_line":"            broker.root_account, broker.root_container,"},{"line_number":1454,"context_line":"            shard_ranges)"},{"line_number":1455,"context_line":"        # mark ourselves as reported so we don\u0027t keep hammering the root"},{"line_number":1456,"context_line":"        own_shard_range.reported \u003d True"},{"line_number":1457,"context_line":"        broker.merge_shard_ranges(own_shard_range)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_69bf2cfd","line":1454,"in_reply_to":"3fa7e38b_dc805ff9","updated":"2020-02-06 23:49:07.000000000","message":"Absolutely; will re-spin. I think maybe I didn\u0027t notice how _send_shard_ranges returns True/False depending on whether we reached quorum.","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":1453,"context_line":"            broker.root_account, broker.root_container,"},{"line_number":1454,"context_line":"            shard_ranges)"},{"line_number":1455,"context_line":"        # mark ourselves as reported so we don\u0027t keep hammering the root"},{"line_number":1456,"context_line":"        own_shard_range.reported \u003d True"},{"line_number":1457,"context_line":"        broker.merge_shard_ranges(own_shard_range)"},{"line_number":1458,"context_line":""},{"line_number":1459,"context_line":"    def _process_broker(self, broker, node, part):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_6a2ad697","line":1456,"updated":"2020-02-06 21:54:05.000000000","message":"so every row has reported, but only ours ever gets reported","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"04c4e26e697ba3e18ba3b454dbbed90536593cf8","unresolved":false,"context_lines":[{"line_number":1453,"context_line":"            broker.root_account, broker.root_container,"},{"line_number":1454,"context_line":"            shard_ranges)"},{"line_number":1455,"context_line":"        # mark ourselves as reported so we don\u0027t keep hammering the root"},{"line_number":1456,"context_line":"        own_shard_range.reported \u003d True"},{"line_number":1457,"context_line":"        broker.merge_shard_ranges(own_shard_range)"},{"line_number":1458,"context_line":""},{"line_number":1459,"context_line":"    def _process_broker(self, broker, node, part):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_c93d008e","line":1456,"in_reply_to":"3fa7e38b_6a2ad697","updated":"2020-02-06 23:49:07.000000000","message":"Way I figure it, we\u0027re only responsible for our own.","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"54a2eeab7e5674144b0c2ec16887351f4cdab159","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"            shard_ranges)"},{"line_number":1455,"context_line":"        # mark ourselves as reported so we don\u0027t keep hammering the root"},{"line_number":1456,"context_line":"        own_shard_range.reported \u003d True"},{"line_number":1457,"context_line":"        broker.merge_shard_ranges(own_shard_range)"},{"line_number":1458,"context_line":""},{"line_number":1459,"context_line":"    def _process_broker(self, broker, node, part):"},{"line_number":1460,"context_line":"        broker.get_info()  # make sure account/container are populated"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_5cf78fd2","line":1457,"updated":"2020-02-06 21:54:05.000000000","message":"i guess we have to do this through merge because it\u0027s a no update table...","commit_id":"a3c55f05a7c8dc75b61147ecdc7362750654105c"}]}
