)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"8e9c254d6387decccbc783e9278ad9d140c24ab2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Adam Harwell \u003cflux.adam@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-06-16 17:38:00 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Agent: swap flask responses to webob, handle 404 retries better"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I7c8f7da8db104be54cea1fe6f411dcab9d134e2a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7f231b9d_9b7cb372","line":7,"range":{"start_line":7,"start_character":38,"end_line":7,"end_character":63},"updated":"2017-06-18 13:16:25.000000000","message":"Hi Adam,\n\nCould you please elaborate?\nWhat exactly is being resolved here?\nI\u0027d like to review and test this patch but no so sure how to trigger this and see the effect.","commit_id":"d1d4ad22aa46abe8d7bc0aab1b24ddf48e88c031"}],"octavia/amphorae/drivers/haproxy/rest_api_driver.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"602734407aecaf585efd58db7468d223d6ca2f99","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                          {\u0027resp\u0027: r})"},{"line_number":281,"context_line":"                # Give a 404 response up to 10 retries if it isn\u0027t json."},{"line_number":282,"context_line":"                # Flask/gunicorn is returning 404 on startup, but is non-json"},{"line_number":283,"context_line":"                if r.status_code \u003d\u003d 404 and retry_attempts \u003c 10 and not ("},{"line_number":284,"context_line":"                        r.headers.get(\u0027content-type\u0027, \u0027\u0027)"},{"line_number":285,"context_line":"                        .find(\"application/json\")):"},{"line_number":286,"context_line":"                    retry_attempts +\u003d 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_9254c2ff","line":283,"updated":"2017-06-15 22:13:56.000000000","message":"Can\u0027t we create a functional test that tries this out.  Throws a few 404 non-json results?","commit_id":"e2411624058adf4fd341ad3fef98abe40d3492fc"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d17ec85a38ccb9ad347e1773cf19d6b5afdc7b1f","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                if r.status_code \u003d\u003d 404 and retry_attempts \u003c 10 and ("},{"line_number":284,"context_line":"                        r.headers.get(\u0027content-type\u0027, \u0027\u0027)"},{"line_number":285,"context_line":"                        .find(\"application/json\") \u003d\u003d -1):"},{"line_number":286,"context_line":"                    retry_attempts +\u003d 1"},{"line_number":287,"context_line":"                    raise requests.ConnectionError"},{"line_number":288,"context_line":"                return r"},{"line_number":289,"context_line":"            except (requests.ConnectionError, requests.Timeout) as e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_7f8b1867","line":286,"updated":"2017-06-16 16:00:50.000000000","message":"Can we add a debug log message here so we can see that it fired?","commit_id":"7c7f5910cd49b7126962bfb945d00c3cf93e3539"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5d38fc5c6cde13272ec1a7a1e27703d983a73253","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                        r.headers.get(\u0027content-type\u0027, \u0027\u0027)"},{"line_number":285,"context_line":"                        .find(\"application/json\") \u003d\u003d -1):"},{"line_number":286,"context_line":"                    retry_attempts +\u003d 1"},{"line_number":287,"context_line":"                    LOG.warning(\"Amphora agent returned non-json 404, allowing\""},{"line_number":288,"context_line":"                                \"extra retry %s of 10.\" % str(retry_attempts))"},{"line_number":289,"context_line":"                    raise requests.ConnectionError"},{"line_number":290,"context_line":"                return r"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_9c471f78","line":287,"range":{"start_line":287,"start_character":24,"end_line":287,"end_character":31},"updated":"2017-06-16 17:29:40.000000000","message":"nit: I would vote for debug on this as day-to-day, it probably doesn\u0027t matter.  It\u0027s really for us devs to know gunicorn/flask/whatever is mis-behaving","commit_id":"a716a986372614530b56bcdee8d607c4471ab309"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"12d32571b928f9aee546fd0b8875461e859336e2","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                        r.headers.get(\u0027content-type\u0027, \u0027\u0027)"},{"line_number":285,"context_line":"                        .find(\"application/json\") \u003d\u003d -1):"},{"line_number":286,"context_line":"                    retry_attempts +\u003d 1"},{"line_number":287,"context_line":"                    LOG.warning(\"Amphora agent returned non-json 404, allowing\""},{"line_number":288,"context_line":"                                \"extra retry %s of 10.\" % str(retry_attempts))"},{"line_number":289,"context_line":"                    raise requests.ConnectionError"},{"line_number":290,"context_line":"                return r"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_bffe4d68","line":287,"range":{"start_line":287,"start_character":24,"end_line":287,"end_character":31},"in_reply_to":"7f231b9d_9c471f78","updated":"2017-06-16 17:54:21.000000000","message":"You\u0027re right -- I\u0027ll switch to debug after this run finishes, I want more runs anyway.","commit_id":"a716a986372614530b56bcdee8d607c4471ab309"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"9845ff73c5206d8499391bf7a02f7ec5b7ce3c55","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                # Explicitly show us some more connection data if 404"},{"line_number":283,"context_line":"                content_type \u003d r.headers.get(\u0027content-type\u0027, \u0027\u0027)"},{"line_number":284,"context_line":"                if r.status_code \u003d\u003d 404:"},{"line_number":285,"context_line":"                    LOG.debug(\u0027Got a 404 (content-type: %s) -- connection \u0027"},{"line_number":286,"context_line":"                              \u0027data: %s\u0027 % (content_type, r.content))"},{"line_number":287,"context_line":"                # Give a 404 response up to 10 retries if it isn\u0027t json."},{"line_number":288,"context_line":"                # Flask/gunicorn is returning 404 on startup, but is non-json"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_66d94520","line":285,"updated":"2017-06-17 02:30:43.000000000","message":"Basically I am looking for this debug message to trigger...","commit_id":"d1d4ad22aa46abe8d7bc0aab1b24ddf48e88c031"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"83a81e4d88b8e11f1cb244999750decafa13d3d6","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                LOG.debug(\u0027Connected to amphora. Response: %(resp)s\u0027,"},{"line_number":280,"context_line":"                          {\u0027resp\u0027: r})"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"                content_type \u003d r.headers.get(\u0027content-type\u0027, \u0027\u0027)"},{"line_number":283,"context_line":"                # Check the 404 to see if it is just that the network in the"},{"line_number":284,"context_line":"                # amphora is not yet up, in which case retry."},{"line_number":285,"context_line":"                # Otherwise return the response quickly."}],"source_content_type":"text/x-python","patch_set":11,"id":"7f231b9d_ef74faff","line":282,"updated":"2017-06-19 07:14:26.000000000","message":"Maybe we should do a lower() here, since it\u0027s header value?","commit_id":"43199884d57565ad0287a4ee7f46c0c2c2808e71"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"fc468d3fc3d6b154fc8c3bd06168940ece71e958","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                LOG.debug(\u0027Connected to amphora. Response: %(resp)s\u0027,"},{"line_number":280,"context_line":"                          {\u0027resp\u0027: r})"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"                content_type \u003d r.headers.get(\u0027content-type\u0027, \u0027\u0027)"},{"line_number":283,"context_line":"                # Check the 404 to see if it is just that the network in the"},{"line_number":284,"context_line":"                # amphora is not yet up, in which case retry."},{"line_number":285,"context_line":"                # Otherwise return the response quickly."}],"source_content_type":"text/x-python","patch_set":11,"id":"7f231b9d_e3b1b145","line":282,"in_reply_to":"7f231b9d_ef74faff","updated":"2017-06-19 09:08:18.000000000","message":"so when I was testing, this seemed to work regardless of case (I am honestly not 100% sure WHY), but maybe I shouldn\u0027t count on that and should do a lower() explicitly, as you say...","commit_id":"43199884d57565ad0287a4ee7f46c0c2c2808e71"}]}
