)]}'
{"swift/proxy/controllers/obj.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"beb92cc8a9caa2744d7c376f581680255999e105","unresolved":false,"context_lines":[{"line_number":2438,"context_line":"            statuses \u003d []"},{"line_number":2439,"context_line":"            reasons \u003d []"},{"line_number":2440,"context_line":"            bodies \u003d []"},{"line_number":2441,"context_line":"            headers \u003d []"},{"line_number":2442,"context_line":"            for getter, _parts_iter in bad_bucket.get_responses():"},{"line_number":2443,"context_line":"                if best_bucket and best_bucket.durable:"},{"line_number":2444,"context_line":"                    bad_resp_headers \u003d HeaderKeyDict(getter.last_headers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_d56b2582","line":2441,"range":{"start_line":2441,"start_character":12,"end_line":2441,"end_character":19},"updated":"2020-04-27 23:18:48.000000000","message":"Oops.","commit_id":"10755d8ef8feb54a129bdd57204230c06c9f5199"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"89759987a0dad1437f68cf413ef3c23136feac8c","unresolved":false,"context_lines":[{"line_number":2442,"context_line":"            for getter, _parts_iter in bad_bucket.get_responses():"},{"line_number":2443,"context_line":"                if best_bucket and best_bucket.durable:"},{"line_number":2444,"context_line":"                    bad_resp_headers \u003d HeaderKeyDict(getter.last_headers)"},{"line_number":2445,"context_line":"                    t_data_file \u003d bad_resp_headers.get(\u0027X-Backend-Data-Timestamp\u0027)"},{"line_number":2446,"context_line":"                    t_obj \u003d bad_resp_headers.get(\u0027X-Backend-Timestamp\u0027,"},{"line_number":2447,"context_line":"                                        bad_resp_headers.get(\u0027X-Timestamp\u0027))"},{"line_number":2448,"context_line":"                    bad_ts \u003d Timestamp(t_data_file or t_obj or \u00270\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_b571390f","line":2445,"updated":"2020-04-27 23:49:35.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"10755d8ef8feb54a129bdd57204230c06c9f5199"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"89759987a0dad1437f68cf413ef3c23136feac8c","unresolved":false,"context_lines":[{"line_number":2444,"context_line":"                    bad_resp_headers \u003d HeaderKeyDict(getter.last_headers)"},{"line_number":2445,"context_line":"                    t_data_file \u003d bad_resp_headers.get(\u0027X-Backend-Data-Timestamp\u0027)"},{"line_number":2446,"context_line":"                    t_obj \u003d bad_resp_headers.get(\u0027X-Backend-Timestamp\u0027,"},{"line_number":2447,"context_line":"                                        bad_resp_headers.get(\u0027X-Timestamp\u0027))"},{"line_number":2448,"context_line":"                    bad_ts \u003d Timestamp(t_data_file or t_obj or \u00270\u0027)"},{"line_number":2449,"context_line":"                    if bad_ts \u003c\u003d Timestamp(best_bucket.timestamp_str):"},{"line_number":2450,"context_line":"                        # We have reason to believe there\u0027s still good data"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_15646d49","line":2447,"updated":"2020-04-27 23:49:35.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"10755d8ef8feb54a129bdd57204230c06c9f5199"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"beb92cc8a9caa2744d7c376f581680255999e105","unresolved":false,"context_lines":[{"line_number":2453,"context_line":"                statuses.extend(getter.statuses)"},{"line_number":2454,"context_line":"                reasons.extend(getter.reasons)"},{"line_number":2455,"context_line":"                bodies.extend(getter.bodies)"},{"line_number":2456,"context_line":"                headers.extend(getter.source_headers)"},{"line_number":2457,"context_line":""},{"line_number":2458,"context_line":"            if not statuses and best_bucket and not best_bucket.durable:"},{"line_number":2459,"context_line":"                # pretend that non-durable bucket was 404s"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_b5681987","line":2456,"range":{"start_line":2456,"start_character":16,"end_line":2456,"end_character":30},"updated":"2020-04-27 23:18:48.000000000","message":":-(\n\n AttributeError: \u0027HeaderKeyDict\u0027 object has no attribute \u0027extend\u0027","commit_id":"10755d8ef8feb54a129bdd57204230c06c9f5199"}],"test/unit/proxy/controllers/test_obj.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"63df3a2ff80e5c71f99967e3907e49ae2acaa30f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":"# Copyright (c) 2010-2012 OpenStack Foundation"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f493fa4_b5713479","line":1,"updated":"2020-04-28 07:13:06.000000000","message":"pep8: E902 TokenError: EOF in multi-line statement","commit_id":"64333851c74cbc546123f8cef83383ce32d412d1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"34ecd4a8647c1b279247708124fd1e4eb5ddb38c","unresolved":false,"context_lines":[{"line_number":2290,"context_line":"        ts_iter \u003d iter([1, 2] + [1] * rest)"},{"line_number":2291,"context_line":"        with set_http_connect(*codes, timestamps\u003dts_iter):"},{"line_number":2292,"context_line":"            resp \u003d req.get_response(self.app)"},{"line_number":2293,"context_line":"        self.assertEqual(resp.status_int, 404)"},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"    def _test_if_match(self, method):"},{"line_number":2296,"context_line":"        num_responses \u003d self.policy.ec_ndata if method \u003d\u003d \u0027GET\u0027 else 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_82b60adc","line":2293,"updated":"2020-05-04 14:50:28.000000000","message":"What a crap bug\n\n\tFAIL: test_GET_not_found_when_404_newer (test.unit.proxy.controllers.test_obj.TestECObjController)\n\t----------------------------------------------------------------------\n\tTraceback (most recent call last):\n\t  File \"/home/vagrant/swift/test/unit/proxy/controllers/test_obj.py\", line 2293, in test_GET_not_found_when_404_newer\n\t    self.assertEqual(resp.status_int, 404)\n\tAssertionError: 500 !\u003d 404\n\t-------------------- \u003e\u003e begin captured stdout \u003c\u003c ---------------------\n\tproxy-server DEBUG: Loaded override config for (default): ProxyOverrideOptions({}, {\u0027sorting_method\u0027: \u0027shuffle\u0027, \u0027read_affinity\u0027: \u0027\u0027, \u0027write_affinity\u0027: \u0027\u0027, \u0027write_affinity_node_count\u0027: \u00272 * replicas\u0027, \u0027write_affinity_handoff_delete_count\u0027: None}) (txn: txn1) (client_ip: 127.0.0.2)\n\tproxy-server ERROR: ERROR Unhandled exception in request: \n\tTraceback (most recent call last):\n\t  File \"/home/vagrant/swift/swift/proxy/server.py\", line 572, in handle_request\n\t    return handler(req)\n\t  File \"/home/vagrant/swift/swift/proxy/controllers/base.py\", line 291, in wrapped\n\t    return func(*a, **kw)\n\t  File \"/home/vagrant/swift/swift/proxy/controllers/obj.py\", line 264, in GET\n\t    return self.GETorHEAD(req)\n\t  File \"/home/vagrant/swift/swift/proxy/controllers/obj.py\", line 252, in GETorHEAD\n\t    resp \u003d self._get_or_head_response(req, node_iter, partition, policy)\n\t  File \"/home/vagrant/swift/swift/proxy/controllers/obj.py\", line 2456, in _get_or_head_response\n\t    headers.extend(getter.source_headers)\n\tAttributeError: \u0027HeaderKeyDict\u0027 object has no attribute \u0027extend\u0027 (txn: tx93bb437c52924ab197815-005eb02b4e)","commit_id":"4c8512afb16c831f9d58b58457aa9b2adfda88df"}]}
