)]}'
{"swift/common/ring/ring.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"bf896525e7eb1ecd49f4bd55b385421ccd0da39f","unresolved":false,"context_lines":[{"line_number":620,"context_line":"        # default reload time to ignore frequent RingLoadErrors"},{"line_number":621,"context_line":"        # self._rtime \u003d time() + max(15, self.reload_time)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    def stash_stale(self):"},{"line_number":624,"context_line":"        \"\"\""},{"line_number":625,"context_line":"        Set None to self._previous_ring_data to define *this ring doesn\u0027t have"},{"line_number":626,"context_line":"        a rollbackable (previous) ring*."}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_4124b15c","line":623,"updated":"2016-01-25 08:03:17.000000000","message":"\"stash\" might be wrong name because we throw away the previous version with this method.","commit_id":"072b313360d04ca32a9a48edbabf9a19b7e7f951"},{"author":{"_account_id":18838,"name":"Paul Dardeau","email":"paul.dardeau@intel.com","username":"pdardeau"},"change_message_id":"f76a133e2cfa5fad51ba0a80118238db6e196f69","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":"    RingValidator class"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    This is an abstruction of ring validation on load/reload."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":"    def __init__(self, *args):"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_c9d44748","line":79,"updated":"2016-05-17 19:41:08.000000000","message":"abstruction -\u003e abstraction","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"792d5c15e7f48fb0f966f262d7094280a9505538","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":"    RingValidator class"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    This is an abstruction of ring validation on load/reload."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":"    def __init__(self, *args):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_19096f32","line":79,"in_reply_to":"dab17558_c9d44748","updated":"2016-05-19 06:17:40.000000000","message":"Done","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":18838,"name":"Paul Dardeau","email":"paul.dardeau@intel.com","username":"pdardeau"},"change_message_id":"f76a133e2cfa5fad51ba0a80118238db6e196f69","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        # ignore frequent RingLoadErrors"},{"line_number":629,"context_line":"        self._rtime \u003d time() + self.reload_time"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    def stash_stale(self):"},{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        Set None to self._previous_ring_data to define *this ring doesn\u0027t have"},{"line_number":634,"context_line":"        a rollbackable (previous) ring*."}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_49ce975a","line":631,"updated":"2016-05-17 19:41:08.000000000","message":"i find this method name confusing. would something like \"clear_previous_version\" make for easier understanding?","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"792d5c15e7f48fb0f966f262d7094280a9505538","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        # ignore frequent RingLoadErrors"},{"line_number":629,"context_line":"        self._rtime \u003d time() + self.reload_time"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    def stash_stale(self):"},{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        Set None to self._previous_ring_data to define *this ring doesn\u0027t have"},{"line_number":634,"context_line":"        a rollbackable (previous) ring*."}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_245b6a56","line":631,"in_reply_to":"dab17558_49ce975a","updated":"2016-05-19 06:17:40.000000000","message":"Okay, let\u0027s change it!","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":18838,"name":"Paul Dardeau","email":"paul.dardeau@intel.com","username":"pdardeau"},"change_message_id":"f76a133e2cfa5fad51ba0a80118238db6e196f69","unresolved":false,"context_lines":[{"line_number":639,"context_line":"        \"\"\""},{"line_number":640,"context_line":"        The only difference with parent Ring class is use self._devs[dev_id]"},{"line_number":641,"context_line":"        in the for-loop to prevent to reload during _get_part_nodes"},{"line_number":642,"context_line":"        \"\"\""},{"line_number":643,"context_line":"        part_nodes \u003d []"},{"line_number":644,"context_line":"        seen_ids \u003d set()"},{"line_number":645,"context_line":"        for r2p2d in self._replica2part2dev_id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_492217ba","line":642,"updated":"2016-05-17 19:41:08.000000000","message":"suggest refactoring here. as it is, it\u0027s way too confusing, complex, and difficult to maintain.  maybe add new defaulted argument to parent method (reload_if_needed\u003dTrue) that you could pass False for derived class.","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"792d5c15e7f48fb0f966f262d7094280a9505538","unresolved":false,"context_lines":[{"line_number":639,"context_line":"        \"\"\""},{"line_number":640,"context_line":"        The only difference with parent Ring class is use self._devs[dev_id]"},{"line_number":641,"context_line":"        in the for-loop to prevent to reload during _get_part_nodes"},{"line_number":642,"context_line":"        \"\"\""},{"line_number":643,"context_line":"        part_nodes \u003d []"},{"line_number":644,"context_line":"        seen_ids \u003d set()"},{"line_number":645,"context_line":"        for r2p2d in self._replica2part2dev_id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_0fea7e0f","line":642,"in_reply_to":"dab17558_492217ba","updated":"2016-05-19 06:17:40.000000000","message":"Yeah, as described at L649, I think the reload at self.devs call is unexpected (i.e. a bug) because whole callers of _get_part_nodes have the reload logic before calling _get_part_nodes. If we could use self._devs instead of self.devs in the parent ring class, this override is needn\u0027t anymore.\n\nThe reason why I did like here is I was thinking of if someone wants to keep the current logic but exactly it makes this too complicated.\n\nThanks good call!","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":18838,"name":"Paul Dardeau","email":"paul.dardeau@intel.com","username":"pdardeau"},"change_message_id":"f76a133e2cfa5fad51ba0a80118238db6e196f69","unresolved":false,"context_lines":[{"line_number":661,"context_line":"    :param reload_time: time interval in seconds to check for a ring change"},{"line_number":662,"context_line":"    :param ring_name:"},{"line_number":663,"context_line":"    :param validator: RingValidator instance"},{"line_number":664,"context_line":"    :param ring_num: integer for constructiong CompositeRing"},{"line_number":665,"context_line":"    \"\"\""},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def __init__(self, serialized_path, reload_time\u003d15, ring_name\u003dNone,"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_e6321a0f","line":664,"updated":"2016-05-17 19:41:08.000000000","message":"maybe clarify by describing as the number of rings that make up composite","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"792d5c15e7f48fb0f966f262d7094280a9505538","unresolved":false,"context_lines":[{"line_number":661,"context_line":"    :param reload_time: time interval in seconds to check for a ring change"},{"line_number":662,"context_line":"    :param ring_name:"},{"line_number":663,"context_line":"    :param validator: RingValidator instance"},{"line_number":664,"context_line":"    :param ring_num: integer for constructiong CompositeRing"},{"line_number":665,"context_line":"    \"\"\""},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def __init__(self, serialized_path, reload_time\u003d15, ring_name\u003dNone,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_6f47ca1d","line":664,"in_reply_to":"dab17558_e6321a0f","updated":"2016-05-19 06:17:40.000000000","message":"Done","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":18838,"name":"Paul Dardeau","email":"paul.dardeau@intel.com","username":"pdardeau"},"change_message_id":"f76a133e2cfa5fad51ba0a80118238db6e196f69","unresolved":false,"context_lines":[{"line_number":689,"context_line":"        :raises RingValidationError: if any invalid rings are found, this will"},{"line_number":690,"context_line":"                                     be raised"},{"line_number":691,"context_line":"        \"\"\""},{"line_number":692,"context_line":"        # validate partion number"},{"line_number":693,"context_line":"        if len(set([ring.partition_count for ring in self.rings])) \u003e 1:"},{"line_number":694,"context_line":"            raise RingValidationError("},{"line_number":695,"context_line":"                \u0027All rings must have same partition number\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_c978c791","line":692,"updated":"2016-05-17 19:41:08.000000000","message":"partion -\u003e partition","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"792d5c15e7f48fb0f966f262d7094280a9505538","unresolved":false,"context_lines":[{"line_number":689,"context_line":"        :raises RingValidationError: if any invalid rings are found, this will"},{"line_number":690,"context_line":"                                     be raised"},{"line_number":691,"context_line":"        \"\"\""},{"line_number":692,"context_line":"        # validate partion number"},{"line_number":693,"context_line":"        if len(set([ring.partition_count for ring in self.rings])) \u003e 1:"},{"line_number":694,"context_line":"            raise RingValidationError("},{"line_number":695,"context_line":"                \u0027All rings must have same partition number\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_c4fede04","line":692,"in_reply_to":"dab17558_c978c791","updated":"2016-05-19 06:17:40.000000000","message":"Done","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":18838,"name":"Paul Dardeau","email":"paul.dardeau@intel.com","username":"pdardeau"},"change_message_id":"f76a133e2cfa5fad51ba0a80118238db6e196f69","unresolved":false,"context_lines":[{"line_number":701,"context_line":"            raise RingValidationError("},{"line_number":702,"context_line":"                \u0027All rings must have same part_shift number\u0027)"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"        # validate if same devices appreard in different rings"},{"line_number":705,"context_line":"        if ring_indexes:"},{"line_number":706,"context_line":"            validated_rings \u003d [ring for i, ring in enumerate(self.rings)"},{"line_number":707,"context_line":"                               if i not in ring_indexes]"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_09580f30","line":704,"updated":"2016-05-17 19:41:08.000000000","message":"appreard -\u003e appeared","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"792d5c15e7f48fb0f966f262d7094280a9505538","unresolved":false,"context_lines":[{"line_number":701,"context_line":"            raise RingValidationError("},{"line_number":702,"context_line":"                \u0027All rings must have same part_shift number\u0027)"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"        # validate if same devices appreard in different rings"},{"line_number":705,"context_line":"        if ring_indexes:"},{"line_number":706,"context_line":"            validated_rings \u003d [ring for i, ring in enumerate(self.rings)"},{"line_number":707,"context_line":"                               if i not in ring_indexes]"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_a403da0c","line":704,"in_reply_to":"dab17558_09580f30","updated":"2016-05-19 06:17:40.000000000","message":"Done","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":18838,"name":"Paul Dardeau","email":"paul.dardeau@intel.com","username":"pdardeau"},"change_message_id":"f76a133e2cfa5fad51ba0a80118238db6e196f69","unresolved":false,"context_lines":[{"line_number":762,"context_line":"                    invalid_dev_rings[ip_port_dev].add(name_dev_id)"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"        if invalid_dev_rings:"},{"line_number":765,"context_line":"            massages \u003d []"},{"line_number":766,"context_line":"            message_format \u003d \\"},{"line_number":767,"context_line":"                \u0027{ip: %s, port: %d, device: %s} in %s\u0027"},{"line_number":768,"context_line":"            for ip_port_dev, file_dev_ids in invalid_dev_rings.items():"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_2cc881a7","line":765,"updated":"2016-05-17 19:41:08.000000000","message":"messages?","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"792d5c15e7f48fb0f966f262d7094280a9505538","unresolved":false,"context_lines":[{"line_number":762,"context_line":"                    invalid_dev_rings[ip_port_dev].add(name_dev_id)"},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"        if invalid_dev_rings:"},{"line_number":765,"context_line":"            massages \u003d []"},{"line_number":766,"context_line":"            message_format \u003d \\"},{"line_number":767,"context_line":"                \u0027{ip: %s, port: %d, device: %s} in %s\u0027"},{"line_number":768,"context_line":"            for ip_port_dev, file_dev_ids in invalid_dev_rings.items():"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_24108a4e","line":765,"in_reply_to":"dab17558_2cc881a7","updated":"2016-05-19 06:17:40.000000000","message":"Yes, will fix.","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":18838,"name":"Paul Dardeau","email":"paul.dardeau@intel.com","username":"pdardeau"},"change_message_id":"f76a133e2cfa5fad51ba0a80118238db6e196f69","unresolved":false,"context_lines":[{"line_number":771,"context_line":"                file_dev_ids_list \u003d json.dumps(["},{"line_number":772,"context_line":"                    {\u0027ring\u0027: file_dev_id[0], \u0027id\u0027: file_dev_id[1]}"},{"line_number":773,"context_line":"                    for file_dev_id in file_dev_ids])"},{"line_number":774,"context_line":"                massages.append("},{"line_number":775,"context_line":"                    message_format % (ip, port, dev, file_dev_ids_list))"},{"line_number":776,"context_line":"            raise RingValidationError("},{"line_number":777,"context_line":"                \u0027Same (ip, port, device) set found in diffent rings, %s\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_8cb7ed1f","line":774,"updated":"2016-05-17 19:41:08.000000000","message":"messages?","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"792d5c15e7f48fb0f966f262d7094280a9505538","unresolved":false,"context_lines":[{"line_number":771,"context_line":"                file_dev_ids_list \u003d json.dumps(["},{"line_number":772,"context_line":"                    {\u0027ring\u0027: file_dev_id[0], \u0027id\u0027: file_dev_id[1]}"},{"line_number":773,"context_line":"                    for file_dev_id in file_dev_ids])"},{"line_number":774,"context_line":"                massages.append("},{"line_number":775,"context_line":"                    message_format % (ip, port, dev, file_dev_ids_list))"},{"line_number":776,"context_line":"            raise RingValidationError("},{"line_number":777,"context_line":"                \u0027Same (ip, port, device) set found in diffent rings, %s\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_841df668","line":774,"in_reply_to":"dab17558_8cb7ed1f","updated":"2016-05-19 06:17:40.000000000","message":"Done","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":18838,"name":"Paul Dardeau","email":"paul.dardeau@intel.com","username":"pdardeau"},"change_message_id":"f76a133e2cfa5fad51ba0a80118238db6e196f69","unresolved":false,"context_lines":[{"line_number":825,"context_line":"        return self.rings[0].get_part(account, container, obj)"},{"line_number":826,"context_line":""},{"line_number":827,"context_line":"    @validate_rings"},{"line_number":828,"context_line":"    def get_part_nodes(self, part, ring_reload\u003dTrue):"},{"line_number":829,"context_line":"        # re-assign the index from local rings"},{"line_number":830,"context_line":"        part_nodes \u003d []"},{"line_number":831,"context_line":"        for i, ring in enumerate(self.rings):"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_8cfc0db6","line":828,"updated":"2016-05-17 19:41:08.000000000","message":"This is the technique that could also be used for _get_part_nodes (ring_reload\u003dTrue)","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"792d5c15e7f48fb0f966f262d7094280a9505538","unresolved":false,"context_lines":[{"line_number":825,"context_line":"        return self.rings[0].get_part(account, container, obj)"},{"line_number":826,"context_line":""},{"line_number":827,"context_line":"    @validate_rings"},{"line_number":828,"context_line":"    def get_part_nodes(self, part, ring_reload\u003dTrue):"},{"line_number":829,"context_line":"        # re-assign the index from local rings"},{"line_number":830,"context_line":"        part_nodes \u003d []"},{"line_number":831,"context_line":"        for i, ring in enumerate(self.rings):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_2f1022a8","line":828,"in_reply_to":"dab17558_8cfc0db6","updated":"2016-05-19 06:17:40.000000000","message":"Thanks for suggestion but I am realizing we could drop the ring_reload because it doesn\u0027t look to be used anywhere (i didn\u0027t remember why I did do like this). I will try it!","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"}],"test/unit/common/ring/test_ring.py":[{"author":{"_account_id":18838,"name":"Paul Dardeau","email":"paul.dardeau@intel.com","username":"pdardeau"},"change_message_id":"f76a133e2cfa5fad51ba0a80118238db6e196f69","unresolved":false,"context_lines":[{"line_number":984,"context_line":""},{"line_number":985,"context_line":"        composite_ring.rings[1]._rtime \u003d 0"},{"line_number":986,"context_line":"        with self.assertRaises(RingValidationError) as cm:"},{"line_number":987,"context_line":"            composite_ring.devs"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"        # keep old replica count with expected message"},{"line_number":990,"context_line":"        self.assertEqual(6, composite_ring.replica_count)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_57747266","line":987,"updated":"2016-05-17 19:41:08.000000000","message":"Had a failure here (RingValidationError not raised)","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"792d5c15e7f48fb0f966f262d7094280a9505538","unresolved":false,"context_lines":[{"line_number":984,"context_line":""},{"line_number":985,"context_line":"        composite_ring.rings[1]._rtime \u003d 0"},{"line_number":986,"context_line":"        with self.assertRaises(RingValidationError) as cm:"},{"line_number":987,"context_line":"            composite_ring.devs"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"        # keep old replica count with expected message"},{"line_number":990,"context_line":"        self.assertEqual(6, composite_ring.replica_count)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_243ecab8","line":987,"in_reply_to":"dab17558_57747266","updated":"2016-05-19 06:17:40.000000000","message":"Oh really? I\u0027ll try this again to figure out what\u0027s happen here.","commit_id":"a2d693af5783cf3c37a97cab6500cdfb010dcb25"}],"test/unit/proxy/test_server.py":[{"author":{"_account_id":11866,"name":"Naoto Nishizono","email":"nishizono.naoto@po.ntt-tx.co.jp","username":"Naoto_Nishizono"},"change_message_id":"3f3ef4c12c76f3ea259ad037651fbe1d1cc4a706","unresolved":false,"context_lines":[{"line_number":3303,"context_line":""},{"line_number":3304,"context_line":"            for method in (\u0027PUT\u0027, \u0027HEAD\u0027, \u0027GET\u0027, \u0027POST\u0027, \u0027DELETE\u0027):"},{"line_number":3305,"context_line":"                with replace_with_invalid_ring():"},{"line_number":3306,"context_line":"                    headers, error_logs, warning_logs \u003d \\"},{"line_number":3307,"context_line":"                        get_ring_reloaded_response(method, sleep_until_warning)"},{"line_number":3308,"context_line":"                exp \u003d \u0027HTTP/1.1 20\u0027"},{"line_number":3309,"context_line":"                self.assertEqual(headers[:len(exp)], exp)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_09ef7f1e","line":3306,"range":{"start_line":3306,"start_character":56,"end_line":3306,"end_character":57},"updated":"2016-02-24 06:39:18.000000000","message":"Warning log can not be output, there is that assertion to fail.\n\nI changed the name of the device added to create invalid ring from sdi1 to sdz1.\n\nAs a result, sdz1 is not output to the log.\n\nFrom the above, in this test may fail to read the invalid ring.","commit_id":"56fa15a0b94b9c782b0499625a2d2958e2fd70e3"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"125989debe492ff4728380b74991b04ed4a7002a","unresolved":false,"context_lines":[{"line_number":3303,"context_line":""},{"line_number":3304,"context_line":"            for method in (\u0027PUT\u0027, \u0027HEAD\u0027, \u0027GET\u0027, \u0027POST\u0027, \u0027DELETE\u0027):"},{"line_number":3305,"context_line":"                with replace_with_invalid_ring():"},{"line_number":3306,"context_line":"                    headers, error_logs, warning_logs \u003d \\"},{"line_number":3307,"context_line":"                        get_ring_reloaded_response(method, sleep_until_warning)"},{"line_number":3308,"context_line":"                exp \u003d \u0027HTTP/1.1 20\u0027"},{"line_number":3309,"context_line":"                self.assertEqual(headers[:len(exp)], exp)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_80983b6c","line":3306,"range":{"start_line":3306,"start_character":56,"end_line":3306,"end_character":57},"in_reply_to":"bae84128_09ef7f1e","updated":"2016-04-22 06:13:35.000000000","message":"I noticed the warning log can appear from my bug at sleep enough condition at L3244. Probably the lambda function will return a function pointer so the sleep_until_warning_error will be always True even if expected log line didn\u0027t appear yet. Will fix.","commit_id":"56fa15a0b94b9c782b0499625a2d2958e2fd70e3"}]}
