)]}'
{"swift/container/sharder.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"caf3aae4902e9fbb0555e888c439c0995cdec9c3","unresolved":false,"context_lines":[{"line_number":739,"context_line":""},{"line_number":740,"context_line":"        if own_shard_range.state in (ShardRange.SHARDING, ShardRange.SHARDED):"},{"line_number":741,"context_line":"            shard_ranges \u003d [sr for sr in broker.get_shard_ranges()"},{"line_number":742,"context_line":"                            if sr.state !\u003d ShardRange.SHRINKING]"},{"line_number":743,"context_line":"            missing_ranges \u003d find_missing_ranges(shard_ranges)"},{"line_number":744,"context_line":"            if missing_ranges:"},{"line_number":745,"context_line":"                warnings.append("}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_68756f97","line":742,"updated":"2020-10-02 00:49:52.000000000","message":"Gotta make sure we skip shrinking shards when looking for missing ranges:\n\n* they aren\u0027t really responsible for the range anymore anyway and\n* we need enough shards to cover everything when we start cleaving or there will be rows that don\u0027t move.\n\nCome to think of it, we should make sure _audit_shard_container gets a missing check, too, like I proposed in https://review.opendev.org/#/c/721377/ ...","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ee49b2ae1087ea4ab7fe0593143207bcb3c20dd3","unresolved":false,"context_lines":[{"line_number":1425,"context_line":"                    broker, cleaving_context, shard_range)"},{"line_number":1426,"context_line":"                if cleave_result \u003d\u003d CLEAVE_SUCCESS:"},{"line_number":1427,"context_line":"                    ranges_done.append(shard_range)"},{"line_number":1428,"context_line":"                    if len(ranges_done) \u003d\u003d self.cleave_batch_size:"},{"line_number":1429,"context_line":"                        break"},{"line_number":1430,"context_line":"                elif cleave_result \u003d\u003d CLEAVE_FAILED:"},{"line_number":1431,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_a8e667e6","line":1428,"updated":"2020-10-02 02:54:37.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ee49b2ae1087ea4ab7fe0593143207bcb3c20dd3","unresolved":false,"context_lines":[{"line_number":1426,"context_line":"                if cleave_result \u003d\u003d CLEAVE_SUCCESS:"},{"line_number":1427,"context_line":"                    ranges_done.append(shard_range)"},{"line_number":1428,"context_line":"                    if len(ranges_done) \u003d\u003d self.cleave_batch_size:"},{"line_number":1429,"context_line":"                        break"},{"line_number":1430,"context_line":"                elif cleave_result \u003d\u003d CLEAVE_FAILED:"},{"line_number":1431,"context_line":"                    break"},{"line_number":1432,"context_line":"                # else, no errors, but no rows found either. keep going,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_08cdd35d","line":1429,"updated":"2020-10-02 02:54:37.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"4cd104d0721969a997de9f2019caef21b4801844","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    all_but_donor \u003d [sr for sr in shard_ranges if sr.name !\u003d donor.name"},{"line_number":154,"context_line":"                     and sr.state in (ShardRange.ACTIVE, ShardRange.CLEAVED,"},{"line_number":155,"context_line":"                                      ShardRange.CREATED)"},{"line_number":156,"context_line":"                     and not sr.deleted]"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    first_lower \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f681702_9119398a","line":155,"updated":"2020-10-19 20:08:12.000000000","message":"THIS one makes total sense to me!  good call","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"4cd104d0721969a997de9f2019caef21b4801844","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        if own_shard_range.state in (ShardRange.SHARDING, ShardRange.SHARDED):"},{"line_number":741,"context_line":"            shard_ranges \u003d [sr for sr in broker.get_shard_ranges()"},{"line_number":742,"context_line":"                            if sr.state !\u003d ShardRange.SHRINKING]"},{"line_number":743,"context_line":"            missing_ranges \u003d find_missing_ranges(shard_ranges)"},{"line_number":744,"context_line":"            if missing_ranges:"},{"line_number":745,"context_line":"                warnings.append("},{"line_number":746,"context_line":"                    \u0027missing range(s): %s\u0027 %"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f681702_b118b581","line":743,"updated":"2020-10-19 20:08:12.000000000","message":"ok, yeah if there\u0027s gap after the shrinkers go away that\u0027s a problem","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"4cd104d0721969a997de9f2019caef21b4801844","unresolved":false,"context_lines":[{"line_number":753,"context_line":"                # allow multiple shards in that state"},{"line_number":754,"context_line":"                continue"},{"line_number":755,"context_line":"            shard_ranges \u003d broker.get_shard_ranges(states\u003dstate)"},{"line_number":756,"context_line":"            overlaps \u003d find_overlapping_ranges(shard_ranges)"},{"line_number":757,"context_line":"            for overlapping_ranges in overlaps:"},{"line_number":758,"context_line":"                warnings.append("},{"line_number":759,"context_line":"                    \u0027overlapping ranges in state %s: %s\u0027 %"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f681702_39380bd2","line":756,"updated":"2020-10-19 20:08:12.000000000","message":"yeah... ok... maybe... I mean YES, I don\u0027t care about overlapping shrinking (do I care about overlapping cleaved, sharding and sharded?)","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"4cd104d0721969a997de9f2019caef21b4801844","unresolved":false,"context_lines":[{"line_number":791,"context_line":"                include_deleted\u003dTrue)"},{"line_number":792,"context_line":"            if shard_ranges:"},{"line_number":793,"context_line":"                for shard_range in shard_ranges:"},{"line_number":794,"context_line":"                    if shard_range.name \u003d\u003d own_shard_range.name:"},{"line_number":795,"context_line":"                        break"},{"line_number":796,"context_line":"                else:"},{"line_number":797,"context_line":"                    # this is not necessarily an error - some replicas of the"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f681702_d94c7778","line":794,"updated":"2020-10-19 20:08:12.000000000","message":"do you expect this to be a material change?  were we throwing audit errors when the root pushed our limits around?","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"dd19e52d54308eb25953b3052182f26b18a90bef","unresolved":false,"context_lines":[{"line_number":1425,"context_line":"                    broker, cleaving_context, shard_range)"},{"line_number":1426,"context_line":"                if cleave_result \u003d\u003d CLEAVE_SUCCESS:"},{"line_number":1427,"context_line":"                    ranges_done.append(shard_range)"},{"line_number":1428,"context_line":"                    if len(ranges_done) \u003d\u003d self.cleave_batch_size:"},{"line_number":1429,"context_line":"                        break"},{"line_number":1430,"context_line":"                elif cleave_result \u003d\u003d CLEAVE_FAILED:"},{"line_number":1431,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_50d080f4","line":1428,"updated":"2020-10-13 04:29:59.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"dd19e52d54308eb25953b3052182f26b18a90bef","unresolved":false,"context_lines":[{"line_number":1426,"context_line":"                if cleave_result \u003d\u003d CLEAVE_SUCCESS:"},{"line_number":1427,"context_line":"                    ranges_done.append(shard_range)"},{"line_number":1428,"context_line":"                    if len(ranges_done) \u003d\u003d self.cleave_batch_size:"},{"line_number":1429,"context_line":"                        break"},{"line_number":1430,"context_line":"                elif cleave_result \u003d\u003d CLEAVE_FAILED:"},{"line_number":1431,"context_line":"                    break"},{"line_number":1432,"context_line":"                # else, no errors, but no rows found either. keep going,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_b0047c7f","line":1429,"updated":"2020-10-13 04:29:59.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"4cd104d0721969a997de9f2019caef21b4801844","unresolved":false,"context_lines":[{"line_number":1433,"context_line":"                # and don\u0027t count it against our batch size"},{"line_number":1434,"context_line":"            else:"},{"line_number":1435,"context_line":"                self.logger.info(\u0027Stopped cleave at unready %s\u0027, shard_range)"},{"line_number":1436,"context_line":"                break"},{"line_number":1437,"context_line":""},{"line_number":1438,"context_line":"        if not ranges_done:"},{"line_number":1439,"context_line":"            # _cleave_shard_range always store()s the context on success; make"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f681702_19570f05","line":1436,"updated":"2020-10-19 20:08:12.000000000","message":"cleaving while shards are shrinking... good times...","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed6c087cebf46766b08e6259ffcd3f34eac332fd","unresolved":false,"context_lines":[{"line_number":1425,"context_line":"            if shard_range.state \u003d\u003d ShardRange.SHRINKING:"},{"line_number":1426,"context_line":"                continue"},{"line_number":1427,"context_line":"            elif shard_range.state in (ShardRange.CREATED,"},{"line_number":1428,"context_line":"                                     ShardRange.CLEAVED,"},{"line_number":1429,"context_line":"                                     ShardRange.ACTIVE):"},{"line_number":1430,"context_line":"                cleave_result \u003d self._cleave_shard_range("},{"line_number":1431,"context_line":"                    broker, cleaving_context, shard_range)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_2dbb2a72","line":1428,"updated":"2020-11-10 01:52:41.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"003c2c494ec7c6f3926f674a7de3f71651fcf7cc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed6c087cebf46766b08e6259ffcd3f34eac332fd","unresolved":false,"context_lines":[{"line_number":1426,"context_line":"                continue"},{"line_number":1427,"context_line":"            elif shard_range.state in (ShardRange.CREATED,"},{"line_number":1428,"context_line":"                                     ShardRange.CLEAVED,"},{"line_number":1429,"context_line":"                                     ShardRange.ACTIVE):"},{"line_number":1430,"context_line":"                cleave_result \u003d self._cleave_shard_range("},{"line_number":1431,"context_line":"                    broker, cleaving_context, shard_range)"},{"line_number":1432,"context_line":"                if cleave_result \u003d\u003d CLEAVE_SUCCESS:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_8db35e98","line":1429,"updated":"2020-11-10 01:52:41.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"003c2c494ec7c6f3926f674a7de3f71651fcf7cc"}],"test/probe/test_sharder.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8385f978e6e2781f91fe226828aebe2f2d2d6e64","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":"import hashlib"},{"line_number":16,"context_line":"import io"},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import math"},{"line_number":19,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_c076d9a4","line":16,"updated":"2020-08-01 00:22:29.000000000","message":"pep8: F401 \u0027io\u0027 imported but unused","commit_id":"fe837dfe53293c2e31bf7857d2a970bcb1216548"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ee49b2ae1087ea4ab7fe0593143207bcb3c20dd3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":"import hashlib"},{"line_number":16,"context_line":"import io"},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import math"},{"line_number":19,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_28d257fe","line":16,"updated":"2020-10-02 02:54:37.000000000","message":"pep8: F401 \u0027io\u0027 imported but unused","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ee49b2ae1087ea4ab7fe0593143207bcb3c20dd3","unresolved":false,"context_lines":[{"line_number":2719,"context_line":"                self.assertFalse(broker.is_root_container())"},{"line_number":2720,"context_line":"                self.assertFalse(broker.is_deleted())"},{"line_number":2721,"context_line":"                if own_sr.timestamp \u003d\u003d orig_shard_ts:"},{"line_number":2722,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027active\u0027)"},{"line_number":2723,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2724,"context_line":"                    found[\u0027orig-shard\u0027] +\u003d 1"},{"line_number":2725,"context_line":"                elif own_sr.timestamp \u003d\u003d keep_ts:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_88028371","line":2722,"updated":"2020-10-02 02:54:37.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ee49b2ae1087ea4ab7fe0593143207bcb3c20dd3","unresolved":false,"context_lines":[{"line_number":2723,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2724,"context_line":"                    found[\u0027orig-shard\u0027] +\u003d 1"},{"line_number":2725,"context_line":"                elif own_sr.timestamp \u003d\u003d keep_ts:"},{"line_number":2726,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027active\u0027)"},{"line_number":2727,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2728,"context_line":"                    found[\u0027active-sub-shard\u0027] +\u003d 1"},{"line_number":2729,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_68056f79","line":2726,"updated":"2020-10-02 02:54:37.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ee49b2ae1087ea4ab7fe0593143207bcb3c20dd3","unresolved":false,"context_lines":[{"line_number":2728,"context_line":"                    found[\u0027active-sub-shard\u0027] +\u003d 1"},{"line_number":2729,"context_line":"                else:"},{"line_number":2730,"context_line":"                    # the cleanup bumped timestamps, so can\u0027t use cleanup_ts"},{"line_number":2731,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027sharded\u0027)"},{"line_number":2732,"context_line":"                    self.assertTrue(broker.empty())"},{"line_number":2733,"context_line":"                    self.assertTrue(own_sr.deleted)"},{"line_number":2734,"context_line":"                    found[\u0027cleaned-up\u0027] +\u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_c8fc7b74","line":2731,"updated":"2020-10-02 02:54:37.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"dd19e52d54308eb25953b3052182f26b18a90bef","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":"import hashlib"},{"line_number":16,"context_line":"import io"},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import math"},{"line_number":19,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_9007b881","line":16,"updated":"2020-10-13 04:29:59.000000000","message":"pep8: F401 \u0027io\u0027 imported but unused","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"dd19e52d54308eb25953b3052182f26b18a90bef","unresolved":false,"context_lines":[{"line_number":2719,"context_line":"                self.assertFalse(broker.is_root_container())"},{"line_number":2720,"context_line":"                self.assertFalse(broker.is_deleted())"},{"line_number":2721,"context_line":"                if own_sr.timestamp \u003d\u003d orig_shard_ts:"},{"line_number":2722,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027active\u0027)"},{"line_number":2723,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2724,"context_line":"                    found[\u0027orig-shard\u0027] +\u003d 1"},{"line_number":2725,"context_line":"                elif own_sr.timestamp \u003d\u003d keep_ts:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_f0fa7474","line":2722,"updated":"2020-10-13 04:29:59.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"dd19e52d54308eb25953b3052182f26b18a90bef","unresolved":false,"context_lines":[{"line_number":2723,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2724,"context_line":"                    found[\u0027orig-shard\u0027] +\u003d 1"},{"line_number":2725,"context_line":"                elif own_sr.timestamp \u003d\u003d keep_ts:"},{"line_number":2726,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027active\u0027)"},{"line_number":2727,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2728,"context_line":"                    found[\u0027active-sub-shard\u0027] +\u003d 1"},{"line_number":2729,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_d0fdb06d","line":2726,"updated":"2020-10-13 04:29:59.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"dd19e52d54308eb25953b3052182f26b18a90bef","unresolved":false,"context_lines":[{"line_number":2728,"context_line":"                    found[\u0027active-sub-shard\u0027] +\u003d 1"},{"line_number":2729,"context_line":"                else:"},{"line_number":2730,"context_line":"                    # the cleanup bumped timestamps, so can\u0027t use cleanup_ts"},{"line_number":2731,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027sharded\u0027)"},{"line_number":2732,"context_line":"                    self.assertTrue(broker.empty())"},{"line_number":2733,"context_line":"                    self.assertTrue(own_sr.deleted)"},{"line_number":2734,"context_line":"                    found[\u0027cleaned-up\u0027] +\u003d 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_30f86c7a","line":2731,"updated":"2020-10-13 04:29:59.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed6c087cebf46766b08e6259ffcd3f34eac332fd","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":"import hashlib"},{"line_number":16,"context_line":"import io"},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import math"},{"line_number":19,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_6db0828b","line":16,"updated":"2020-11-10 01:52:41.000000000","message":"pep8: F401 \u0027io\u0027 imported but unused","commit_id":"003c2c494ec7c6f3926f674a7de3f71651fcf7cc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed6c087cebf46766b08e6259ffcd3f34eac332fd","unresolved":false,"context_lines":[{"line_number":2719,"context_line":"                self.assertFalse(broker.is_root_container())"},{"line_number":2720,"context_line":"                self.assertFalse(broker.is_deleted())"},{"line_number":2721,"context_line":"                if own_sr.timestamp \u003d\u003d orig_shard_ts:"},{"line_number":2722,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027active\u0027)"},{"line_number":2723,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2724,"context_line":"                    found[\u0027orig-shard\u0027] +\u003d 1"},{"line_number":2725,"context_line":"                elif own_sr.timestamp \u003d\u003d keep_ts:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_cda9d624","line":2722,"updated":"2020-11-10 01:52:41.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"003c2c494ec7c6f3926f674a7de3f71651fcf7cc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed6c087cebf46766b08e6259ffcd3f34eac332fd","unresolved":false,"context_lines":[{"line_number":2723,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2724,"context_line":"                    found[\u0027orig-shard\u0027] +\u003d 1"},{"line_number":2725,"context_line":"                elif own_sr.timestamp \u003d\u003d keep_ts:"},{"line_number":2726,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027active\u0027)"},{"line_number":2727,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2728,"context_line":"                    found[\u0027active-sub-shard\u0027] +\u003d 1"},{"line_number":2729,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_ada61a52","line":2726,"updated":"2020-11-10 01:52:41.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"003c2c494ec7c6f3926f674a7de3f71651fcf7cc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed6c087cebf46766b08e6259ffcd3f34eac332fd","unresolved":false,"context_lines":[{"line_number":2728,"context_line":"                    found[\u0027active-sub-shard\u0027] +\u003d 1"},{"line_number":2729,"context_line":"                else:"},{"line_number":2730,"context_line":"                    # the cleanup bumped timestamps, so can\u0027t use cleanup_ts"},{"line_number":2731,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027sharded\u0027)"},{"line_number":2732,"context_line":"                    self.assertTrue(broker.empty())"},{"line_number":2733,"context_line":"                    self.assertTrue(own_sr.deleted)"},{"line_number":2734,"context_line":"                    found[\u0027cleaned-up\u0027] +\u003d 1"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_0d658e1e","line":2731,"updated":"2020-11-10 01:52:41.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"003c2c494ec7c6f3926f674a7de3f71651fcf7cc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"133ab4c17d4b4e988d161d930b37b5e69c2a63e7","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":"import hashlib"},{"line_number":16,"context_line":"import io"},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import math"},{"line_number":19,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f621f24_dab97815","line":16,"updated":"2020-11-11 03:08:43.000000000","message":"pep8: F401 \u0027io\u0027 imported but unused","commit_id":"9793b7604aaabcfae6b9418c6a64c332d6caed22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"133ab4c17d4b4e988d161d930b37b5e69c2a63e7","unresolved":false,"context_lines":[{"line_number":2719,"context_line":"                self.assertFalse(broker.is_root_container())"},{"line_number":2720,"context_line":"                self.assertFalse(broker.is_deleted())"},{"line_number":2721,"context_line":"                if own_sr.timestamp \u003d\u003d orig_shard_ts:"},{"line_number":2722,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027active\u0027)"},{"line_number":2723,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2724,"context_line":"                    found[\u0027orig-shard\u0027] +\u003d 1"},{"line_number":2725,"context_line":"                elif own_sr.timestamp \u003d\u003d keep_ts:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f621f24_3a386c9e","line":2722,"updated":"2020-11-11 03:08:43.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"9793b7604aaabcfae6b9418c6a64c332d6caed22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"133ab4c17d4b4e988d161d930b37b5e69c2a63e7","unresolved":false,"context_lines":[{"line_number":2723,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2724,"context_line":"                    found[\u0027orig-shard\u0027] +\u003d 1"},{"line_number":2725,"context_line":"                elif own_sr.timestamp \u003d\u003d keep_ts:"},{"line_number":2726,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027active\u0027)"},{"line_number":2727,"context_line":"                    self.assertFalse(broker.empty())"},{"line_number":2728,"context_line":"                    found[\u0027active-sub-shard\u0027] +\u003d 1"},{"line_number":2729,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f621f24_1a3db08e","line":2726,"updated":"2020-11-11 03:08:43.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"9793b7604aaabcfae6b9418c6a64c332d6caed22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"133ab4c17d4b4e988d161d930b37b5e69c2a63e7","unresolved":false,"context_lines":[{"line_number":2728,"context_line":"                    found[\u0027active-sub-shard\u0027] +\u003d 1"},{"line_number":2729,"context_line":"                else:"},{"line_number":2730,"context_line":"                    # the cleanup bumped timestamps, so can\u0027t use cleanup_ts"},{"line_number":2731,"context_line":"                    self.assert_own_shard_range_state(db_file, own_sr, \u0027sharded\u0027)"},{"line_number":2732,"context_line":"                    self.assertTrue(broker.empty())"},{"line_number":2733,"context_line":"                    self.assertTrue(own_sr.deleted)"},{"line_number":2734,"context_line":"                    found[\u0027cleaned-up\u0027] +\u003d 1"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f621f24_7a3e648b","line":2731,"updated":"2020-11-11 03:08:43.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"9793b7604aaabcfae6b9418c6a64c332d6caed22"}],"test/unit/container/test_sharder.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ee49b2ae1087ea4ab7fe0593143207bcb3c20dd3","unresolved":false,"context_lines":[{"line_number":5024,"context_line":"        broker.merge_shard_ranges(shard_ranges)"},{"line_number":5025,"context_line":"        stable_order \u003d broker.get_shard_ranges()"},{"line_number":5026,"context_line":"        # ideally tests literals are ordered"},{"line_number":5027,"context_line":"        self.maxDiff\u003dNone"},{"line_number":5028,"context_line":"        self.assertEqual([dict(sr) for sr in shard_ranges], [dict(sr) for sr in stable_order])"},{"line_number":5029,"context_line":"        return stable_order"},{"line_number":5030,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_e8c7bf3c","line":5027,"updated":"2020-10-02 02:54:37.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"caf3aae4902e9fbb0555e888c439c0995cdec9c3","unresolved":false,"context_lines":[{"line_number":5025,"context_line":"        stable_order \u003d broker.get_shard_ranges()"},{"line_number":5026,"context_line":"        # ideally tests literals are ordered"},{"line_number":5027,"context_line":"        self.maxDiff\u003dNone"},{"line_number":5028,"context_line":"        self.assertEqual([dict(sr) for sr in shard_ranges], [dict(sr) for sr in stable_order])"},{"line_number":5029,"context_line":"        return stable_order"},{"line_number":5030,"context_line":""},{"line_number":5031,"context_line":"    def test_shrinks_into_cleaved(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_e8321ff3","line":5028,"updated":"2020-10-02 00:49:52.000000000","message":"Bah -- I need to back this out or make it pass pep8. Definitely made failures here more obvious, though!","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ee49b2ae1087ea4ab7fe0593143207bcb3c20dd3","unresolved":false,"context_lines":[{"line_number":5025,"context_line":"        stable_order \u003d broker.get_shard_ranges()"},{"line_number":5026,"context_line":"        # ideally tests literals are ordered"},{"line_number":5027,"context_line":"        self.maxDiff\u003dNone"},{"line_number":5028,"context_line":"        self.assertEqual([dict(sr) for sr in shard_ranges], [dict(sr) for sr in stable_order])"},{"line_number":5029,"context_line":"        return stable_order"},{"line_number":5030,"context_line":""},{"line_number":5031,"context_line":"    def test_shrinks_into_cleaved(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_48d7cbef","line":5028,"updated":"2020-10-02 02:54:37.000000000","message":"pep8: E501 line too long (94 \u003e 79 characters)","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"caf3aae4902e9fbb0555e888c439c0995cdec9c3","unresolved":false,"context_lines":[{"line_number":5736,"context_line":"            ShardRange(self.srn(epoch2, 0), epoch2, ShardRange.MIN, \u0027b\u0027,"},{"line_number":5737,"context_line":"                       object_count\u003d100, state\u003dShardRange.CLEAVED),"},{"line_number":5738,"context_line":"            # But they didn\u0027t get very far; most of the shards have"},{"line_number":5739,"context_line":"            # only been created"},{"line_number":5740,"context_line":"            ShardRange(self.srn(epoch1, 1), epoch1, \u0027a\u0027, \u0027c\u0027,"},{"line_number":5741,"context_line":"                       object_count\u003d100, state\u003dShardRange.CREATED),"},{"line_number":5742,"context_line":"            ShardRange(self.srn(epoch2, 1), epoch2, \u0027b\u0027, \u0027d\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_684c4f75","line":5739,"updated":"2020-10-02 00:49:52.000000000","message":"This is the case that drove me to change the sort order for shard ranges (again). When we ordered by\n\n (upper, state, lower, name)\n\nupdating someone to shrinking would change their place and things got ugly pretty fast.","commit_id":"e2242201749e10a483b232319cc572559cda4c22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"dd19e52d54308eb25953b3052182f26b18a90bef","unresolved":false,"context_lines":[{"line_number":5034,"context_line":"        broker.merge_shard_ranges(shard_ranges)"},{"line_number":5035,"context_line":"        stable_order \u003d broker.get_shard_ranges()"},{"line_number":5036,"context_line":"        # ideally tests literals are ordered"},{"line_number":5037,"context_line":"        self.maxDiff\u003dNone"},{"line_number":5038,"context_line":"        self.assertEqual([dict(sr) for sr in shard_ranges], [dict(sr) for sr in stable_order])"},{"line_number":5039,"context_line":"        return stable_order"},{"line_number":5040,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_10f3a8a0","line":5037,"updated":"2020-10-13 04:29:59.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"dd19e52d54308eb25953b3052182f26b18a90bef","unresolved":false,"context_lines":[{"line_number":5035,"context_line":"        stable_order \u003d broker.get_shard_ranges()"},{"line_number":5036,"context_line":"        # ideally tests literals are ordered"},{"line_number":5037,"context_line":"        self.maxDiff\u003dNone"},{"line_number":5038,"context_line":"        self.assertEqual([dict(sr) for sr in shard_ranges], [dict(sr) for sr in stable_order])"},{"line_number":5039,"context_line":"        return stable_order"},{"line_number":5040,"context_line":""},{"line_number":5041,"context_line":"    def test_shrinks_into_cleaved(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_70ee64b5","line":5038,"updated":"2020-10-13 04:29:59.000000000","message":"pep8: E501 line too long (94 \u003e 79 characters)","commit_id":"a1019f1fad1cd5217313f7aa4f057a34fd5f0c0d"}]}
