)]}'
{"swift/proxy/controllers/obj.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ad79b5bf35888599c6e6c9a3016ca88ce8d9beae","unresolved":false,"context_lines":[{"line_number":2782,"context_line":"class ECObjectController(BaseObjectController):"},{"line_number":2783,"context_line":"    def _fragment_GET_request("},{"line_number":2784,"context_line":"            self, req, node_iter, partition, policy,"},{"line_number":2785,"context_line":"            header_provider\u003dNone, logger_thread_locals\u003dNone):"},{"line_number":2786,"context_line":"        \"\"\""},{"line_number":2787,"context_line":"        Makes a GET request for a fragment."},{"line_number":2788,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_e5beb8ac","line":2785,"range":{"start_line":2785,"start_character":27,"end_line":2785,"end_character":32},"updated":"2020-09-02 18:41:58.000000000","message":"Maybe we should just make these required?","commit_id":"c95adf4ac145b40417cb34c65a69901ca594a2f7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d4ca02a38c66e9eb4e2cf4079c8adc72afb1dabc","unresolved":false,"context_lines":[{"line_number":2782,"context_line":"class ECObjectController(BaseObjectController):"},{"line_number":2783,"context_line":"    def _fragment_GET_request("},{"line_number":2784,"context_line":"            self, req, node_iter, partition, policy,"},{"line_number":2785,"context_line":"            header_provider\u003dNone, logger_thread_locals\u003dNone):"},{"line_number":2786,"context_line":"        \"\"\""},{"line_number":2787,"context_line":"        Makes a GET request for a fragment."},{"line_number":2788,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_c048c22f","line":2785,"range":{"start_line":2785,"start_character":27,"end_line":2785,"end_character":32},"in_reply_to":"9f560f44_e5beb8ac","updated":"2020-09-02 19:18:29.000000000","message":"yeah!!!","commit_id":"c95adf4ac145b40417cb34c65a69901ca594a2f7"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ad79b5bf35888599c6e6c9a3016ca88ce8d9beae","unresolved":false,"context_lines":[{"line_number":2859,"context_line":"                    # primary we won\u0027t find out until the next pass"},{"line_number":2860,"context_line":"                    pile.spawn(self._fragment_GET_request,"},{"line_number":2861,"context_line":"                               req, safe_iter, partition,"},{"line_number":2862,"context_line":"                               policy, buckets.get_extra_headers)"},{"line_number":2863,"context_line":"                else:"},{"line_number":2864,"context_line":"                    # ran out of primaries"},{"line_number":2865,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_05abec74","line":2862,"updated":"2020-09-02 18:41:58.000000000","message":"Need this one, too.","commit_id":"c95adf4ac145b40417cb34c65a69901ca594a2f7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d5eea19be919416a8608691d13a99386637db651","unresolved":false,"context_lines":[{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        with ContextPool(len(fragment_iters)) as pool:"},{"line_number":1415,"context_line":"            for frag_iter, queue in zip(fragment_iters, queues):"},{"line_number":1416,"context_line":"                pool.spawn(put_fragments_in_queue, frag_iter, queue)"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"            while True:"},{"line_number":1419,"context_line":"                fragments \u003d []"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_42fdf16c","line":1416,"updated":"2020-09-16 19:28:33.000000000","message":"so crossing through this spawn is what makes the ECFragGetter inside the frag_iter forget it\u0027s txnid\n\nI don\u0027t know how understanding that really helps me though","commit_id":"d5625abf6078dce9bb6c2dacf519de39c24d5ed4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b67a71fc6b8da17aef5fa4dbc89a7434cd987af7","unresolved":false,"context_lines":[{"line_number":2775,"context_line":"        self.status \u003d self.reason \u003d self.body \u003d self.source_headers \u003d None"},{"line_number":2776,"context_line":"        for node in self.node_iter:"},{"line_number":2777,"context_line":"            source \u003d self._make_node_request("},{"line_number":2778,"context_line":"                node, self.app.recoverable_node_timeout)"},{"line_number":2779,"context_line":""},{"line_number":2780,"context_line":"            if source:"},{"line_number":2781,"context_line":"                self.node \u003d node"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_cf50850d","line":2778,"updated":"2020-09-16 18:58:26.000000000","message":"but this is always serial right?","commit_id":"d5625abf6078dce9bb6c2dacf519de39c24d5ed4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b67a71fc6b8da17aef5fa4dbc89a7434cd987af7","unresolved":false,"context_lines":[{"line_number":2802,"context_line":"        \"\"\""},{"line_number":2803,"context_line":"        Makes a GET request for a fragment."},{"line_number":2804,"context_line":"        \"\"\""},{"line_number":2805,"context_line":"        self.app.logger.thread_locals \u003d logger_thread_locals"},{"line_number":2806,"context_line":"        backend_headers \u003d self.generate_request_headers("},{"line_number":2807,"context_line":"            req, additional\u003dreq.headers)"},{"line_number":2808,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_6f417939","line":2805,"updated":"2020-09-16 18:58:26.000000000","message":"we spawn _fragment_GET_request all the time having it required here is *great*","commit_id":"d5625abf6078dce9bb6c2dacf519de39c24d5ed4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b67a71fc6b8da17aef5fa4dbc89a7434cd987af7","unresolved":false,"context_lines":[{"line_number":2808,"context_line":""},{"line_number":2809,"context_line":"        getter \u003d ECFragGetter(self.app, req, node_iter, partition,"},{"line_number":2810,"context_line":"                              policy, req.swift_entity_path, backend_headers,"},{"line_number":2811,"context_line":"                              header_provider, logger_thread_locals)"},{"line_number":2812,"context_line":"        return (getter, getter.response_parts_iter(req))"},{"line_number":2813,"context_line":""},{"line_number":2814,"context_line":"    def _convert_range(self, req, policy):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_4f3c75be","line":2811,"updated":"2020-09-16 18:58:26.000000000","message":"why do we need to pass this in to the ECFragGetter if the app.logger\u0027s locals are already updated","commit_id":"d5625abf6078dce9bb6c2dacf519de39c24d5ed4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b67a71fc6b8da17aef5fa4dbc89a7434cd987af7","unresolved":false,"context_lines":[{"line_number":2876,"context_line":"                    pile.spawn(self._fragment_GET_request,"},{"line_number":2877,"context_line":"                               req, safe_iter, partition,"},{"line_number":2878,"context_line":"                               policy, buckets.get_extra_headers,"},{"line_number":2879,"context_line":"                               logger_thread_locals)"},{"line_number":2880,"context_line":"                else:"},{"line_number":2881,"context_line":"                    # ran out of primaries"},{"line_number":2882,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_af47114c","line":2879,"updated":"2020-09-16 18:58:26.000000000","message":"nice pass through here - very good","commit_id":"d5625abf6078dce9bb6c2dacf519de39c24d5ed4"}],"test/unit/__init__.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ad79b5bf35888599c6e6c9a3016ca88ce8d9beae","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        FakeLogger.__init__(self, *args, **kwargs)"},{"line_number":675,"context_line":"        self.formatter \u003d DebugSwiftLogFormatter("},{"line_number":676,"context_line":"            \"%(server)s %(levelname)s: %(message)s\")"},{"line_number":677,"context_line":"        self.records \u003d defaultdict(list)"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def handle(self, record):"},{"line_number":680,"context_line":"        self._handle(record)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_c5f7348c","line":677,"updated":"2020-09-02 18:41:58.000000000","message":"I was about to say, this feels *so much* like self.log_dict :-/","commit_id":"c95adf4ac145b40417cb34c65a69901ca594a2f7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"88cb10277c486b3e1d80bf4df47790c2846a6799","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        FakeLogger.__init__(self, *args, **kwargs)"},{"line_number":675,"context_line":"        self.formatter \u003d DebugSwiftLogFormatter("},{"line_number":676,"context_line":"            \"%(server)s %(levelname)s: %(message)s\")"},{"line_number":677,"context_line":"        self.records \u003d defaultdict(list)"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def handle(self, record):"},{"line_number":680,"context_line":"        self._handle(record)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_25b9d0ca","line":677,"updated":"2020-09-02 18:37:16.000000000","message":"there\u0027s a lot that goes into these formatted records that makes them less than ideal for general assertions; and it sucks to have to have this DebugLogger machinary tracking all the lines twice...\n\nbut sometimes you really wanna assert what\u0027s going out to syslog!","commit_id":"c95adf4ac145b40417cb34c65a69901ca594a2f7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"88cb10277c486b3e1d80bf4df47790c2846a6799","unresolved":false,"context_lines":[{"line_number":679,"context_line":"    def handle(self, record):"},{"line_number":680,"context_line":"        self._handle(record)"},{"line_number":681,"context_line":"        formatted \u003d self.formatter.format(record)"},{"line_number":682,"context_line":"        print(formatted)"},{"line_number":683,"context_line":"        self.records[record.levelname].append(formatted)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_25def00f","line":682,"updated":"2020-09-02 18:37:16.000000000","message":"the clue was the txid showing up with I turned off nose capture logging - but not when i asserted on get_lines_for_level :angry:","commit_id":"c95adf4ac145b40417cb34c65a69901ca594a2f7"}],"test/unit/proxy/controllers/test_obj.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ad79b5bf35888599c6e6c9a3016ca88ce8d9beae","unresolved":false,"context_lines":[{"line_number":2456,"context_line":"            resp \u003d req.get_response(self.app)"},{"line_number":2457,"context_line":"        self.assertEqual(resp.status_int, 200)"},{"line_number":2458,"context_line":"        self.assertEqual(self.policy.ec_ndata + 1, len(log.requests))"},{"line_number":2459,"context_line":"        retry_line \u003d self.logger.logger.records[\u0027ERROR\u0027][0]"},{"line_number":2460,"context_line":"        self.assertIn(\u0027ERROR with Object server\u0027, retry_line)"},{"line_number":2461,"context_line":"        self.assertIn(\u0027Trying to GET\u0027, retry_line)"},{"line_number":2462,"context_line":"        self.assertIn(\u0027Timeout (0.01s)\u0027, retry_line)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_452964f0","line":2459,"range":{"start_line":2459,"start_character":57,"end_line":2459,"end_character":58},"updated":"2020-09-02 18:41:58.000000000","message":"Worth checking all of them?","commit_id":"c95adf4ac145b40417cb34c65a69901ca594a2f7"}]}
