)]}'
{"zaqar/notification/tasks/webhook.py":[{"author":{"_account_id":21387,"name":"gecong","email":"ge.cong@zte.com.cn","username":"gecong"},"change_message_id":"7c440931b7a2a4950bbf8d02527bda31d86f6bf5","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        try:"},{"line_number":29,"context_line":"            response \u003d requests.post(subscriber, data\u003ddata, headers\u003dheaders)"},{"line_number":30,"context_line":"            if response and (response.status_code in range(500, 600) or"},{"line_number":31,"context_line":"                             response.status_code not in range(200, 600)):"},{"line_number":32,"context_line":"                return False"},{"line_number":33,"context_line":"        except Exception:"},{"line_number":34,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_bd81fffd","line":31,"updated":"2017-07-17 03:59:39.000000000","message":"I think that \nresponse and (response.status_code in range(200, 500)\n   return True \nmaybe simpler? thanks","commit_id":"a3d4cea030a225654e57a1980ce858a761a4edfd"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2481921f16da690ba641a37773b44437b17f6baf","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        try:"},{"line_number":29,"context_line":"            response \u003d requests.post(subscriber, data\u003ddata, headers\u003dheaders)"},{"line_number":30,"context_line":"            if response and (response.status_code in range(500, 600) or"},{"line_number":31,"context_line":"                             response.status_code not in range(200, 600)):"},{"line_number":32,"context_line":"                return False"},{"line_number":33,"context_line":"        except Exception:"},{"line_number":34,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_d87f29de","line":31,"in_reply_to":"1f1a1f67_bd81fffd","updated":"2017-07-17 05:43:28.000000000","message":"yeah, that is same and simpler, thanks.","commit_id":"a3d4cea030a225654e57a1980ce858a761a4edfd"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"08f7f83aa59fc0042e14fcd92f92071f2c8eb6cb","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            time.sleep(retry_policy.get(\u0027maximum_delay\u0027, 60))"},{"line_number":72,"context_line":"            if self._post_request_success(subscriber, data, headers):"},{"line_number":73,"context_line":"                return"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def execute(self, subscription, messages, headers\u003dNone, **kwargs):"},{"line_number":76,"context_line":"        if headers is None:"},{"line_number":77,"context_line":"            headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027}"}],"source_content_type":"text/x-python","patch_set":18,"id":"ff346bd7_d2980076","line":74,"updated":"2017-07-27 08:48:19.000000000","message":"so the retry_backoff_function doesn\u0027t work, right? I think we should add its logic even it has only one value.l","commit_id":"baf6d2d885c3feadbed84778c561ddacc9d7af81"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"32ce6bb30f261bfd1a489c8d3a8b0cb1587f6ff9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            time.sleep(retry_policy.get(\u0027maximum_delay\u0027, 60))"},{"line_number":72,"context_line":"            if self._post_request_success(subscriber, data, headers):"},{"line_number":73,"context_line":"                return"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def execute(self, subscription, messages, headers\u003dNone, **kwargs):"},{"line_number":76,"context_line":"        if headers is None:"},{"line_number":77,"context_line":"            headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027}"}],"source_content_type":"text/x-python","patch_set":18,"id":"ff346bd7_d8b26149","line":74,"in_reply_to":"ff346bd7_d2980076","updated":"2017-07-27 09:31:03.000000000","message":"en, it should","commit_id":"baf6d2d885c3feadbed84778c561ddacc9d7af81"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"d50505fff33bf9315d7fbd2bd19cedb72ffd01e1","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            response \u003d requests.post(subscriber, data\u003ddata, headers\u003dheaders)"},{"line_number":36,"context_line":"            if response and (response.status_code in range(200, 500)):"},{"line_number":37,"context_line":"                return True"},{"line_number":38,"context_line":"        except Exception:"},{"line_number":39,"context_line":"            return False"},{"line_number":40,"context_line":"        return False"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _retry_post(self, sub_retry_policy, queue_retry_policy, subscriber,"},{"line_number":43,"context_line":"                    data, headers):"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf3e73b7_6ff69192","line":40,"range":{"start_line":38,"start_character":0,"end_line":40,"end_character":20},"updated":"2017-08-07 13:02:28.000000000","message":"How about using \"try/finally\"?","commit_id":"d4d0e84c85916fa9855c35af1f46da6b9cb6ab81"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"d50505fff33bf9315d7fbd2bd19cedb72ffd01e1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            retry_policy \u003d sub_retry_policy or queue_retry_policy or {}"},{"line_number":50,"context_line":"        # Immediate Retry Phase"},{"line_number":51,"context_line":"        for retry_with_no_delay in range("},{"line_number":52,"context_line":"                0, retry_policy.get(\u0027retries_with_no_delay\u0027, 3)):"},{"line_number":53,"context_line":"            LOG.debug(\u0027Retry with no delay, count: %s\u0027, retry_with_no_delay)"},{"line_number":54,"context_line":"            if self._post_request_success(subscriber, data, headers):"},{"line_number":55,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf3e73b7_8fcf757e","line":52,"range":{"start_line":52,"start_character":61,"end_line":52,"end_character":62},"updated":"2017-08-07 13:02:28.000000000","message":"Too many hardcode numbers like this, could we define them as constants?","commit_id":"d4d0e84c85916fa9855c35af1f46da6b9cb6ab81"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"d50505fff33bf9315d7fbd2bd19cedb72ffd01e1","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        # TODO(wanghao): Now we only support the linear function, we should"},{"line_number":66,"context_line":"        # support more in Queens."},{"line_number":67,"context_line":"        retry_function \u003d retry_policy.get(\u0027retry_backoff_function\u0027, \u0027linear\u0027)"},{"line_number":68,"context_line":"        if retry_function !\u003d \u0027linear\u0027:"},{"line_number":69,"context_line":"            retry_function \u003d \u0027linear\u0027"},{"line_number":70,"context_line":"        backoff_function \u003d RETRY_BACKOFF_FUNCTION_MAP[retry_function]"},{"line_number":71,"context_line":"        for i in backoff_function(retry_policy.get(\u0027minimum_delay\u0027, 5),"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf3e73b7_ef93a14e","line":68,"updated":"2017-08-07 13:02:28.000000000","message":"I understand this but it looks weird. We should check this in validation stage instead of doing things like this.","commit_id":"d4d0e84c85916fa9855c35af1f46da6b9cb6ab81"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"56d8cc4387dce3c841fca5d9decf3675d5038aa9","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            retry_function \u003d \u0027linear\u0027"},{"line_number":70,"context_line":"        backoff_function \u003d RETRY_BACKOFF_FUNCTION_MAP[retry_function]"},{"line_number":71,"context_line":"        for i in backoff_function(retry_policy.get(\u0027minimum_delay\u0027, 5),"},{"line_number":72,"context_line":"                                  retry_policy.get(\u0027maximum_delay\u0027, 60), 5):"},{"line_number":73,"context_line":"            LOG.debug(\u0027Retry with retry_backoff_function, sleep: %s seconds\u0027,"},{"line_number":74,"context_line":"                      i)"},{"line_number":75,"context_line":"            time.sleep(i)"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf3e73b7_127968fb","line":72,"updated":"2017-08-07 13:47:29.000000000","message":"Another thing based on my test is the retry is a really high-workload job, so I\u0027m thinking if we could set a small default value to avoid unnecessary load for zaqar server.","commit_id":"d4d0e84c85916fa9855c35af1f46da6b9cb6ab81"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"56d8cc4387dce3c841fca5d9decf3675d5038aa9","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                      maximum_delay_retries)"},{"line_number":83,"context_line":"            time.sleep(retry_policy.get(\u0027maximum_delay\u0027, 60))"},{"line_number":84,"context_line":"            if self._post_request_success(subscriber, data, headers):"},{"line_number":85,"context_line":"                return"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def execute(self, subscription, messages, headers\u003dNone, **kwargs):"},{"line_number":88,"context_line":"        if headers is None:"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf3e73b7_32734c18","line":85,"updated":"2017-08-07 13:47:29.000000000","message":"After the last sort, it would be nice if we can log if it\u0027s finally successful or not, with a DEBUG level?","commit_id":"d4d0e84c85916fa9855c35af1f46da6b9cb6ab81"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"ae1a92b3a3c0076ff5666878042cd25b6d787c7c","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                        data, headers)"},{"line_number":113,"context_line":"        except Exception as e:"},{"line_number":114,"context_line":"            LOG.exception(\u0027webhook task got exception: %s.\u0027, str(e))"},{"line_number":115,"context_line":"            self.retry_post(subscription[\u0027options\u0027].get(\u0027_retry_policy\u0027, {}),"},{"line_number":116,"context_line":"                            kwargs.get(\u0027queue_retry_policy\u0027),"},{"line_number":117,"context_line":"                            subscription[\u0027subscriber\u0027],"},{"line_number":118,"context_line":"                            data, headers)"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf3e73b7_727af424","line":115,"range":{"start_line":115,"start_character":17,"end_line":115,"end_character":27},"updated":"2017-08-07 13:38:26.000000000","message":"It should be _retry_post","commit_id":"d4d0e84c85916fa9855c35af1f46da6b9cb6ab81"}],"zaqar/storage/pipeline.py":[{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"08f7f83aa59fc0042e14fcd92f92071f2c8eb6cb","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                  self.conf.notification.max_notifier_workers,"},{"line_number":157,"context_line":"                  \u0027require_confirmation\u0027:"},{"line_number":158,"context_line":"                  self.conf.notification.require_confirmation,"},{"line_number":159,"context_line":"                  \u0027queue_controller\u0027:"},{"line_number":160,"context_line":"                  self._storage.queue_controller}"},{"line_number":161,"context_line":"        stages.extend(_get_storage_pipeline(\u0027message\u0027, self.conf, **kwargs))"},{"line_number":162,"context_line":"        stages.append(self._storage.message_controller)"},{"line_number":163,"context_line":"        return common.Pipeline(stages)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ff346bd7_92a158fb","line":160,"range":{"start_line":159,"start_character":0,"end_line":160,"end_character":49},"updated":"2017-07-27 08:48:19.000000000","message":"how about just sending _retry_policy to the notifier?","commit_id":"baf6d2d885c3feadbed84778c561ddacc9d7af81"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"32ce6bb30f261bfd1a489c8d3a8b0cb1587f6ff9","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                  self.conf.notification.max_notifier_workers,"},{"line_number":157,"context_line":"                  \u0027require_confirmation\u0027:"},{"line_number":158,"context_line":"                  self.conf.notification.require_confirmation,"},{"line_number":159,"context_line":"                  \u0027queue_controller\u0027:"},{"line_number":160,"context_line":"                  self._storage.queue_controller}"},{"line_number":161,"context_line":"        stages.extend(_get_storage_pipeline(\u0027message\u0027, self.conf, **kwargs))"},{"line_number":162,"context_line":"        stages.append(self._storage.message_controller)"},{"line_number":163,"context_line":"        return common.Pipeline(stages)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ff346bd7_18e58909","line":160,"range":{"start_line":159,"start_character":0,"end_line":160,"end_character":49},"in_reply_to":"ff346bd7_92a158fb","updated":"2017-07-27 09:31:03.000000000","message":"That means we need get the _rety_policy here,  and make the choice to decide use which policy.  Since each queue or subscription may have different policy set, so I think we should do it in notifier.","commit_id":"baf6d2d885c3feadbed84778c561ddacc9d7af81"}],"zaqar/transport/validation.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"01b1a5ddaaa338e9bb46eaea45397311a24d3537","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                        raise ValidationFailed(msg)"},{"line_number":252,"context_line":"                    # TODO(wanghao): Now we only support linear function."},{"line_number":253,"context_line":"                    # This will be removed after we support more functions."},{"line_number":254,"context_line":"                    if retry_value and retry_value !\u003d \u0027linear\u0027:"},{"line_number":255,"context_line":"                        retry_policy[\u0027retry_backoff_function\u0027] \u003d \u0027linear\u0027"},{"line_number":256,"context_line":"                elif key \u003d\u003d \u0027ignore_subscription_override\u0027:"},{"line_number":257,"context_line":"                    if retry_value and not isinstance(retry_value, bool):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f436f4f_2059c159","line":254,"updated":"2017-08-08 19:37:39.000000000","message":"I would prefer to throw an error to let the user know if the policy has not been supported yet.","commit_id":"bd5e8b80f69d89bb7a40e4eb66625fa046119697"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"dc21d3a7a282c326655d091a3f27442e87455623","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                        raise ValidationFailed(msg)"},{"line_number":252,"context_line":"                    # TODO(wanghao): Now we only support linear function."},{"line_number":253,"context_line":"                    # This will be removed after we support more functions."},{"line_number":254,"context_line":"                    if retry_value and retry_value !\u003d \u0027linear\u0027:"},{"line_number":255,"context_line":"                        retry_policy[\u0027retry_backoff_function\u0027] \u003d \u0027linear\u0027"},{"line_number":256,"context_line":"                elif key \u003d\u003d \u0027ignore_subscription_override\u0027:"},{"line_number":257,"context_line":"                    if retry_value and not isinstance(retry_value, bool):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f436f4f_6ef69392","line":254,"in_reply_to":"9f436f4f_2059c159","updated":"2017-08-09 00:55:32.000000000","message":"Sure, will update it soon.","commit_id":"bd5e8b80f69d89bb7a40e4eb66625fa046119697"}]}
