)]}'
{"swift/common/direct_client.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2a96ad1aad920ce98f7e23fea58f1529901744ba","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        headers \u003d {}"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    have_x_timestamp \u003d \u0027x-timestamp\u0027 in (k.lower() for k in headers)"},{"line_number":331,"context_line":"    add_user_agent \u003d \u0027user-agent\u0027 not in (k.lower() for k in headers)"},{"line_number":332,"context_line":"    headers_out \u003d gen_headers(headers, add_ts\u003d(not have_x_timestamp),"},{"line_number":333,"context_line":"                              add_user_agent\u003dadd_user_agent)"},{"line_number":334,"context_line":"    path \u003d \u0027/%s/%s\u0027 % (account, container)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_208de7d2","line":331,"updated":"2018-03-20 19:35:08.000000000","message":"meh, lower_headers \u003d ...","commit_id":"729517d5f86dcb34127c2c976949aaea86168603"}],"swift/container/sharder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2a96ad1aad920ce98f7e23fea58f1529901744ba","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                 conn_timeout\u003dself.conn_timeout,"},{"line_number":165,"context_line":"                                 response_timeout\u003dself.node_timeout,"},{"line_number":166,"context_line":"                                 headers\u003dheaders, contents\u003dbody)"},{"line_number":167,"context_line":"        except Exception as err:"},{"line_number":168,"context_line":"            self.logger.warning("},{"line_number":169,"context_line":"                \u0027Failed to put shard ranges to %s:%s/%s: %s\u0027,"},{"line_number":170,"context_line":"                node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027], err)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_83b15de4","line":167,"updated":"2018-03-20 19:35:08.000000000","message":"fine, but I think for many errors other than DirectClientException logger.exception might be better - it\u0027s even got special handling for the basic stuff like socket errors etc","commit_id":"729517d5f86dcb34127c2c976949aaea86168603"}],"test/unit/common/test_direct_client.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2a96ad1aad920ce98f7e23fea58f1529901744ba","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                             str(len(body)))"},{"line_number":469,"context_line":"            self.assertEqual(conn.req_headers[\u0027Content-Type\u0027],"},{"line_number":470,"context_line":"                             \u0027application/json\u0027)"},{"line_number":471,"context_line":"            self.assertEqual(conn.req_headers[\u0027User-Agent\u0027], \u0027my UA\u0027)"},{"line_number":472,"context_line":"            self.assertTrue(\u0027x-timestamp\u0027 in conn.req_headers)"},{"line_number":473,"context_line":"            self.assertEqual(\u0027bar\u0027, conn.req_headers.get(\u0027x-foo\u0027))"},{"line_number":474,"context_line":"            self.assertEqual(md5(body).hexdigest(), conn.etag.hexdigest())"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_e097efea","line":471,"updated":"2018-03-20 19:35:08.000000000","message":"GREAT!\n\n    FAIL: test_direct_put_container (test.unit.common.test_direct_client.TestDirectClient)\n    ----------------------------------------------------------------------\n    Traceback (most recent call last):\n      File \"/home/vagrant/swift/test/unit/common/test_direct_client.py\", line 471, in test_direct_put_container\n        self.assertEqual(conn.req_headers[\u0027User-Agent\u0027], \u0027my UA\u0027)\n    AssertionError: \u0027direct-client 9003\u0027 !\u003d \u0027my UA\u0027","commit_id":"729517d5f86dcb34127c2c976949aaea86168603"}],"test/unit/container/test_sharder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2a96ad1aad920ce98f7e23fea58f1529901744ba","unresolved":false,"context_lines":[{"line_number":1817,"context_line":"        warnings \u003d sharder.logger.get_lines_for_level(\u0027warning\u0027)"},{"line_number":1818,"context_line":"        for warning in warnings[:3]:"},{"line_number":1819,"context_line":"            self.assertIn(\u0027Failed to put shard ranges\u0027, warning)"},{"line_number":1820,"context_line":"        self.assertFalse(warnings[3:])"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_c3dc351a","line":1820,"updated":"2018-03-20 19:35:08.000000000","message":"this looks good to me!","commit_id":"729517d5f86dcb34127c2c976949aaea86168603"}]}
