)]}'
{"swift/obj/auditor.py":[{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"c6f91b1aec4397dd705072e37d571e6a4ed3b7a0","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                   len(pids) \u003e 1:"},{"line_number":281,"context_line":"                    kwargs[\u0027device_dirs\u0027] \u003d override_devices"},{"line_number":282,"context_line":"                    # sleep between ZBF scanner forks"},{"line_number":283,"context_line":"                    self._sleep()"},{"line_number":284,"context_line":"                    zbf_pid \u003d self.fork_child(zero_byte_fps\u003dTrue, **kwargs)"},{"line_number":285,"context_line":"                    pids.append(zbf_pid)"},{"line_number":286,"context_line":"                pids.remove(pid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bad4c104_752640bc","line":283,"updated":"2014-04-29 14:29:15.000000000","message":"Should we consider change _sleep() to use ratelimit_sleep() instead?\n\nAnd could we add unit tests to ensure the behavior change?\n\nAnd a probe test might be nice, too, if you are up for it.","commit_id":"a6b0b4da6b317a3272c69c223e8c0b85295fb8d0"},{"author":{"_account_id":1005,"name":"Eamonn O\u0027Toole","email":"eamonn.otoole@hp.com","username":"eamonn-otoole"},"change_message_id":"657218abe4143487191b6694683ba078df26c3e5","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                   len(pids) \u003e 1:"},{"line_number":281,"context_line":"                    kwargs[\u0027device_dirs\u0027] \u003d override_devices"},{"line_number":282,"context_line":"                    # sleep between ZBF scanner forks"},{"line_number":283,"context_line":"                    self._sleep()"},{"line_number":284,"context_line":"                    zbf_pid \u003d self.fork_child(zero_byte_fps\u003dTrue, **kwargs)"},{"line_number":285,"context_line":"                    pids.append(zbf_pid)"},{"line_number":286,"context_line":"                pids.remove(pid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bad4c104_0686acb9","line":283,"in_reply_to":"bad4c104_752640bc","updated":"2014-04-29 16:26:07.000000000","message":"The auditor uses ratelimit_sleep() when an audit process is actually running, and that does help. However we\u0027re seeing lots of ZBF process restarts while the corresponding checksum auditor is running on new Swift systems.  Maybe setting an interval like Greg suggests might help, don\u0027t know how difficult that would be.\n\nI\u0027ve changed the unit tests to reflect the behaviour change (and now they even work!).  self._sleep() is set to raise StopForever as before for the first two calls of my_auditor.run_forever in the test_run_audit() unit test.  I\u0027ve reset self._sleep() to simply return to the calling function for the last test in test_run_audit() where I\u0027ve replaced my_auditor.run_forever with my_auditor.run_once. By setting self._sleep() to a no-op fork() and wait() are called 3 times as before, and my_auditor.run_once completes normally. I also run a test where self._sleep() raises an exception like before and where I call my_auditor.run_forever. fork() is called just twice and wait() just once, since the ZBF respawn loop raises an exception.","commit_id":"a6b0b4da6b317a3272c69c223e8c0b85295fb8d0"}]}
