)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2bb4cf883570049a98f6800658f358cff34d6946","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4ca729a2_ddb64a64","updated":"2022-05-03 20:21:00.000000000","message":"It\u0027s not obvious to me that servers_per_port makes sense in a containerized world. (Why run one container that fans out to listen on a range of ports when you could run a container-per-port, each wanting to bind to 127.0.0.1:6200 or something, and have the container-runner map each to the appropriate port in the ring?)\n\nIf it *is* something we want, this seems like a reasonable way to approach it, though.","commit_id":"86bb1939c8e4a0a117ab2386e03e09e4ade2af7a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f40e320dd77cc03ec02a479cbda0a5264728b177","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dc111d2e_288e670a","updated":"2022-05-31 20:10:02.000000000","message":"Should we update the replicator and reconciler, too? They both also want to know what IP to use when finding disks to process. Is the assumption that you\u0027ll want them running in separate container with separate configs? I feel like that\u0027s going to make it harder to make sure that things like reclaim_age are consistent across all the daemons.","commit_id":"d2c02ec0a34f78c1e71b559f05e2060a1ee59892"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"59d3bc58a0cabd0c0bf5eb81af388d4847f40388","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"90f07bd5_6e7fc807","updated":"2022-06-02 17:17:18.000000000","message":"I think we squash in the follow up\nI think the tests for the replicator/reconstructor changes could be better","commit_id":"56f0479a90b5b70207721704fe27da71b7aa57c0"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"ed9bfd7635f27465607174817a54fd7a1333ef1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8c28e73f_5141bd42","updated":"2022-06-02 17:35:53.000000000","message":"i squashed in Tim\u0027s follow-up and made the deamon tests how I like them","commit_id":"508ba13d71ffa4a3d3f295b8400f4598b5217547"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d093416ef5bc81458f8f503e871539de82adb7d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b0c8406b_08cf3d27","updated":"2022-06-02 20:58:39.000000000","message":"maybe those test timeouts are a realzy problem\n\ncontainer-sharder-6021: UNCAUGHT EXCEPTION\nTraceback (most recent call last):\n  File \"/usr/local/bin/swift-container-sharder\", line 7, in \u003cmodule\u003e\n    exec(compile(f.read(), __file__, \u0027exec\u0027))\n  File \"/vagrant/swift/bin/swift-container-sharder\", line 37, in \u003cmodule\u003e\n    run_daemon(ContainerSharder, conf_file, **options)\n  File \"/vagrant/swift/swift/common/daemon.py\", line 318, in run_daemon\n    DaemonStrategy(klass(conf), logger).run(once\u003donce, **kwargs)\n  File \"/vagrant/swift/swift/common/daemon.py\", line 158, in run\n    self._run(once\u003donce, **kwargs)\n  File \"/vagrant/swift/swift/common/daemon.py\", line 228, in _run\n    return self._run_inline(once, **kwargs)\n  File \"/vagrant/swift/swift/common/daemon.py\", line 152, in _run_inline\n    self.daemon.run(once\u003donce, **kwargs)\n  File \"/vagrant/swift/swift/common/daemon.py\", line 64, in run\n    self.run_once(**kwargs)\n  File \"/vagrant/swift/swift/container/sharder.py\", line 2181, in run_once\n    self._one_shard_cycle(devices_to_shard\u003ddevices_to_shard,\n  File \"/vagrant/swift/swift/container/sharder.py\", line 2088, in _one_shard_cycle\n    self.ips \u003d whataremyips(bind_ip\u003dself.bind_ip)\nTypeError: whataremyips() got an unexpected keyword argument \u0027bind_ip\u0027\n\n","commit_id":"508ba13d71ffa4a3d3f295b8400f4598b5217547"}],"etc/object-server.conf-sample":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2bb4cf883570049a98f6800658f358cff34d6946","unresolved":true,"context_lines":[{"line_number":26,"context_line":"# bind_ip to lookup the ports in the ring.  You may instead override the port"},{"line_number":27,"context_line":"# lookup in the ring using the ring_ip.  Any devices/ports associted with the"},{"line_number":28,"context_line":"# ring_ip will be used when listening on the configured bind_ip address."},{"line_number":29,"context_line":"# ring_ip \u003d \u003cbind_ip\u003e"},{"line_number":30,"context_line":"#"},{"line_number":31,"context_line":"# Maximum concurrent requests per worker"},{"line_number":32,"context_line":"# max_clients \u003d 1024"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"2ceda340_dd25ac6c","line":29,"updated":"2022-05-03 20:21:00.000000000","message":"Commit message could stand to call out the new option.\n\nIf you\u0027re running separate data/replication networks, you expect separate ring_ip values for the two server configs, right?\n\nProbably want to move it up to the [DEFAULT] section; anybody that calls whataremyips() is likely going to need it. I\u0027m a little nervous about the call in _get_my_replication_ips() in swift/obj/replicator.py, though.","commit_id":"86bb1939c8e4a0a117ab2386e03e09e4ade2af7a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f40e320dd77cc03ec02a479cbda0a5264728b177","unresolved":false,"context_lines":[{"line_number":26,"context_line":"# bind_ip to lookup the ports in the ring.  You may instead override the port"},{"line_number":27,"context_line":"# lookup in the ring using the ring_ip.  Any devices/ports associted with the"},{"line_number":28,"context_line":"# ring_ip will be used when listening on the configured bind_ip address."},{"line_number":29,"context_line":"# ring_ip \u003d \u003cbind_ip\u003e"},{"line_number":30,"context_line":"#"},{"line_number":31,"context_line":"# Maximum concurrent requests per worker"},{"line_number":32,"context_line":"# max_clients \u003d 1024"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"69d2e9fd_e1718f66","line":29,"in_reply_to":"2ceda340_dd25ac6c","updated":"2022-05-31 20:10:02.000000000","message":"\u003e If you\u0027re running separate data/replication networks, you expect separate ring_ip values for the two server configs, right?\n\nPresumably, but replication server won\u0027t be running servers_per_port anyway:\n\n* https://bugs.launchpad.net/swift/+bug/1669579\n* https://review.opendev.org/c/openstack/swift/+/337861\n\n\u003e Probably want to move it up to the [DEFAULT] section\n\nI was being dumb; this is already in [DEFAULT]\n\n\u003e I\u0027m a little nervous about the call in _get_my_replication_ips() in swift/obj/replicator.py\n\nLooks like this is never actually used? I mean, it\u0027s called -- but we never do anything with the result!","commit_id":"86bb1939c8e4a0a117ab2386e03e09e4ade2af7a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"66f17253c6bfbd1e13d29ca8a421a9d6da90e221","unresolved":false,"context_lines":[{"line_number":26,"context_line":"# bind_ip to lookup the ports in the ring.  You may instead override the port"},{"line_number":27,"context_line":"# lookup in the ring using the ring_ip.  Any devices/ports associted with the"},{"line_number":28,"context_line":"# ring_ip will be used when listening on the configured bind_ip address."},{"line_number":29,"context_line":"# ring_ip \u003d \u003cbind_ip\u003e"},{"line_number":30,"context_line":"#"},{"line_number":31,"context_line":"# Maximum concurrent requests per worker"},{"line_number":32,"context_line":"# max_clients \u003d 1024"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"5282d5a6_ca707cba","line":29,"in_reply_to":"69d2e9fd_e1718f66","updated":"2022-06-01 20:55:01.000000000","message":"https://review.opendev.org/c/openstack/swift/+/844128 for the dead code.","commit_id":"86bb1939c8e4a0a117ab2386e03e09e4ade2af7a"}],"swift/common/wsgi.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2bb4cf883570049a98f6800658f358cff34d6946","unresolved":true,"context_lines":[{"line_number":870,"context_line":"        # bind_ip might be differnt than the host ip address used to lookup"},{"line_number":871,"context_line":"        # devices/ports in the ring"},{"line_number":872,"context_line":"        ring_ip \u003d conf.get(\u0027ring_ip\u0027, conf.get(\u0027bind_ip\u0027, \u00270.0.0.0\u0027))"},{"line_number":873,"context_line":"        self.cache \u003d BindPortsCache(self.swift_dir, ring_ip)"},{"line_number":874,"context_line":""},{"line_number":875,"context_line":"    def _reload_bind_ports(self):"},{"line_number":876,"context_line":"        self.bind_ports \u003d self.cache.all_bind_ports_for_node()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5e60b174_6d87e447","line":873,"range":{"start_line":873,"start_character":52,"end_line":873,"end_character":59},"updated":"2022-05-03 20:21:00.000000000","message":"\"ring_ip\" seems like a good name -- should we rename that in BindPortsCache, too? And maybe whataremyips?","commit_id":"86bb1939c8e4a0a117ab2386e03e09e4ade2af7a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"66f17253c6bfbd1e13d29ca8a421a9d6da90e221","unresolved":true,"context_lines":[{"line_number":870,"context_line":"        # bind_ip might be differnt than the host ip address used to lookup"},{"line_number":871,"context_line":"        # devices/ports in the ring"},{"line_number":872,"context_line":"        ring_ip \u003d conf.get(\u0027ring_ip\u0027, conf.get(\u0027bind_ip\u0027, \u00270.0.0.0\u0027))"},{"line_number":873,"context_line":"        self.cache \u003d BindPortsCache(self.swift_dir, ring_ip)"},{"line_number":874,"context_line":""},{"line_number":875,"context_line":"    def _reload_bind_ports(self):"},{"line_number":876,"context_line":"        self.bind_ports \u003d self.cache.all_bind_ports_for_node()"}],"source_content_type":"text/x-python","patch_set":1,"id":"30cb6bf6_079d1371","line":873,"range":{"start_line":873,"start_character":52,"end_line":873,"end_character":59},"in_reply_to":"5e60b174_6d87e447","updated":"2022-06-01 20:55:01.000000000","message":"https://review.opendev.org/c/openstack/swift/+/844338","commit_id":"86bb1939c8e4a0a117ab2386e03e09e4ade2af7a"}],"swift/container/sharder.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8a970d94984e9504697f693b412cacf917a03178","unresolved":true,"context_lines":[{"line_number":2085,"context_line":"        self._zero_stats()"},{"line_number":2086,"context_line":"        self._local_device_ids \u003d set()"},{"line_number":2087,"context_line":"        dirs \u003d []"},{"line_number":2088,"context_line":"        self.ips \u003d whataremyips(self.bind_ip)"},{"line_number":2089,"context_line":"        for node in self.ring.devs:"},{"line_number":2090,"context_line":"            device_path \u003d self._check_node(node)"},{"line_number":2091,"context_line":"            if not device_path:"}],"source_content_type":"text/x-python","patch_set":5,"id":"0fc0c6ac_e4811385","line":2088,"range":{"start_line":2088,"start_character":37,"end_line":2088,"end_character":44},"updated":"2022-06-06 19:48:57.000000000","message":"Oh -- we might should update db_replicator, too -- it\u0027s not actually \"binding\" anything, just wants to know its ring_ip... OTOH, it\u0027s not like we need the new config option, either, and not *needing* it, it\u0027s better to not *add* it at all, so... *shrug*","commit_id":"12bc79bf01e7619e4dc6ad549566702a289af62b"}],"swift/obj/reconstructor.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"59d3bc58a0cabd0c0bf5eb81af388d4847f40388","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        self.devices_dir \u003d conf.get(\u0027devices\u0027, \u0027/srv/node\u0027)"},{"line_number":170,"context_line":"        self.mount_check \u003d config_true_value(conf.get(\u0027mount_check\u0027, \u0027true\u0027))"},{"line_number":171,"context_line":"        self.swift_dir \u003d conf.get(\u0027swift_dir\u0027, \u0027/etc/swift\u0027)"},{"line_number":172,"context_line":"        self.bind_ip \u003d conf.get(\u0027ring_ip\u0027, conf.get(\u0027bind_ip\u0027, \u00270.0.0.0\u0027))"},{"line_number":173,"context_line":"        self.servers_per_port \u003d int(conf.get(\u0027servers_per_port\u0027, \u00270\u0027) or 0)"},{"line_number":174,"context_line":"        self.port \u003d None if self.servers_per_port else \\"},{"line_number":175,"context_line":"            int(conf.get(\u0027bind_port\u0027, 6200))"}],"source_content_type":"text/x-python","patch_set":3,"id":"978243eb_f2716034","line":172,"updated":"2022-06-02 17:17:18.000000000","message":"yeah i can see how it\u0027d be better to call this self.ring_ip","commit_id":"56f0479a90b5b70207721704fe27da71b7aa57c0"}],"test/unit/obj/test_reconstructor.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"59d3bc58a0cabd0c0bf5eb81af388d4847f40388","unresolved":true,"context_lines":[{"line_number":3052,"context_line":"            \u0027devices\u0027: self.devices,"},{"line_number":3053,"context_line":"            \u0027mount_check\u0027: False,"},{"line_number":3054,"context_line":"            \u0027ring_ip\u0027: self.ip,"},{"line_number":3055,"context_line":"            \u0027bind_ip\u0027: \u0027ignored\u0027,"},{"line_number":3056,"context_line":"            \u0027bind_port\u0027: self.port,"},{"line_number":3057,"context_line":"        }"},{"line_number":3058,"context_line":"        self.logger \u003d debug_logger(\u0027object-reconstructor\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"4400ac00_fa7aad00","line":3055,"updated":"2022-06-02 17:17:18.000000000","message":"meh, a new change specific test would be better than adding an ignored value to base conf of ever test","commit_id":"56f0479a90b5b70207721704fe27da71b7aa57c0"}],"test/unit/obj/test_replicator.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"59d3bc58a0cabd0c0bf5eb81af388d4847f40388","unresolved":true,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    def test_run_once(self):"},{"line_number":339,"context_line":"        conf \u003d dict(swift_dir\u003dself.testdir, devices\u003dself.devices,"},{"line_number":340,"context_line":"                    ring_ip\u003d_ips()[0], recon_cache_path\u003dself.recon_cache,"},{"line_number":341,"context_line":"                    mount_check\u003d\u0027false\u0027, timeout\u003d\u0027300\u0027, stats_interval\u003d\u00271\u0027)"},{"line_number":342,"context_line":"        replicator \u003d object_replicator.ObjectReplicator(conf,"},{"line_number":343,"context_line":"                                                        logger\u003dself.logger)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffda1b27_84fd5f6d","line":340,"updated":"2022-06-02 17:17:18.000000000","message":"bind_ip continued to work fine too right?","commit_id":"56f0479a90b5b70207721704fe27da71b7aa57c0"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"59d3bc58a0cabd0c0bf5eb81af388d4847f40388","unresolved":true,"context_lines":[{"line_number":691,"context_line":"        _create_test_rings(self.testdir, devs)"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"        self.conf[\u0027ring_ip\u0027] \u003d \u0027127.0.0.1\u0027"},{"line_number":694,"context_line":"        self.conf[\u0027bind_ip\u0027] \u003d \u0027127.0.0.2\u0027"},{"line_number":695,"context_line":"        self._create_replicator()"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        jobs \u003d self.replicator.collect_jobs()"}],"source_content_type":"text/x-python","patch_set":3,"id":"61df7884_f4110cf9","line":694,"updated":"2022-06-02 17:17:18.000000000","message":"I don\u0027t think this test change makes it so super obvious that ring_ip takes precedence or that we can fall back to bind_ip","commit_id":"56f0479a90b5b70207721704fe27da71b7aa57c0"}]}
