)]}'
{"oslo_db/api.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"501a75d7f35d4b7eaf9667fe8847e674418057bd","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                    return f(*args, **kwargs)"},{"line_number":140,"context_line":"                except db_error as e:"},{"line_number":141,"context_line":"                    # if the exception is an extra retry error, convert it"},{"line_number":142,"context_line":"                    # into a RetryRequest"},{"line_number":143,"context_line":"                    for retry_error in self.extra_retry_errors:"},{"line_number":144,"context_line":"                        if isinstance(e, retry_error):"},{"line_number":145,"context_line":"                            e \u003d exception.RetryRequest(e)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_bbd15259","line":142,"updated":"2015-06-23 22:31:23.000000000","message":"I think u can just do:\n\n   isinstance(e, self.extra_retry_errors)\n\nSince afaik that can take a list and process it correctly.","commit_id":"d374d921f2d3a50284b1d233c03fb2049375f31d"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5dfdcbc28424ea0e205ba68df4e084ce464edc21","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                    return f(*args, **kwargs)"},{"line_number":140,"context_line":"                except db_error as e:"},{"line_number":141,"context_line":"                    # if the exception is an extra retry error, convert it"},{"line_number":142,"context_line":"                    # into a RetryRequest"},{"line_number":143,"context_line":"                    for retry_error in self.extra_retry_errors:"},{"line_number":144,"context_line":"                        if isinstance(e, retry_error):"},{"line_number":145,"context_line":"                            e \u003d exception.RetryRequest(e)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_b5f4f3f0","line":142,"in_reply_to":"fa32b979_bbd15259","updated":"2015-06-24 07:00:45.000000000","message":"+1\n\niirc it takes a tuple, not a list, though.","commit_id":"d374d921f2d3a50284b1d233c03fb2049375f31d"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3775720763f28695565e6372eea3350c7f1fdc87","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                    return f(*args, **kwargs)"},{"line_number":140,"context_line":"                except db_error as e:"},{"line_number":141,"context_line":"                    # if the exception is an extra retry error, convert it"},{"line_number":142,"context_line":"                    # into a RetryRequest"},{"line_number":143,"context_line":"                    for retry_error in self.extra_retry_errors:"},{"line_number":144,"context_line":"                        if isinstance(e, retry_error):"},{"line_number":145,"context_line":"                            e \u003d exception.RetryRequest(e)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_e48f2721","line":142,"in_reply_to":"fa32b979_bbd15259","updated":"2015-06-24 09:22:59.000000000","message":"very cool","commit_id":"d374d921f2d3a50284b1d233c03fb2049375f31d"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"a641c3b11283b6437dab96d67de16eddfb6ea605","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                        )"},{"line_number":163,"context_line":"                except Exception as e:"},{"line_number":164,"context_line":"                    with excutils.save_and_reraise_exception() as ectxt:"},{"line_number":165,"context_line":"                        if remaining \u003e 0 and self.exception_checker(e):"},{"line_number":166,"context_line":"                            ectxt.reraise \u003d False"},{"line_number":167,"context_line":"                        remaining -\u003d 1"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_ca4f7090","line":165,"updated":"2015-06-24 19:02:34.000000000","message":"why can\u0027t self.exception_checker also check for the other exceptions in self.db_error, rather than having two separate \"except\" clauses?  if a user-custom function was sent, that\u0027s just the fallback for the \"generic\" function.","commit_id":"002a221f7ae7db9ed6d86d253f77bceb9c9647e9"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"ae111eee5fc7afb9b683ba9381c7e33ae2baf83d","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                try:"},{"line_number":136,"context_line":"                    return f(*args, **kwargs)"},{"line_number":137,"context_line":"                except Exception as e:"},{"line_number":138,"context_line":"                    with excutils.save_and_reraise_exception() as ectxt:"},{"line_number":139,"context_line":"                        if remaining \u003e 0:"},{"line_number":140,"context_line":"                            ectxt.reraise \u003d not self.is_exception_expected(e)"},{"line_number":141,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_60adf12f","line":138,"updated":"2015-06-25 18:00:56.000000000","message":"looks great!","commit_id":"4e1869fe90a364f15269da71b14df71dfa392d50"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"ae111eee5fc7afb9b683ba9381c7e33ae2baf83d","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        return wrapper"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def is_exception_expected(self, exc):"},{"line_number":161,"context_line":"        if isinstance(exc, self.db_error):"},{"line_number":162,"context_line":"            # RetryRequest is application-initated exception"},{"line_number":163,"context_line":"            # and not an error condition in case retries are"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_80e595a4","line":160,"updated":"2015-06-25 18:00:56.000000000","message":"nit: _is_exception_expected because we don\u0027t expect this to be called from the outside","commit_id":"4e1869fe90a364f15269da71b14df71dfa392d50"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e10720f04bffccadd421cb22cd0914a40ec3e718","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        return wrapper"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def is_exception_expected(self, exc):"},{"line_number":161,"context_line":"        if isinstance(exc, self.db_error):"},{"line_number":162,"context_line":"            # RetryRequest is application-initated exception"},{"line_number":163,"context_line":"            # and not an error condition in case retries are"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_655c204d","line":160,"in_reply_to":"fa32b979_80e595a4","updated":"2015-06-25 19:05:35.000000000","message":"Done","commit_id":"4e1869fe90a364f15269da71b14df71dfa392d50"}],"oslo_db/tests/test_api.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5dfdcbc28424ea0e205ba68df4e084ce464edc21","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    def test_retry_wrapper_additional_retry_exception_types(self):"},{"line_number":201,"context_line":"        max_retries \u003d 10"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        @api.wrap_db_retry(max_retries\u003d10, retry_on_request\u003dTrue,"},{"line_number":204,"context_line":"                           extra_retry_request_exceptions\u003d[ValueError])"},{"line_number":205,"context_line":"        def some_method(res):"},{"line_number":206,"context_line":"            res[\u0027result\u0027] +\u003d 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_d5e9771b","line":203,"range":{"start_line":203,"start_character":39,"end_line":203,"end_character":41},"updated":"2015-06-24 07:00:45.000000000","message":"why not max_retries\u003dmax_retries?","commit_id":"d374d921f2d3a50284b1d233c03fb2049375f31d"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3775720763f28695565e6372eea3350c7f1fdc87","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    def test_retry_wrapper_additional_retry_exception_types(self):"},{"line_number":201,"context_line":"        max_retries \u003d 10"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        @api.wrap_db_retry(max_retries\u003d10, retry_on_request\u003dTrue,"},{"line_number":204,"context_line":"                           extra_retry_request_exceptions\u003d[ValueError])"},{"line_number":205,"context_line":"        def some_method(res):"},{"line_number":206,"context_line":"            res[\u0027result\u0027] +\u003d 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_e4888724","line":203,"in_reply_to":"fa32b979_d5e9771b","updated":"2015-06-24 09:22:59.000000000","message":"was just following same style as the test above","commit_id":"d374d921f2d3a50284b1d233c03fb2049375f31d"}]}
