)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"18ad8923c39622ca97494dafb55d6e7238a6fff0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c448c25b_4a9c0ff6","updated":"2023-10-04 15:40:28.000000000","message":"This patch is to illustrate the problem while the revealing bug is still there.\nNeed to figure a better way to test the fix.","commit_id":"6c1c32a5740d13f8952841e3f0aa75e70097cd1e"}],"swift/common/utils/__init__.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"18ad8923c39622ca97494dafb55d6e7238a6fff0","unresolved":true,"context_lines":[{"line_number":4300,"context_line":"        # there\u0027s nothing there."},{"line_number":4301,"context_line":"        def string_along(useful_iter, useless_iter_iter, logger):"},{"line_number":4302,"context_line":"            with closing_if_possible(ranges_iter):"},{"line_number":4303,"context_line":"                with closing_if_possible(useful_iter):"},{"line_number":4304,"context_line":"                    for x in useful_iter:"},{"line_number":4305,"context_line":"                        yield x"},{"line_number":4306,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"e3d190bd_e8d34961","line":4303,"range":{"start_line":4303,"start_character":16,"end_line":4303,"end_character":40},"updated":"2023-10-04 15:40:28.000000000","message":"maybe this is no longer needed ??","commit_id":"6c1c32a5740d13f8952841e3f0aa75e70097cd1e"}],"test/unit/proxy/controllers/test_base.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"18ad8923c39622ca97494dafb55d6e7238a6fff0","unresolved":true,"context_lines":[{"line_number":1782,"context_line":"                        # garbage collected"},{"line_number":1783,"context_line":"                        info_lines \u003d self.logger.get_lines_for_level("},{"line_number":1784,"context_line":"                            \u0027info\u0027).copy()"},{"line_number":1785,"context_line":"                        raise"},{"line_number":1786,"context_line":"            return info_lines"},{"line_number":1787,"context_line":""},{"line_number":1788,"context_line":"        # for the object server type the handler retries before raising timeout"}],"source_content_type":"text/x-python","patch_set":1,"id":"1d828617_43a7f991","line":1785,"updated":"2023-10-04 15:40:28.000000000","message":"I needed to jump through these hoops because I think the handler is getting gc\u0027d as the with self.assertRaises() exits (?) - I really struggle to think of another way to make the assertion about when the GeneratorExit is handled, but I\u0027d love to find it because once we fix lack of swift.non_client_disconnect the log message is going to disappear :/","commit_id":"6c1c32a5740d13f8952841e3f0aa75e70097cd1e"}]}
