)]}'
{"swift/obj/auditor.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"32ac21248ea1d5fb496ed6971000046b3fd6e216","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            if need_zbf_again:"},{"line_number":396,"context_line":"                kwargs[\u0027device_dirs\u0027] \u003d override_devices"},{"line_number":397,"context_line":"                self.fork_child(zero_byte_fps\u003dTrue, **kwargs)"},{"line_number":398,"context_line":"                os.wait()"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def run_forever(self, *args, **kwargs):"},{"line_number":401,"context_line":"        \"\"\"Run the object audit until stopped.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"7f96bb07_f5b2fe93","line":398,"updated":"2018-01-16 21:18:31.000000000","message":"this seems like we have to wait for all the per-device workers to finish all the disks before we get another zbf scan going - i don\u0027t like that...","commit_id":"098a7fd8cd06471f57a38453f936b9965a689cac"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"a4cb153c532a2611f8cfebee1799f8453c7d2065","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                               zero_byte_only_at_fps\u003dzero_byte_only_at_fps)"},{"line_number":320,"context_line":"        worker.audit_all_objects(mode\u003dmode, device_dirs\u003ddevice_dirs)"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def fork_child(self, zero_byte_fps\u003dFalse, **kwargs):"},{"line_number":323,"context_line":"        \"\"\"Child execution\"\"\""},{"line_number":324,"context_line":"        pid \u003d os.fork()"},{"line_number":325,"context_line":"        if pid:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_2866abc2","line":322,"updated":"2018-01-31 23:47:11.000000000","message":"It\u0027d be better to have \u0027sleep_between_zbf_scanner\u0027 as an explicit argument here. That way, kwargs remains a bunch of stuff to pass to run_audit, and the remaining arguments control things in fork_child.","commit_id":"8775e32fab31ecaed5002e419a409a6426e4402b"},{"author":{"_account_id":15513,"name":"yanwei","email":"yan.wei7@zte.com.cn","username":"vxlinux"},"change_message_id":"483c7fdc17bf9a247915becc0c6e1ad14d671a40","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                               zero_byte_only_at_fps\u003dzero_byte_only_at_fps)"},{"line_number":320,"context_line":"        worker.audit_all_objects(mode\u003dmode, device_dirs\u003ddevice_dirs)"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def fork_child(self, zero_byte_fps\u003dFalse, **kwargs):"},{"line_number":323,"context_line":"        \"\"\"Child execution\"\"\""},{"line_number":324,"context_line":"        pid \u003d os.fork()"},{"line_number":325,"context_line":"        if pid:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_c7da8d76","line":322,"in_reply_to":"5f93b717_2866abc2","updated":"2018-02-01 09:25:31.000000000","message":"Add a parameter to the func fork_child \nI think we should add a unit test such as test_fork_child accordingly.But I do not find this test func before.So I will try to write this unit test case.","commit_id":"8775e32fab31ecaed5002e419a409a6426e4402b"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"a4cb153c532a2611f8cfebee1799f8453c7d2065","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                    # self._sleep()"},{"line_number":397,"context_line":"                    # move sleep to sub process to avoid blocking"},{"line_number":398,"context_line":"                    # the main process"},{"line_number":399,"context_line":"                    kwargs[\u0027sleep_between_zbf_scanner\u0027] \u003d True"},{"line_number":400,"context_line":"                    zbf_pid \u003d self.fork_child(zero_byte_fps\u003dTrue, **kwargs)"},{"line_number":401,"context_line":"                    pids.add(zbf_pid)"},{"line_number":402,"context_line":"                pids.discard(pid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_c85867fb","line":399,"updated":"2018-01-31 23:47:11.000000000","message":"I\u0027d remove these three comment lines entirely, as well as the one saying \"sleep between ZBF scanner forks\".\n\nThe commented-out code must be removed. The comment about \"mov(ing) sleep to sub process\" only makes sense to someone reading this diff; once it is merged, there\u0027s no \"before\" state and \"after\" state, so the word \"move\" stops making sense IMO.","commit_id":"8775e32fab31ecaed5002e419a409a6426e4402b"},{"author":{"_account_id":15513,"name":"yanwei","email":"yan.wei7@zte.com.cn","username":"vxlinux"},"change_message_id":"483c7fdc17bf9a247915becc0c6e1ad14d671a40","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                    # self._sleep()"},{"line_number":397,"context_line":"                    # move sleep to sub process to avoid blocking"},{"line_number":398,"context_line":"                    # the main process"},{"line_number":399,"context_line":"                    kwargs[\u0027sleep_between_zbf_scanner\u0027] \u003d True"},{"line_number":400,"context_line":"                    zbf_pid \u003d self.fork_child(zero_byte_fps\u003dTrue, **kwargs)"},{"line_number":401,"context_line":"                    pids.add(zbf_pid)"},{"line_number":402,"context_line":"                pids.discard(pid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_07595533","line":399,"in_reply_to":"5f93b717_c85867fb","updated":"2018-02-01 09:25:31.000000000","message":"Done","commit_id":"8775e32fab31ecaed5002e419a409a6426e4402b"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"a4cb153c532a2611f8cfebee1799f8453c7d2065","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                    # the main process"},{"line_number":399,"context_line":"                    kwargs[\u0027sleep_between_zbf_scanner\u0027] \u003d True"},{"line_number":400,"context_line":"                    zbf_pid \u003d self.fork_child(zero_byte_fps\u003dTrue, **kwargs)"},{"line_number":401,"context_line":"                    pids.add(zbf_pid)"},{"line_number":402,"context_line":"                pids.discard(pid)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    def run_forever(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_a8487b2c","line":401,"updated":"2018-01-31 23:47:11.000000000","message":"I\u0027d prefer this as:\n\n    zbf_pid \u003d self.fork_child(zero_byte_fps\u003dTrue, sleep_between_zbf_scanner\u003dTrue, **kwargs)\n\nThis provides a clean separation between kwargs (which is for run_audit()) and the other two arguments (which are for fork_child()).","commit_id":"8775e32fab31ecaed5002e419a409a6426e4402b"},{"author":{"_account_id":15513,"name":"yanwei","email":"yan.wei7@zte.com.cn","username":"vxlinux"},"change_message_id":"483c7fdc17bf9a247915becc0c6e1ad14d671a40","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                    # the main process"},{"line_number":399,"context_line":"                    kwargs[\u0027sleep_between_zbf_scanner\u0027] \u003d True"},{"line_number":400,"context_line":"                    zbf_pid \u003d self.fork_child(zero_byte_fps\u003dTrue, **kwargs)"},{"line_number":401,"context_line":"                    pids.add(zbf_pid)"},{"line_number":402,"context_line":"                pids.discard(pid)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    def run_forever(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_c73e0db7","line":401,"in_reply_to":"5f93b717_a8487b2c","updated":"2018-02-01 09:25:31.000000000","message":"Done","commit_id":"8775e32fab31ecaed5002e419a409a6426e4402b"}],"test/unit/obj/test_auditor.py":[{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"a4cb153c532a2611f8cfebee1799f8453c7d2065","unresolved":false,"context_lines":[{"line_number":1307,"context_line":"            mocker.fork_called \u003d 0"},{"line_number":1308,"context_line":"            self.assertRaises(StopForever, my_auditor.run_forever)"},{"line_number":1309,"context_line":"            # Fork or Wait are called greate than or equal to 2 times in the"},{"line_number":1310,"context_line":"            # main process.2 times if zbf run once and 3 times if zbf run again"},{"line_number":1311,"context_line":"            self.assertGreaterEqual(mocker.fork_called, 2)"},{"line_number":1312,"context_line":"            self.assertGreaterEqual(mocker.wait_called, 2)"},{"line_number":1313,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f93b717_8876df6f","line":1310,"range":{"start_line":1310,"start_character":26,"end_line":1310,"end_character":28},"updated":"2018-01-31 23:47:11.000000000","message":"a space is needed after the period","commit_id":"8775e32fab31ecaed5002e419a409a6426e4402b"}]}
