)]}'
{"swift/container/backend.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"df31f61a9df7807b21c311f151619f30483b6e96","unresolved":false,"context_lines":[{"line_number":1023,"context_line":"            return results"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    # TODO: needs unit test"},{"line_number":1026,"context_line":"    def get_objects(self, limit, marker, end_marker, prefix\u003d\u0027\u0027, delimiter\u003d\u0027\u0027,"},{"line_number":1027,"context_line":"                    path\u003dNone, storage_policy_index\u003d0, reverse\u003dFalse,"},{"line_number":1028,"context_line":"                    include_deleted\u003dFalse):"},{"line_number":1029,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_e3b70b86","line":1026,"updated":"2018-02-08 23:40:50.000000000","message":"I wonder at what point we\u0027ll find ourselves wanting to default limit, marker, and end_marker, too...","commit_id":"aad77ae4817a5aa37da6e7610d428d56f30d329f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"44170e6b635b4eb6b0ae5648befe8f10326e053c","unresolved":false,"context_lines":[{"line_number":1023,"context_line":"            return results"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    # TODO: needs unit test"},{"line_number":1026,"context_line":"    def get_objects(self, limit, marker, end_marker, prefix\u003d\u0027\u0027, delimiter\u003d\u0027\u0027,"},{"line_number":1027,"context_line":"                    path\u003dNone, storage_policy_index\u003d0, reverse\u003dFalse,"},{"line_number":1028,"context_line":"                    include_deleted\u003dFalse):"},{"line_number":1029,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_25111fad","line":1026,"in_reply_to":"3fa0c359_e3b70b86","updated":"2018-02-20 11:46:40.000000000","message":"agree, although at the moment this only has one call site, so might disappear","commit_id":"aad77ae4817a5aa37da6e7610d428d56f30d329f"}],"swift/container/sharder.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"df31f61a9df7807b21c311f151619f30483b6e96","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        broker.get_info()"},{"line_number":219,"context_line":"        return part, broker, node[\u0027id\u0027]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def _add_shard_metadata(self, broker, root_path, shard_range, force\u003dFalse):"},{"line_number":222,"context_line":"        if not get_sharding_info(broker, \u0027Root\u0027) and shard_range or force:"},{"line_number":223,"context_line":"            update_sharding_info("},{"line_number":224,"context_line":"                broker,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_469fd102","side":"PARENT","line":221,"updated":"2018-02-08 23:40:50.000000000","message":"+1, looks like this was always getting called after getting a shard broker","commit_id":"020ae74b479c579341eaaaab7affea91fcb75056"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"df31f61a9df7807b21c311f151619f30483b6e96","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        queries \u003d []"},{"line_number":256,"context_line":"        policy_index \u003d broker.storage_policy_index"},{"line_number":257,"context_line":"        query \u003d dict(marker\u003d\u0027\u0027, end_marker\u003d\u0027\u0027, prefix\u003d\u0027\u0027, delimiter\u003d\u0027\u0027,"},{"line_number":258,"context_line":"                     storage_policy_index\u003dpolicy_index, include_deleted\u003dTrue)"},{"line_number":259,"context_line":"        # TODO: what about records for objects in the wrong storage policy?"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        if state \u003d\u003d DB_STATE_SHARDED:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_268405b1","side":"PARENT","line":258,"range":{"start_line":258,"start_character":21,"end_line":258,"end_character":41},"updated":"2018-02-08 23:40:50.000000000","message":"Note to self: look for how we handle storage policies above","commit_id":"020ae74b479c579341eaaaab7affea91fcb75056"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"df31f61a9df7807b21c311f151619f30483b6e96","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        pushed out."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        :param shard_range: a :class:`~swift.common.utils.ShardRange`"},{"line_number":199,"context_line":"        :param policy_index: the storage policy index"},{"line_number":200,"context_line":"        :returns: a local shard container broker"},{"line_number":201,"context_line":"        \"\"\""},{"line_number":202,"context_line":"        part \u003d self.ring.get_part(shard_range.account, shard_range.container)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_e6437dae","line":199,"updated":"2018-02-08 23:40:50.000000000","message":"Needs the new params","commit_id":"aad77ae4817a5aa37da6e7610d428d56f30d329f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"44170e6b635b4eb6b0ae5648befe8f10326e053c","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        pushed out."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        :param shard_range: a :class:`~swift.common.utils.ShardRange`"},{"line_number":199,"context_line":"        :param policy_index: the storage policy index"},{"line_number":200,"context_line":"        :returns: a local shard container broker"},{"line_number":201,"context_line":"        \"\"\""},{"line_number":202,"context_line":"        part \u003d self.ring.get_part(shard_range.account, shard_range.container)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_e5d9f7f2","line":199,"in_reply_to":"3fa0c359_e6437dae","updated":"2018-02-20 11:46:40.000000000","message":"Done","commit_id":"aad77ae4817a5aa37da6e7610d428d56f30d329f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"df31f61a9df7807b21c311f151619f30483b6e96","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        if not get_sharding_info(shard_broker, \u0027Root\u0027) or force:"},{"line_number":219,"context_line":"            update_sharding_info("},{"line_number":220,"context_line":"                shard_broker,"},{"line_number":221,"context_line":"                {\u0027Root\u0027: broker.root_path,"},{"line_number":222,"context_line":"                 \u0027Lower\u0027: str(shard_range.lower),"},{"line_number":223,"context_line":"                 \u0027Upper\u0027: str(shard_range.upper),"},{"line_number":224,"context_line":"                 \u0027Timestamp\u0027: shard_range.timestamp.internal,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_a68d7532","line":221,"updated":"2018-02-08 23:40:50.000000000","message":"So we only need broker for the root_path? I wonder if we should just pass *that*... Maybe it\u0027s just me, but I feel like it reads a little strangely to have to pass a broker to something that gets you a broker...","commit_id":"aad77ae4817a5aa37da6e7610d428d56f30d329f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"44170e6b635b4eb6b0ae5648befe8f10326e053c","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        if not get_sharding_info(shard_broker, \u0027Root\u0027) or force:"},{"line_number":219,"context_line":"            update_sharding_info("},{"line_number":220,"context_line":"                shard_broker,"},{"line_number":221,"context_line":"                {\u0027Root\u0027: broker.root_path,"},{"line_number":222,"context_line":"                 \u0027Lower\u0027: str(shard_range.lower),"},{"line_number":223,"context_line":"                 \u0027Upper\u0027: str(shard_range.upper),"},{"line_number":224,"context_line":"                 \u0027Timestamp\u0027: shard_range.timestamp.internal,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_85e2739f","line":221,"in_reply_to":"3fa0c359_a68d7532","updated":"2018-02-20 11:46:40.000000000","message":"Done","commit_id":"aad77ae4817a5aa37da6e7610d428d56f30d329f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"df31f61a9df7807b21c311f151619f30483b6e96","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        :param broker: An instance of :class:`swift.container.ContainerBroker`"},{"line_number":385,"context_line":"        :param node: The node being processed"},{"line_number":386,"context_line":"        :param own_shard_range: A ShardRange describing the namespace for this"},{"line_number":387,"context_line":"            broker"},{"line_number":388,"context_line":"        \"\"\""},{"line_number":389,"context_line":"        self.logger.info(\u0027Scanning %s/%s (%s) for misplaced objects\u0027,"},{"line_number":390,"context_line":"                         broker.account, broker.container, broker.db_file)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_665f6d72","line":387,"updated":"2018-02-08 23:40:50.000000000","message":"\u003e or None if the broker is deleted\n\nI suppose","commit_id":"aad77ae4817a5aa37da6e7610d428d56f30d329f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"44170e6b635b4eb6b0ae5648befe8f10326e053c","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        :param broker: An instance of :class:`swift.container.ContainerBroker`"},{"line_number":385,"context_line":"        :param node: The node being processed"},{"line_number":386,"context_line":"        :param own_shard_range: A ShardRange describing the namespace for this"},{"line_number":387,"context_line":"            broker"},{"line_number":388,"context_line":"        \"\"\""},{"line_number":389,"context_line":"        self.logger.info(\u0027Scanning %s/%s (%s) for misplaced objects\u0027,"},{"line_number":390,"context_line":"                         broker.account, broker.container, broker.db_file)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_a58d2fd4","line":387,"in_reply_to":"3fa0c359_665f6d72","updated":"2018-02-20 11:46:40.000000000","message":"it could be None but the caller always provides a shard range (brokers, even when deleted, always return something for own_shard_range)","commit_id":"aad77ae4817a5aa37da6e7610d428d56f30d329f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"df31f61a9df7807b21c311f151619f30483b6e96","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            if last_upper:"},{"line_number":416,"context_line":"                queries.append(make_query(\u0027\u0027, last_upper))"},{"line_number":417,"context_line":"                if own_shard_range.upper:"},{"line_number":418,"context_line":"                    queries.append(make_query(own_shard_range.upper))"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        if not queries:"},{"line_number":421,"context_line":"            # Objects outside of this container\u0027s own range are misplaced."}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_e68dbdd3","line":418,"updated":"2018-02-08 23:40:50.000000000","message":"I wonder if this should have an explicit upper like down on L425","commit_id":"aad77ae4817a5aa37da6e7610d428d56f30d329f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"44170e6b635b4eb6b0ae5648befe8f10326e053c","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            if last_upper:"},{"line_number":416,"context_line":"                queries.append(make_query(\u0027\u0027, last_upper))"},{"line_number":417,"context_line":"                if own_shard_range.upper:"},{"line_number":418,"context_line":"                    queries.append(make_query(own_shard_range.upper))"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        if not queries:"},{"line_number":421,"context_line":"            # Objects outside of this container\u0027s own range are misplaced."}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_a529af9b","line":418,"in_reply_to":"3fa0c359_e68dbdd3","updated":"2018-02-20 11:46:40.000000000","message":"Done","commit_id":"aad77ae4817a5aa37da6e7610d428d56f30d329f"}]}
