)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"14d5fae692b8353653e16407955e9c92c5459146","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"afd4523a_c3bde1e9","updated":"2024-02-25 10:38:36.000000000","message":"recheck testing one more time","commit_id":"1422a80de2c615ac073171044faaabbef43f86ff"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa041cf5f7697be753c7600f7ebe8c4b86d45aea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"06c23858_293859f0","updated":"2024-03-14 04:53:59.000000000","message":"A couple of comments","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"a4993ff403f128b4d089fccc51b8c858c50c6726","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1ce661ed_e987e33e","updated":"2024-03-07 10:25:24.000000000","message":"recheck pep8 is fixed","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"53929aa2d97ea5fe0be44b9932c34706cc5f9902","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"82d84d5d_fb5902dd","updated":"2024-04-24 15:16:49.000000000","message":"LGTM","commit_id":"f5349aca00d04222d838e6f55edc8c2131faf3c0"}],"octavia/amphorae/backends/agent/api_server/loadbalancer.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa041cf5f7697be753c7600f7ebe8c4b86d45aea","unresolved":true,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        return res"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _check_haproxy_uptime(self, lb_id, retries\u003d5):"},{"line_number":229,"context_line":"        stat_sock_file \u003d util.haproxy_sock_path(lb_id)"},{"line_number":230,"context_line":"        lb_query \u003d haproxy_query.HAProxyQuery(stat_sock_file)"},{"line_number":231,"context_line":"        for _ in range(retries):"}],"source_content_type":"text/x-python","patch_set":5,"id":"54e2041d_3eecb7af","line":228,"updated":"2024-03-14 04:53:59.000000000","message":"I wonder if retries shouldn\u0027t be set in constants or a config option. It doesn\u0027t seem to be specified in this patch anywhere as a parameter.","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"c3d36ea19b2668f3b724cf68a8ebfb5dd2d5a817","unresolved":true,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        return res"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _check_haproxy_uptime(self, lb_id, retries\u003d5):"},{"line_number":229,"context_line":"        stat_sock_file \u003d util.haproxy_sock_path(lb_id)"},{"line_number":230,"context_line":"        lb_query \u003d haproxy_query.HAProxyQuery(stat_sock_file)"},{"line_number":231,"context_line":"        for _ in range(retries):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5b540559_8769a7f8","line":228,"in_reply_to":"54e2041d_3eecb7af","updated":"2024-04-24 09:24:38.000000000","message":"Added a constant at the top of the file.\nas it is a workaround for a very specific issue, I chose to not add a new config option (new config options in the amphora-agent would require more work and make the change not backportable).","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa041cf5f7697be753c7600f7ebe8c4b86d45aea","unresolved":true,"context_lines":[{"line_number":228,"context_line":"    def _check_haproxy_uptime(self, lb_id, retries\u003d5):"},{"line_number":229,"context_line":"        stat_sock_file \u003d util.haproxy_sock_path(lb_id)"},{"line_number":230,"context_line":"        lb_query \u003d haproxy_query.HAProxyQuery(stat_sock_file)"},{"line_number":231,"context_line":"        for _ in range(retries):"},{"line_number":232,"context_line":"            try:"},{"line_number":233,"context_line":"                info \u003d lb_query.show_info()"},{"line_number":234,"context_line":"                uptime_sec \u003d info[\u0027Uptime_sec\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"b3f5f6eb_73a0b032","line":231,"updated":"2024-03-14 04:53:59.000000000","message":"I don\u0027t like to use underscores for dummy variables, it can end up getting into issues with the i18n usage.\nhttps://github.com/openstack/octavia/blob/master/octavia/amphorae/backends/utils/haproxy_query.py#L22","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"c3d36ea19b2668f3b724cf68a8ebfb5dd2d5a817","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def _check_haproxy_uptime(self, lb_id, retries\u003d5):"},{"line_number":229,"context_line":"        stat_sock_file \u003d util.haproxy_sock_path(lb_id)"},{"line_number":230,"context_line":"        lb_query \u003d haproxy_query.HAProxyQuery(stat_sock_file)"},{"line_number":231,"context_line":"        for _ in range(retries):"},{"line_number":232,"context_line":"            try:"},{"line_number":233,"context_line":"                info \u003d lb_query.show_info()"},{"line_number":234,"context_line":"                uptime_sec \u003d info[\u0027Uptime_sec\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"55edf29b_a9f00787","line":231,"in_reply_to":"b3f5f6eb_73a0b032","updated":"2024-04-24 09:24:38.000000000","message":"ack, renamed to idx","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa041cf5f7697be753c7600f7ebe8c4b86d45aea","unresolved":true,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        retries \u003d 3 if action \u003d\u003d consts.AMP_ACTION_RELOAD else 1"},{"line_number":278,"context_line":"        saved_exc \u003d None"},{"line_number":279,"context_line":"        for _ in range(retries):"},{"line_number":280,"context_line":"            cmd \u003d (\"/usr/sbin/service haproxy-{lb_id} {action}\".format("},{"line_number":281,"context_line":"                lb_id\u003dlb_id, action\u003daction))"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"41d82fe5_f6087a36","line":279,"updated":"2024-03-14 04:53:59.000000000","message":"Same, I would rather use real variables here.","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"c3d36ea19b2668f3b724cf68a8ebfb5dd2d5a817","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        retries \u003d 3 if action \u003d\u003d consts.AMP_ACTION_RELOAD else 1"},{"line_number":278,"context_line":"        saved_exc \u003d None"},{"line_number":279,"context_line":"        for _ in range(retries):"},{"line_number":280,"context_line":"            cmd \u003d (\"/usr/sbin/service haproxy-{lb_id} {action}\".format("},{"line_number":281,"context_line":"                lb_id\u003dlb_id, action\u003daction))"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1627167e_3a66cb24","line":279,"in_reply_to":"41d82fe5_f6087a36","updated":"2024-04-24 09:24:38.000000000","message":"Done","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"aa041cf5f7697be753c7600f7ebe8c4b86d45aea","unresolved":true,"context_lines":[{"line_number":285,"context_line":"            except subprocess.CalledProcessError as e:"},{"line_number":286,"context_line":"                # Mitigation for"},{"line_number":287,"context_line":"                # https://bugs.launchpad.net/octavia/+bug/2054666"},{"line_number":288,"context_line":"                if (b\u0027is not active, cannot reload.\u0027 in e.output and"},{"line_number":289,"context_line":"                        action \u003d\u003d consts.AMP_ACTION_RELOAD):"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"                    saved_exc \u003d e"}],"source_content_type":"text/x-python","patch_set":5,"id":"46eaa128_1d638499","line":288,"updated":"2024-03-14 04:53:59.000000000","message":"Is the \"b\" byte prefix needed here? I thought in python3 all strings were assumed to be utf-8 bytes. (not 100% sure, but wondered if this is needed)","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"c3d36ea19b2668f3b724cf68a8ebfb5dd2d5a817","unresolved":true,"context_lines":[{"line_number":285,"context_line":"            except subprocess.CalledProcessError as e:"},{"line_number":286,"context_line":"                # Mitigation for"},{"line_number":287,"context_line":"                # https://bugs.launchpad.net/octavia/+bug/2054666"},{"line_number":288,"context_line":"                if (b\u0027is not active, cannot reload.\u0027 in e.output and"},{"line_number":289,"context_line":"                        action \u003d\u003d consts.AMP_ACTION_RELOAD):"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"                    saved_exc \u003d e"}],"source_content_type":"text/x-python","patch_set":5,"id":"4c5b8a90_9a759848","line":288,"in_reply_to":"46eaa128_1d638499","updated":"2024-04-24 09:24:38.000000000","message":"check_output still returns bytes by default (unless text\u003dTrue is passed), so here, b\u0027\u0027 is still mandatory (we cannot compare bytes to strings)\n\n```\n\u003e\u003e\u003e \u0027foo\u0027 in b\u0027foobar\u0027\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nTypeError: a bytes-like object is required, not \u0027str\u0027\n```","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"f7abef1220b502d7a4fad9d18f0a2e0e6638b056","unresolved":true,"context_lines":[{"line_number":285,"context_line":"            except subprocess.CalledProcessError as e:"},{"line_number":286,"context_line":"                # Mitigation for"},{"line_number":287,"context_line":"                # https://bugs.launchpad.net/octavia/+bug/2054666"},{"line_number":288,"context_line":"                if (b\u0027is not active, cannot reload.\u0027 in e.output and"},{"line_number":289,"context_line":"                        action \u003d\u003d consts.AMP_ACTION_RELOAD):"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"                    saved_exc \u003d e"}],"source_content_type":"text/x-python","patch_set":5,"id":"3b7e0eb6_a80e07de","line":288,"in_reply_to":"4c5b8a90_9a759848","updated":"2024-04-24 15:32:24.000000000","message":"I would have used `.encode()` probably, but I think it\u0027s fine either way in this case.\n\n```\n\u003e\u003e\u003e \"foo\".encode() \u003d\u003d b\"foo\"\nTrue\n\u003e\u003e\u003e \"foo\" \u003d\u003d b\"foo\"\nFalse\n```","commit_id":"4ae245a67abf35cb791eee8b1ebb9c917b4164d0"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"f7abef1220b502d7a4fad9d18f0a2e0e6638b056","unresolved":true,"context_lines":[{"line_number":304,"context_line":"                    uptime \u003d self._check_haproxy_uptime(lb_id)"},{"line_number":305,"context_line":"                    # If haproxy is not reachable or was restarted more than 15"},{"line_number":306,"context_line":"                    # sec ago, let\u0027s retry (or maybe restart?)"},{"line_number":307,"context_line":"                    if not uptime or uptime \u003e 15:"},{"line_number":308,"context_line":"                        continue"},{"line_number":309,"context_line":"                    # haproxy probably crashed and was restarted, log it and"},{"line_number":310,"context_line":"                    # continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"0f2d3877_2414b34e","line":307,"range":{"start_line":307,"start_character":23,"end_line":307,"end_character":33},"updated":"2024-04-24 15:32:24.000000000","message":"Nit, it\u0027s probably better to check for `None` explicitly. At least in theory uptime could be 0 AFAICT and we don\u0027t want to restart right after the process has started.","commit_id":"f5349aca00d04222d838e6f55edc8c2131faf3c0"}]}
