)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"a30b8f00a0655635fed7c2db9f545e8accb2662d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"19e3c7a2_3a31b82b","updated":"2023-10-16 15:42:04.000000000","message":"You don\u0027t want to explain why getattr? Like, \"only object controller has this\"?","commit_id":"65ece03631fceb79d35a2df5963b18a44063862b"}],"swift/common/utils/__init__.py":[{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"8a7fefdb3e4deebaf9199a47f7606777066edfcc","unresolved":false,"context_lines":[{"line_number":1526,"context_line":"        @functools.wraps(func)"},{"line_number":1527,"context_line":"        def _timing_stats(ctrl, *args, **kwargs):"},{"line_number":1528,"context_line":"            start_time \u003d time.time()"},{"line_number":1529,"context_line":"            if getattr(ctrl, \u0027sleep_in_call\u0027, False):"},{"line_number":1530,"context_line":"                sleep()"},{"line_number":1531,"context_line":"            resp \u003d func(ctrl, *args, **kwargs)"},{"line_number":1532,"context_line":"            # .timing is for successful responses *or* error codes that are"}],"source_content_type":"text/x-python","patch_set":2,"id":"e9cf9bc0_4a045dc9","line":1529,"updated":"2023-10-16 16:50:48.000000000","message":"Nice, this will cover timing_since metrics as well. I will squash this patch in, thanks!","commit_id":"e5f98ff20de6e1889c5f98bbc6af40698caebe4e"}],"test/unit/obj/test_server.py":[{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"8a7fefdb3e4deebaf9199a47f7606777066edfcc","unresolved":false,"context_lines":[{"line_number":4838,"context_line":"            stats_elapsed_time \u003d fake_time() - stats_start_time"},{"line_number":4839,"context_line":"            return log_trans_time, stats_elapsed_time"},{"line_number":4840,"context_line":""},{"line_number":4841,"context_line":"        for method in (\u0027GET\u0027, \u0027HEAD\u0027, \u0027DELETE\u0027, \u0027PUT\u0027, \u0027POST\u0027, \u0027REPLICATE\u0027):"},{"line_number":4842,"context_line":"            log_time, stats_time \u003d do_call(method, False)"},{"line_number":4843,"context_line":"            self.assertLess(log_time, 12345)"},{"line_number":4844,"context_line":"            self.assertLess(stats_time, 12345)"}],"source_content_type":"text/x-python","patch_set":2,"id":"588cb73f_60735595","line":4841,"updated":"2023-10-16 16:50:48.000000000","message":"great tests!","commit_id":"e5f98ff20de6e1889c5f98bbc6af40698caebe4e"}]}
