)]}'
{"tests/unit/test_v3.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"e6d3edf5cdfc2aedfce7548df2182c85b91bf23b","unresolved":false,"context_lines":[{"line_number":2866,"context_line":""},{"line_number":2867,"context_line":"        while not len(self.builds):"},{"line_number":2868,"context_line":"            time.sleep(0.1)"},{"line_number":2869,"context_line":"        build \u003d self.builds[0]"},{"line_number":2870,"context_line":""},{"line_number":2871,"context_line":"        post_start \u003d os.path.join(self.test_root, build.uuid +"},{"line_number":2872,"context_line":"                                  \u0027.post_start.flag\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_9ade15d8","line":2869,"updated":"2019-05-29 15:02:23.000000000","message":"Use iterate_timeout here so we eventually exit on failure.","commit_id":"adcfd42c83a0a1aaa9050a6387464eedfd00bb40"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"a6d3bf16fb809ec7d3a9d51301a29f6d61a799a0","unresolved":false,"context_lines":[{"line_number":2866,"context_line":""},{"line_number":2867,"context_line":"        while not len(self.builds):"},{"line_number":2868,"context_line":"            time.sleep(0.1)"},{"line_number":2869,"context_line":"        build \u003d self.builds[0]"},{"line_number":2870,"context_line":""},{"line_number":2871,"context_line":"        post_start \u003d os.path.join(self.test_root, build.uuid +"},{"line_number":2872,"context_line":"                                  \u0027.post_start.flag\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_6c15a13f","line":2869,"in_reply_to":"bfb3d3c7_9ade15d8","updated":"2019-05-30 07:26:47.000000000","message":"Done","commit_id":"adcfd42c83a0a1aaa9050a6387464eedfd00bb40"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"e6d3edf5cdfc2aedfce7548df2182c85b91bf23b","unresolved":false,"context_lines":[{"line_number":2874,"context_line":"        while time.time() \u003c start + 90:"},{"line_number":2875,"context_line":"            if os.path.exists(post_start):"},{"line_number":2876,"context_line":"                break"},{"line_number":2877,"context_line":"            time.sleep(0.1)"},{"line_number":2878,"context_line":"        # The post playbook has started, abort the job"},{"line_number":2879,"context_line":"        self.fake_gerrit.addEvent(A.getChangeAbandonedEvent())"},{"line_number":2880,"context_line":"        self.waitUntilSettled()"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_3af36976","line":2877,"updated":"2019-05-29 15:02:23.000000000","message":"Use iterate_timeout here too.","commit_id":"adcfd42c83a0a1aaa9050a6387464eedfd00bb40"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"a6d3bf16fb809ec7d3a9d51301a29f6d61a799a0","unresolved":false,"context_lines":[{"line_number":2874,"context_line":"        while time.time() \u003c start + 90:"},{"line_number":2875,"context_line":"            if os.path.exists(post_start):"},{"line_number":2876,"context_line":"                break"},{"line_number":2877,"context_line":"            time.sleep(0.1)"},{"line_number":2878,"context_line":"        # The post playbook has started, abort the job"},{"line_number":2879,"context_line":"        self.fake_gerrit.addEvent(A.getChangeAbandonedEvent())"},{"line_number":2880,"context_line":"        self.waitUntilSettled()"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_8c101550","line":2877,"in_reply_to":"bfb3d3c7_3af36976","updated":"2019-05-30 07:26:47.000000000","message":"Done","commit_id":"adcfd42c83a0a1aaa9050a6387464eedfd00bb40"}],"zuul/executor/server.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"c5c509d39fc4a9215054e949b6532700c48344a4","unresolved":false,"context_lines":[{"line_number":1862,"context_line":"    def abortRunningProc(self):"},{"line_number":1863,"context_line":"        with self.proc_lock:"},{"line_number":1864,"context_line":"            if self.proc:"},{"line_number":1865,"context_line":"                self.log.debug(\"Abort: sending kill signal to job \""},{"line_number":1866,"context_line":"                               \"process group\")"},{"line_number":1867,"context_line":"                try:"},{"line_number":1868,"context_line":"                    pgid \u003d os.getpgid(self.proc.pid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_df7b0389","line":1865,"updated":"2019-05-30 17:09:00.000000000","message":"This will cancel the cleanup playbooks and run them again if we\u0027re already in cleanup phase. I think we should guard here against this.","commit_id":"14080e0b2344b1c505bc3d47553a5e57b7724417"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"c9415dd6776a6b2a98f8300cca4d657f7d4d546c","unresolved":false,"context_lines":[{"line_number":1862,"context_line":"    def abortRunningProc(self):"},{"line_number":1863,"context_line":"        with self.proc_lock:"},{"line_number":1864,"context_line":"            if self.proc:"},{"line_number":1865,"context_line":"                self.log.debug(\"Abort: sending kill signal to job \""},{"line_number":1866,"context_line":"                               \"process group\")"},{"line_number":1867,"context_line":"                try:"},{"line_number":1868,"context_line":"                    pgid \u003d os.getpgid(self.proc.pid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_46c3c789","line":1865,"in_reply_to":"bfb3d3c7_df7b0389","updated":"2019-05-31 00:19:48.000000000","message":"Done, I also added a lock around cleanup execution to avoid concurrent cleanup.","commit_id":"14080e0b2344b1c505bc3d47553a5e57b7724417"}]}
