)]}'
{"swift/obj/reconstructor.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"a8cc4f626141c1a548a8b43277283f7b089decdf","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            conf.get(\u0027ssync_requests_concurrency\u0027, 1))"},{"line_number":158,"context_line":"        if self.ssync_requests_concurrency \u003c 1:"},{"line_number":159,"context_line":"            raise ValueError(\u0027ssync_requests_concurrency must be stricly \u0027"},{"line_number":160,"context_line":"                             \u0027positive\u0027)"},{"line_number":161,"context_line":"        # N.B. to maintain compatibility with legacy configs this option can"},{"line_number":162,"context_line":"        # not be named \u0027workers\u0027 because the object-server uses that option"},{"line_number":163,"context_line":"        # name in the DEFAULT section"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e79ef6b4","line":160,"updated":"2018-12-18 05:07:06.000000000","message":"We could use the swift.utils.config_positive_int_value() here. Which will error on anything that isn\u0027t and int and \u003c 1.","commit_id":"29d15a1da5f6dc8b1ba0cb66e41e292cbfb2555b"}],"swift/obj/replicator.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"a8cc4f626141c1a548a8b43277283f7b089decdf","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            conf.get(\u0027ssync_requests_concurrency\u0027, 1))"},{"line_number":143,"context_line":"        if self.ssync_requests_concurrency \u003c 1:"},{"line_number":144,"context_line":"            raise ValueError(\u0027ssync_requests_concurrency must be stricly \u0027"},{"line_number":145,"context_line":"                             \u0027positive\u0027)"},{"line_number":146,"context_line":"        self.replicator_workers \u003d int(conf.get(\u0027replicator_workers\u0027, 0))"},{"line_number":147,"context_line":"        self.stats_interval \u003d int(conf.get(\u0027stats_interval\u0027, \u0027300\u0027))"},{"line_number":148,"context_line":"        self.ring_check_interval \u003d int(conf.get(\u0027ring_check_interval\u0027, 15))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_87a5c204","line":145,"updated":"2018-12-18 05:07:06.000000000","message":"here to","commit_id":"29d15a1da5f6dc8b1ba0cb66e41e292cbfb2555b"}],"swift/obj/ssync_sender.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"476d18b2fc65ec06e35b0abf3d5780babf2cea83","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                    for _ in range(self.daemon.ssync_requests_concurrency - 1):"},{"line_number":184,"context_line":"                        try:"},{"line_number":185,"context_line":"                            conn, resp \u003d self.connect(subrequest\u003dTrue)"},{"line_number":186,"context_line":"                        except Exception:"},{"line_number":187,"context_line":"                            self.daemon.logger.exception("},{"line_number":188,"context_line":"                                \u0027Failed to establish a new SSYNC connection\u0027)"},{"line_number":189,"context_line":"                            continue"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_60f2826c","line":186,"updated":"2018-12-21 05:54:20.000000000","message":"Exception here is a little broad. Shouldn\u0027t we tighten it up to:\n\n  except (exceptions.MessageTimeout, exceptions.ReplicationException):\n\nAnd of course anything else that we may expect?","commit_id":"29d15a1da5f6dc8b1ba0cb66e41e292cbfb2555b"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"476d18b2fc65ec06e35b0abf3d5780babf2cea83","unresolved":false,"context_lines":[{"line_number":357,"context_line":"            queue.put((None, None))"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"        # Consume the results"},{"line_number":360,"context_line":"        results \u003d []"},{"line_number":361,"context_line":"        exception \u003d None"},{"line_number":362,"context_line":"        for worker in workers:"},{"line_number":363,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_80823ea2","line":360,"updated":"2018-12-21 05:54:20.000000000","message":"We don\u0027t do anything with these results. In fact _updates doesn\u0027t return anything.","commit_id":"29d15a1da5f6dc8b1ba0cb66e41e292cbfb2555b"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"476d18b2fc65ec06e35b0abf3d5780babf2cea83","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        for worker in workers:"},{"line_number":363,"context_line":"            try:"},{"line_number":364,"context_line":"                results.append(worker.wait())"},{"line_number":365,"context_line":"            except Exception as e:"},{"line_number":366,"context_line":"                exception \u003d e"},{"line_number":367,"context_line":"        if exception:"},{"line_number":368,"context_line":"            raise exception"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_00970eeb","line":365,"updated":"2018-12-21 05:54:20.000000000","message":"Exception is a little broad here too, I wonder if we can reduce that.","commit_id":"29d15a1da5f6dc8b1ba0cb66e41e292cbfb2555b"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"476d18b2fc65ec06e35b0abf3d5780babf2cea83","unresolved":false,"context_lines":[{"line_number":363,"context_line":"            try:"},{"line_number":364,"context_line":"                results.append(worker.wait())"},{"line_number":365,"context_line":"            except Exception as e:"},{"line_number":366,"context_line":"                exception \u003d e"},{"line_number":367,"context_line":"        if exception:"},{"line_number":368,"context_line":"            raise exception"},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_20456a72","line":366,"updated":"2018-12-21 05:54:20.000000000","message":"Is so is the point of this for loop to wait for all the threads?\n\nWould replacing it with something like:\n\n  all(workers)\n\nedit: oh yeah, we\u0027re not using a pile, greenpile or anything, it\u0027s just spawn. If we used a pile we could use something like:\n\n  all(workers)\n\nBut happy with a loop and wait. though if _updates only returns None or raise expections we dont need the results do we and just:\n\n  worker.wait()","commit_id":"29d15a1da5f6dc8b1ba0cb66e41e292cbfb2555b"}]}
