)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2b3cb4e0_7225b295","updated":"2022-04-21 07:21:05.000000000","message":"There aren\u0027t any tests yet, just a big builder replica2part2dev_id rename.","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"}],"swift/cli/ringbuilder.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":16,"context_line":"from __future__ import print_function"},{"line_number":17,"context_line":"import logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import contextlib"},{"line_number":20,"context_line":"from collections import defaultdict"},{"line_number":21,"context_line":"from errno import EEXIST"},{"line_number":22,"context_line":"from itertools import islice"}],"source_content_type":"text/x-python","patch_set":1,"id":"1caefb91_31ab7101","line":19,"updated":"2022-04-21 07:21:05.000000000","message":"Don\u0027t actually need this anymore","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"76465814dbce1ad29e92935bd7973db8aee75559","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from __future__ import print_function"},{"line_number":17,"context_line":"import logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import contextlib"},{"line_number":20,"context_line":"from collections import defaultdict"},{"line_number":21,"context_line":"from errno import EEXIST"},{"line_number":22,"context_line":"from itertools import islice"}],"source_content_type":"text/x-python","patch_set":1,"id":"167f310b_74d30206","line":19,"in_reply_to":"1caefb91_31ab7101","updated":"2022-04-21 07:23:09.000000000","message":"Ack","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":37,"context_line":"from swift.common.ring import RingBuilder, Ring, RingData"},{"line_number":38,"context_line":"from swift.common.ring.builder import MAX_BALANCE"},{"line_number":39,"context_line":"from swift.common.ring.composite_builder import CompositeRingBuilder"},{"line_number":40,"context_line":"from swift.common.ring.io import RingReader"},{"line_number":41,"context_line":"from swift.common.ring.utils import validate_args, \\"},{"line_number":42,"context_line":"    validate_and_normalize_ip, build_dev_from_opts, \\"},{"line_number":43,"context_line":"    parse_builder_ring_filename_args, parse_search_value, \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"4f65fbc3_05a6104e","line":40,"updated":"2022-04-21 07:21:05.000000000","message":"Or this (but will if I need to check version)","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"76465814dbce1ad29e92935bd7973db8aee75559","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from swift.common.ring import RingBuilder, Ring, RingData"},{"line_number":38,"context_line":"from swift.common.ring.builder import MAX_BALANCE"},{"line_number":39,"context_line":"from swift.common.ring.composite_builder import CompositeRingBuilder"},{"line_number":40,"context_line":"from swift.common.ring.io import RingReader"},{"line_number":41,"context_line":"from swift.common.ring.utils import validate_args, \\"},{"line_number":42,"context_line":"    validate_and_normalize_ip, build_dev_from_opts, \\"},{"line_number":43,"context_line":"    parse_builder_ring_filename_args, parse_search_value, \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"ab8fcf9d_d439709e","line":40,"in_reply_to":"4f65fbc3_05a6104e","updated":"2022-04-21 07:23:09.000000000","message":"Ack","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":1157,"context_line":"            print(\u0027-\u0027 * 79)"},{"line_number":1158,"context_line":"            status \u003d EXIT_WARNING"},{"line_number":1159,"context_line":"        ts \u003d time()"},{"line_number":1160,"context_line":"        # builder.get_ring().save("},{"line_number":1161,"context_line":"            # pathjoin(backup_dir, \u0027%d.\u0027 % ts + basename(ring_file)))"},{"line_number":1162,"context_line":"        builder.save(pathjoin(backup_dir, \u0027%d.\u0027 % ts + basename(builder_file)))"},{"line_number":1163,"context_line":"        # builder.get_ring().save(ring_file)"},{"line_number":1164,"context_line":"        builder.save(builder_file)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8168f424_bf636cac","line":1161,"range":{"start_line":1160,"start_character":7,"end_line":1161,"end_character":69},"updated":"2022-04-21 07:21:05.000000000","message":"Just commented out, still a WIP remember :)","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":1649,"context_line":"    builder_file, ring_file \u003d parse_builder_ring_filename_args(argv)"},{"line_number":1650,"context_line":"    if ring_file \u003d\u003d argv[1]:"},{"line_number":1651,"context_line":"        # we are going to use v2 rings as our builder!"},{"line_number":1652,"context_line":"        builder_file \u003d ring_file"},{"line_number":1653,"context_line":"    elif builder_file !\u003d argv[1]:"},{"line_number":1654,"context_line":"        print(\u0027Note: using %s instead of %s as builder file\u0027 % ("},{"line_number":1655,"context_line":"              builder_file, argv[1]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"6c2c6c10_05e1b9d6","line":1652,"updated":"2022-04-21 07:21:05.000000000","message":"Maybe I should check to make sure it isn\u0027t a v1 ring? but things will just fail on it, and what about make_builder.","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"}],"swift/common/ring/builder.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":38,"context_line":"from swift.common.ring.utils import tiers_for_dev, build_tier_tree, \\"},{"line_number":39,"context_line":"    validate_and_normalize_address, validate_replicas_by_tier, pretty_dev, \\"},{"line_number":40,"context_line":"    NONE_DEV, RingSerializeBase, BUILDER_SERIALIZATION_INDEXES_FIRST, \\"},{"line_number":41,"context_line":"    RingDeserializationError, RING_SERIALIZATION_INDEXES"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"MAX_BALANCE \u003d 999.99"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f3d5aa5_a4775f6d","line":41,"range":{"start_line":41,"start_character":30,"end_line":41,"end_character":56},"updated":"2022-04-21 07:21:05.000000000","message":"Don\u0027t need to import this anymore.","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"76465814dbce1ad29e92935bd7973db8aee75559","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from swift.common.ring.utils import tiers_for_dev, build_tier_tree, \\"},{"line_number":39,"context_line":"    validate_and_normalize_address, validate_replicas_by_tier, pretty_dev, \\"},{"line_number":40,"context_line":"    NONE_DEV, RingSerializeBase, BUILDER_SERIALIZATION_INDEXES_FIRST, \\"},{"line_number":41,"context_line":"    RingDeserializationError, RING_SERIALIZATION_INDEXES"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"MAX_BALANCE \u003d 999.99"}],"source_content_type":"text/x-python","patch_set":1,"id":"d3b1ccd1_b2ab9fa1","line":41,"range":{"start_line":41,"start_character":30,"end_line":41,"end_character":56},"in_reply_to":"1f3d5aa5_a4775f6d","updated":"2022-04-21 07:23:09.000000000","message":"Ack","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":113,"context_line":"        # many circumstances. Making one big 2**23 * 3 array didn\u0027t seem to"},{"line_number":114,"context_line":"        # have any speed change; though you\u0027re welcome to try it again (it was"},{"line_number":115,"context_line":"        # a while ago, code-wise, when I last tried it)."},{"line_number":116,"context_line":"        self._replica2part2dev_id \u003d None"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        # The next 2 list of arrays really go hand in hand. They are kept"},{"line_number":119,"context_line":"        # seperately so it\u0027s easier to track some rebalance history, or the"}],"source_content_type":"text/x-python","patch_set":1,"id":"b96145cc_3948ba1d","line":116,"range":{"start_line":116,"start_character":8,"end_line":116,"end_character":33},"updated":"2022-04-21 07:21:05.000000000","message":"renamed to match the ringdata instance names. So the serialiaser class can easily set it for both classes. and hey, not being the same always bugged me :P","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":329,"context_line":"                \u0027_dispersion_graph\u0027: self._dispersion_graph,"},{"line_number":330,"context_line":"                \u0027dispersion\u0027: self.dispersion,"},{"line_number":331,"context_line":"                \u0027_remove_devs\u0027: self._remove_devs,"},{"line_number":332,"context_line":"                \u0027dev_id_bytes\u0027: 2,"},{"line_number":333,"context_line":"                \u0027id\u0027: self._id}"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def change_min_part_hours(self, min_part_hours):"}],"source_content_type":"text/x-python","patch_set":1,"id":"996bfde3_9477cf77","line":332,"updated":"2022-04-21 07:21:05.000000000","message":"part_shift and dev_id_bytes added as it\u0027s needed at it writes the ring metadata in builder save. We have the info, so why not just use the one source.","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":1801,"context_line":""},{"line_number":1802,"context_line":"        # Returning as a dict incase we missed anything. Maybe whats be set by"},{"line_number":1803,"context_line":"        # the deserializers is a good builder, need to play and test."},{"line_number":1804,"context_line":"        return builder.to_dict()"},{"line_number":1805,"context_line":""},{"line_number":1806,"context_line":"    @classmethod"},{"line_number":1807,"context_line":"    def load(cls, builder_file, open\u003dopen, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"4704b17a_3a3e4717","line":1804,"updated":"2022-04-21 07:21:05.000000000","message":"might be able to actually just return the builder rather then the builder dict now. Will need to test.","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"56fa0a3979267d6ae0ec845cea1d1ed00c3b49e8","unresolved":true,"context_lines":[{"line_number":97,"context_line":"            raise ValueError(\"min_part_hours must be non-negative (was %d)\""},{"line_number":98,"context_line":"                             % (min_part_hours,))"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        self._part_shift \u003d 32 - part_power"},{"line_number":101,"context_line":"        self.next_part_power \u003d None"},{"line_number":102,"context_line":"        self.replicas \u003d replicas"},{"line_number":103,"context_line":"        self.min_part_hours \u003d min_part_hours"}],"source_content_type":"text/x-python","patch_set":4,"id":"3397b9eb_dd4a06da","line":100,"updated":"2022-04-28 23:47:37.000000000","message":"Like the RingData class, only storing the _partshift, to keep them consistant. part_power becomes a property. This just helps unify the 2 classes, and makes the serialization classes simpler.","commit_id":"bd27b04c3c9f6c23599d0640e85e53ce84449384"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"56fa0a3979267d6ae0ec845cea1d1ed00c3b49e8","unresolved":true,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @property"},{"line_number":175,"context_line":"    def part_power(self):"},{"line_number":176,"context_line":"        return 32 - self._part_shift"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    @part_power.setter"},{"line_number":179,"context_line":"    def part_power(self, value):"}],"source_content_type":"text/x-python","patch_set":4,"id":"135fba0a_d5e25fb3","line":176,"updated":"2022-04-28 23:47:37.000000000","message":"This now matches ringdata","commit_id":"bd27b04c3c9f6c23599d0640e85e53ce84449384"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"56fa0a3979267d6ae0ec845cea1d1ed00c3b49e8","unresolved":true,"context_lines":[{"line_number":287,"context_line":"        previously saved."},{"line_number":288,"context_line":"        \"\"\""},{"line_number":289,"context_line":"        if hasattr(builder, \u0027devs\u0027):"},{"line_number":290,"context_line":"            self.history_count \u003d getattr(builder, \u0027builder_version\u0027, 1)"},{"line_number":291,"context_line":"            self._part_shift \u003d builder._part_shift"},{"line_number":292,"context_line":"            self.next_part_power \u003d builder.next_part_power"},{"line_number":293,"context_line":"            self.replicas \u003d builder.replicas"}],"source_content_type":"text/x-python","patch_set":4,"id":"150ee3f2_87beea86","line":290,"range":{"start_line":290,"start_character":17,"end_line":290,"end_character":30},"updated":"2022-04-28 23:47:37.000000000","message":"ops this is wrong. this could be builer_version. Will fix.","commit_id":"bd27b04c3c9f6c23599d0640e85e53ce84449384"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"56fa0a3979267d6ae0ec845cea1d1ed00c3b49e8","unresolved":true,"context_lines":[{"line_number":380,"context_line":"                \u0027dispersion\u0027: self.dispersion,"},{"line_number":381,"context_line":"                \u0027_remove_devs\u0027: self._remove_devs,"},{"line_number":382,"context_line":"                \u0027id\u0027: self._id,"},{"line_number":383,"context_line":"                \u0027builder_version\u0027: self.builder_version}"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    def change_min_part_hours(self, min_part_hours):"},{"line_number":386,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"f5835d7e_1cf3fca9","line":383,"updated":"2022-04-28 23:47:37.000000000","message":"Making the builder and ringdata dicts the same, so we can pass in a builder or a ringdata object to the serializers and get the data back out as we expect it.","commit_id":"bd27b04c3c9f6c23599d0640e85e53ce84449384"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c3211fe5652da8492fd0d3926add582d400c8edd","unresolved":true,"context_lines":[{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"    @classmethod"},{"line_number":1838,"context_line":"    def _load_pickle(cls, builder_file):"},{"line_number":1839,"context_line":"        with open(builder_file, \u0027rb\u0027) as fp:"},{"line_number":1840,"context_line":"            try:"},{"line_number":1841,"context_line":"                builder \u003d pickle.load(fp)"},{"line_number":1842,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9d5960fe_e14c72d9","line":1839,"updated":"2022-04-29 00:20:27.000000000","message":"Don\u0027t we still need the gunzip\u0027ing?\n\nOh, no, I\u0027m thinking of the rings... 🙄","commit_id":"bd27b04c3c9f6c23599d0640e85e53ce84449384"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8426565784e1d84603f5f797172a42887d392b3c","unresolved":true,"context_lines":[{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"    @classmethod"},{"line_number":1838,"context_line":"    def _load_pickle(cls, builder_file):"},{"line_number":1839,"context_line":"        with open(builder_file, \u0027rb\u0027) as fp:"},{"line_number":1840,"context_line":"            try:"},{"line_number":1841,"context_line":"                builder \u003d pickle.load(fp)"},{"line_number":1842,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fb0e5931_d8bf971f","line":1839,"in_reply_to":"9d5960fe_e14c72d9","updated":"2022-04-29 00:28:51.000000000","message":"Yeah, this is the picked backwards compat code path :)","commit_id":"bd27b04c3c9f6c23599d0640e85e53ce84449384"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c3211fe5652da8492fd0d3926add582d400c8edd","unresolved":true,"context_lines":[{"line_number":1900,"context_line":"            if builder_file.endswith(\u0027.ring.gz\u0027):"},{"line_number":1901,"context_line":"                builder \u003d cls._load_v2(builder_file)"},{"line_number":1902,"context_line":"            else:"},{"line_number":1903,"context_line":"                builder \u003d cls._load_pickle(builder_file, open)"},{"line_number":1904,"context_line":""},{"line_number":1905,"context_line":"        if not hasattr(builder, \u0027devs\u0027):"},{"line_number":1906,"context_line":"            builder_dict \u003d builder"}],"source_content_type":"text/x-python","patch_set":4,"id":"ca123576_83ca4aeb","line":1903,"range":{"start_line":1903,"start_character":57,"end_line":1903,"end_character":61},"updated":"2022-04-29 00:20:27.000000000","message":"What\u0027s this now?","commit_id":"bd27b04c3c9f6c23599d0640e85e53ce84449384"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8426565784e1d84603f5f797172a42887d392b3c","unresolved":true,"context_lines":[{"line_number":1900,"context_line":"            if builder_file.endswith(\u0027.ring.gz\u0027):"},{"line_number":1901,"context_line":"                builder \u003d cls._load_v2(builder_file)"},{"line_number":1902,"context_line":"            else:"},{"line_number":1903,"context_line":"                builder \u003d cls._load_pickle(builder_file, open)"},{"line_number":1904,"context_line":""},{"line_number":1905,"context_line":"        if not hasattr(builder, \u0027devs\u0027):"},{"line_number":1906,"context_line":"            builder_dict \u003d builder"}],"source_content_type":"text/x-python","patch_set":4,"id":"18e09722_562277fa","line":1903,"range":{"start_line":1903,"start_character":57,"end_line":1903,"end_character":61},"in_reply_to":"ca123576_83ca4aeb","updated":"2022-04-29 00:28:51.000000000","message":"I assume we passed in an open command for testing. Otherwise I don\u0027t know why we dont just always use open. The one on 1888 we need to confirm the file is there etc.\n\nMaybe I should just os.path.exists on 1888 to allow for non-existing builders (like when we initially create it) then move the \"open\" stuff to _load_pickle.","commit_id":"bd27b04c3c9f6c23599d0640e85e53ce84449384"}],"swift/common/ring/io.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":257,"context_line":"        self.filename \u003d filename"},{"line_number":258,"context_line":"        self.raw_fp \u003d tempfile.NamedTemporaryFile("},{"line_number":259,"context_line":"            dir\u003dos.path.dirname(os.path.realpath(filename)),"},{"line_number":260,"context_line":"            prefix\u003dos.path.basename(filename),"},{"line_number":261,"context_line":"            delete\u003dFalse)"},{"line_number":262,"context_line":"        self.gzip_fp \u003d gzip.GzipFile("},{"line_number":263,"context_line":"            filename, mode\u003d\u0027wb\u0027, fileobj\u003dself.raw_fp, mtime\u003dmtime)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e3b5ddec_727174a0","line":260,"updated":"2022-04-21 07:21:05.000000000","message":"This really needs to be fixed in Tim\u0027s initial patch. here now to make it work.","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"}],"swift/common/ring/utils.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":748,"context_line":"    \u0027swift/past2part2index\u0027, \u0027swift/past2part2dev_id\u0027]"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"BUILDER_SERIALIZATION_INDEXES_FIRST \u003d RING_SERIALIZATION_INDEXES + \\"},{"line_number":751,"context_line":"                                      [\u0027swift/builder_metadata\u0027]"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"class RingSerializeBase(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"de2cd3ee_41a8e1b3","line":751,"updated":"2022-04-21 07:21:05.000000000","message":"Info in the metadata is needed in a later serialailzer. So make sure it\u0027s loaded befor the last parts moved.","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":913,"context_line":"                    \u0027parts\u0027: ring[\u0027parts\u0027],"},{"line_number":914,"context_line":"                    \u0027devs_changed\u0027: ring[\u0027devs_changed\u0027],"},{"line_number":915,"context_line":"                    \u0027_last_part_moves_epoch\u0027: ring[\u0027_last_part_moves_epoch\u0027],"},{"line_number":916,"context_line":"                    # \u0027_last_part_moves\u0027: ring[\u0027_last_part_moves\u0027],"},{"line_number":917,"context_line":"                    \u0027_last_part_gather_start\u0027: ring[\u0027_last_part_gather_start\u0027],"},{"line_number":918,"context_line":"                    \u0027_remove_devs\u0027: ring[\u0027_remove_devs\u0027],"},{"line_number":919,"context_line":"                    \u0027overload\u0027: ring[\u0027overload\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"8d987747_07419c37","line":916,"updated":"2022-04-21 07:21:05.000000000","message":"This has been moved to it\u0027s own blob. This commentted out can be removed.","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"76465814dbce1ad29e92935bd7973db8aee75559","unresolved":false,"context_lines":[{"line_number":913,"context_line":"                    \u0027parts\u0027: ring[\u0027parts\u0027],"},{"line_number":914,"context_line":"                    \u0027devs_changed\u0027: ring[\u0027devs_changed\u0027],"},{"line_number":915,"context_line":"                    \u0027_last_part_moves_epoch\u0027: ring[\u0027_last_part_moves_epoch\u0027],"},{"line_number":916,"context_line":"                    # \u0027_last_part_moves\u0027: ring[\u0027_last_part_moves\u0027],"},{"line_number":917,"context_line":"                    \u0027_last_part_gather_start\u0027: ring[\u0027_last_part_gather_start\u0027],"},{"line_number":918,"context_line":"                    \u0027_remove_devs\u0027: ring[\u0027_remove_devs\u0027],"},{"line_number":919,"context_line":"                    \u0027overload\u0027: ring[\u0027overload\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"d175441e_0e45704e","line":916,"in_reply_to":"8d987747_07419c37","updated":"2022-04-21 07:23:09.000000000","message":"Ack","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":917,"context_line":"                    \u0027_last_part_gather_start\u0027: ring[\u0027_last_part_gather_start\u0027],"},{"line_number":918,"context_line":"                    \u0027_remove_devs\u0027: ring[\u0027_remove_devs\u0027],"},{"line_number":919,"context_line":"                    \u0027overload\u0027: ring[\u0027overload\u0027],"},{"line_number":920,"context_line":"                    # dispersion graph can\u0027t be json-ified. need to serialize"},{"line_number":921,"context_line":"                    # differently."},{"line_number":922,"context_line":"                    # \u0027_dispersion_graph\u0027: ring[\u0027_dispersion_graph\u0027],"},{"line_number":923,"context_line":"                    \u0027dispersion\u0027: ring[\u0027dispersion\u0027],"},{"line_number":924,"context_line":"                    \u0027_id\u0027: ring[\u0027id\u0027]}"},{"line_number":925,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"31496b81_8568f0f6","line":922,"range":{"start_line":920,"start_character":20,"end_line":922,"end_character":69},"updated":"2022-04-21 07:21:05.000000000","message":"dispersion is commented out because it can\u0027t be json-ified so in this patchset we don\u0027t serialise it. Will become it\u0027s own blob (like the last_parts_moved above).","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"56fa0a3979267d6ae0ec845cea1d1ed00c3b49e8","unresolved":true,"context_lines":[{"line_number":917,"context_line":"                    \u0027_last_part_gather_start\u0027: ring[\u0027_last_part_gather_start\u0027],"},{"line_number":918,"context_line":"                    \u0027_remove_devs\u0027: ring[\u0027_remove_devs\u0027],"},{"line_number":919,"context_line":"                    \u0027overload\u0027: ring[\u0027overload\u0027],"},{"line_number":920,"context_line":"                    # dispersion graph can\u0027t be json-ified. need to serialize"},{"line_number":921,"context_line":"                    # differently."},{"line_number":922,"context_line":"                    # \u0027_dispersion_graph\u0027: ring[\u0027_dispersion_graph\u0027],"},{"line_number":923,"context_line":"                    \u0027dispersion\u0027: ring[\u0027dispersion\u0027],"},{"line_number":924,"context_line":"                    \u0027_id\u0027: ring[\u0027id\u0027]}"},{"line_number":925,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"92ac76f3_7df865a5","line":922,"range":{"start_line":920,"start_character":20,"end_line":922,"end_character":69},"in_reply_to":"31496b81_8568f0f6","updated":"2022-04-28 23:47:37.000000000","message":"This is now in a follow up, I should remove this commented out section","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dbedb9ea7119a3c6d841cb4b5f1fcc7e9a6059df","unresolved":true,"context_lines":[{"line_number":960,"context_line":"        type_code \u003d BYTES_TO_TYPE_CODE[1]"},{"line_number":961,"context_line":"        with reader.open_section(self.index_name) as r:"},{"line_number":962,"context_line":"            setattr(self.ring, self.ring_attr,"},{"line_number":963,"context_line":"                    read_network_order_array("},{"line_number":964,"context_line":"                        type_code, r.read(self.ring.parts)))"}],"source_content_type":"text/x-python","patch_set":1,"id":"08c70401_7751aa18","line":963,"range":{"start_line":963,"start_character":20,"end_line":963,"end_character":44},"updated":"2022-04-21 07:21:05.000000000","message":"It\u0027s just 1 btye, so doesn\u0027t really need to be plumbed through this.","commit_id":"84cd92a7a43f742afc557d0aea3cac288da383d2"}]}
