)]}'
{"swift/container/sharder.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"cf65e2b0dd1a7d7bad33f87c82a9e270c9f281bb","unresolved":false,"context_lines":[{"line_number":789,"context_line":""},{"line_number":790,"context_line":"    def _record_sharding_progress(self, broker, node, error):"},{"line_number":791,"context_line":"        own_shard_range \u003d broker.get_own_shard_range()"},{"line_number":792,"context_line":"        if (broker.get_db_state() in (UNSHARDED, SHARDED) and"},{"line_number":793,"context_line":"                own_shard_range.state in (ShardRange.SHARDING,"},{"line_number":794,"context_line":"                                          ShardRange.SHARDED)):"},{"line_number":795,"context_line":"            info \u003d self._make_stats_info(broker, node, own_shard_range)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_4ec49e5f","line":792,"range":{"start_line":792,"start_character":38,"end_line":792,"end_character":56},"updated":"2018-04-10 18:43:26.000000000","message":"No SHARDING? I thought the point was to capture *sharding* progress...","commit_id":"626537ac74e3047d5808cf89ff23eaebd6e68708"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"cf65e2b0dd1a7d7bad33f87c82a9e270c9f281bb","unresolved":false,"context_lines":[{"line_number":797,"context_line":"            info[\u0027db_state\u0027] \u003d broker.get_db_state_text()"},{"line_number":798,"context_line":"            for state in (ShardRange.FOUND, ShardRange.CREATED,"},{"line_number":799,"context_line":"                          ShardRange.CLEAVED, ShardRange.ACTIVE):"},{"line_number":800,"context_line":"                num_in_state \u003d len(broker.get_shard_ranges(states\u003dstate))"},{"line_number":801,"context_line":"                info[ShardRange.STATES[state]] \u003d num_in_state"},{"line_number":802,"context_line":"            info[\u0027error\u0027] \u003d error is not None"},{"line_number":803,"context_line":"            self._append_stat(\u0027sharding_in_progress\u0027, \u0027all\u0027, info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_4efd7eaf","line":800,"updated":"2018-04-10 18:43:26.000000000","message":"Maybe better (less racy) to do a single get_shard_ranges, then aggregate in python? *shrug*","commit_id":"626537ac74e3047d5808cf89ff23eaebd6e68708"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"cf65e2b0dd1a7d7bad33f87c82a9e270c9f281bb","unresolved":false,"context_lines":[{"line_number":799,"context_line":"                          ShardRange.CLEAVED, ShardRange.ACTIVE):"},{"line_number":800,"context_line":"                num_in_state \u003d len(broker.get_shard_ranges(states\u003dstate))"},{"line_number":801,"context_line":"                info[ShardRange.STATES[state]] \u003d num_in_state"},{"line_number":802,"context_line":"            info[\u0027error\u0027] \u003d error is not None"},{"line_number":803,"context_line":"            self._append_stat(\u0027sharding_in_progress\u0027, \u0027all\u0027, info)"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    def _process_broker(self, broker, node, part):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_2eda8a16","line":802,"updated":"2018-04-10 18:43:26.000000000","message":"Maybe better as\n\n error and str(error)\n\n? Do we generally expect errors to resolve themselves over time or require intervention? Assuming it could go either way depending on circumstance, can we differentiate as we\u0027re writing things down?","commit_id":"626537ac74e3047d5808cf89ff23eaebd6e68708"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6124fb69fb1e7ef51754e90428c742a8aaae00f3","unresolved":false,"context_lines":[{"line_number":789,"context_line":""},{"line_number":790,"context_line":"    def _record_sharding_progress(self, broker, node, error):"},{"line_number":791,"context_line":"        own_shard_range \u003d broker.get_own_shard_range()"},{"line_number":792,"context_line":"        if (broker.get_db_state() in (UNSHARDED, SHARDING, SHARDED) and"},{"line_number":793,"context_line":"                own_shard_range.state in (ShardRange.SHARDING,"},{"line_number":794,"context_line":"                                          ShardRange.SHARDED)):"},{"line_number":795,"context_line":"            info \u003d self._make_stats_info(broker, node, own_shard_range)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_63bf29aa","line":792,"range":{"start_line":792,"start_character":59,"end_line":792,"end_character":66},"updated":"2018-04-11 08:21:52.000000000","message":"NO! I was very tired when I fixed this! SHARDED is not necessary. We never expect db_state SHARDED and shard range state \u003c SHARDED. \n\ndb_state \u003d\u003d SHARDED and shard range state \u003d\u003d SHARDED implies sharding complete so we don\u0027t want to report progress.","commit_id":"3ff570b47bf5e17094c6ce2a6aa6bd6f1128281a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"83615f7c17fb28e2537cb609e934134c8989f14e","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        own_shard_range \u003d broker.get_own_shard_range()"},{"line_number":792,"context_line":"        if (broker.get_db_state() in (UNSHARDED, SHARDING, SHARDED) and"},{"line_number":793,"context_line":"                own_shard_range.state in (ShardRange.SHARDING,"},{"line_number":794,"context_line":"                                          ShardRange.SHARDED)):"},{"line_number":795,"context_line":"            info \u003d self._make_stats_info(broker, node, own_shard_range)"},{"line_number":796,"context_line":"            info[\u0027state\u0027] \u003d own_shard_range.state_text"},{"line_number":797,"context_line":"            info[\u0027db_state\u0027] \u003d broker.get_db_state_text()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_64dc2174","line":794,"range":{"start_line":794,"start_character":53,"end_line":794,"end_character":60},"updated":"2018-04-10 19:58:15.000000000","message":"Might be a little broad... but for now, better too much than too little.","commit_id":"3ff570b47bf5e17094c6ce2a6aa6bd6f1128281a"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6124fb69fb1e7ef51754e90428c742a8aaae00f3","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        own_shard_range \u003d broker.get_own_shard_range()"},{"line_number":792,"context_line":"        if (broker.get_db_state() in (UNSHARDED, SHARDING, SHARDED) and"},{"line_number":793,"context_line":"                own_shard_range.state in (ShardRange.SHARDING,"},{"line_number":794,"context_line":"                                          ShardRange.SHARDED)):"},{"line_number":795,"context_line":"            info \u003d self._make_stats_info(broker, node, own_shard_range)"},{"line_number":796,"context_line":"            info[\u0027state\u0027] \u003d own_shard_range.state_text"},{"line_number":797,"context_line":"            info[\u0027db_state\u0027] \u003d broker.get_db_state_text()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_a37b0126","line":794,"range":{"start_line":794,"start_character":53,"end_line":794,"end_character":60},"in_reply_to":"bf659307_64dc2174","updated":"2018-04-11 08:21:52.000000000","message":"I think this is correct - shard range state may be SHARDED if another replica has completed, when this replica\u0027s db_state is still not SHARDED, so we want to report that case.","commit_id":"3ff570b47bf5e17094c6ce2a6aa6bd6f1128281a"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6124fb69fb1e7ef51754e90428c742a8aaae00f3","unresolved":false,"context_lines":[{"line_number":799,"context_line":"                      ShardRange.CLEAVED, ShardRange.ACTIVE]"},{"line_number":800,"context_line":"            shard_ranges \u003d broker.get_shard_ranges(states\u003dstates)"},{"line_number":801,"context_line":"            state_count \u003d {}"},{"line_number":802,"context_line":"            for state in states:"},{"line_number":803,"context_line":"                state_count[ShardRange.STATES[state]] \u003d 0"},{"line_number":804,"context_line":"            for shard_range in shard_ranges:"},{"line_number":805,"context_line":"                state_count[shard_range.state_text] +\u003d 1"},{"line_number":806,"context_line":"            info.update(state_count)"},{"line_number":807,"context_line":"            info[\u0027error\u0027] \u003d error and str(error)"},{"line_number":808,"context_line":"            self._append_stat(\u0027sharding_in_progress\u0027, \u0027all\u0027, info)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_292124fc","line":805,"range":{"start_line":802,"start_character":12,"end_line":805,"end_character":56},"updated":"2018-04-11 08:21:52.000000000","message":"I\u0027m sure there\u0027s a slicker form for this but I\u0027m too tired :/","commit_id":"3ff570b47bf5e17094c6ce2a6aa6bd6f1128281a"}]}
