)]}'
{"tests/base.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f55e60d7cb8bfef34b7ba86ce3a30fffae348fe9","unresolved":false,"context_lines":[{"line_number":2385,"context_line":""},{"line_number":2386,"context_line":"        \"\"\""},{"line_number":2387,"context_line":"        builds \u003d self.running_builds[:]"},{"line_number":2388,"context_line":"        if len(self.running_builds) \u003d\u003d 0:"},{"line_number":2389,"context_line":"            self.log.debug(\u0027No running builds to release\u0027)"},{"line_number":2390,"context_line":"            return"},{"line_number":2391,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_02b874c4","line":2388,"range":{"start_line":2388,"start_character":15,"end_line":2388,"end_character":34},"updated":"2020-01-27 17:04:00.000000000","message":"Should this be builds? I believe a copy is made a line up to avoid races? If not then maybe put this block above the builds assignment.","commit_id":"e73f61f85d44d1577fd9371d73c8c21f021f1c76"},{"author":{"_account_id":2475,"name":"Antoine Musso","email":"hashar@free.fr","username":"hashar"},"change_message_id":"2245c25c01a4f6cccfea8416c100c0f501b5b17e","unresolved":false,"context_lines":[{"line_number":2385,"context_line":""},{"line_number":2386,"context_line":"        \"\"\""},{"line_number":2387,"context_line":"        builds \u003d self.running_builds[:]"},{"line_number":2388,"context_line":"        if len(self.running_builds) \u003d\u003d 0:"},{"line_number":2389,"context_line":"            self.log.debug(\u0027No running builds to release\u0027)"},{"line_number":2390,"context_line":"            return"},{"line_number":2391,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_281471e9","line":2388,"range":{"start_line":2388,"start_character":15,"end_line":2388,"end_character":34},"in_reply_to":"3fa7e38b_02b874c4","updated":"2020-01-27 18:44:49.000000000","message":"That comes from the switch to Gearman back in 2013 https://review.opendev.org/#/c/28696/\n\nI have completely missed copy, my bad ;)\n\nThere are a couple others in log statements. I guess I can update them as well and add a comment about the copy?","commit_id":"e73f61f85d44d1577fd9371d73c8c21f021f1c76"},{"author":{"_account_id":2475,"name":"Antoine Musso","email":"hashar@free.fr","username":"hashar"},"change_message_id":"685f71620387dd12bc2227cae22e9974cd9cb2b5","unresolved":false,"context_lines":[{"line_number":2385,"context_line":""},{"line_number":2386,"context_line":"        \"\"\""},{"line_number":2387,"context_line":"        builds \u003d self.running_builds[:]"},{"line_number":2388,"context_line":"        if len(self.running_builds) \u003d\u003d 0:"},{"line_number":2389,"context_line":"            self.log.debug(\u0027No running builds to release\u0027)"},{"line_number":2390,"context_line":"            return"},{"line_number":2391,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_7e53153a","line":2388,"range":{"start_line":2388,"start_character":15,"end_line":2388,"end_character":34},"in_reply_to":"3fa7e38b_281471e9","updated":"2020-03-06 09:06:51.000000000","message":"Done :)","commit_id":"e73f61f85d44d1577fd9371d73c8c21f021f1c76"},{"author":{"_account_id":2475,"name":"Antoine Musso","email":"hashar@free.fr","username":"hashar"},"change_message_id":"2245c25c01a4f6cccfea8416c100c0f501b5b17e","unresolved":false,"context_lines":[{"line_number":2390,"context_line":"            return"},{"line_number":2391,"context_line":""},{"line_number":2392,"context_line":"        self.log.debug(\"Releasing build %s (%s)\" % (regex,"},{"line_number":2393,"context_line":"                                                    len(self.running_builds)))"},{"line_number":2394,"context_line":"        for build in builds:"},{"line_number":2395,"context_line":"            if not regex or re.match(regex, build.name):"},{"line_number":2396,"context_line":"                self.log.debug(\"Releasing build %s\" %"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e89df96b","line":2393,"range":{"start_line":2393,"start_character":56,"end_line":2393,"end_character":75},"updated":"2020-01-27 18:44:49.000000000","message":"one there","commit_id":"e73f61f85d44d1577fd9371d73c8c21f021f1c76"},{"author":{"_account_id":2475,"name":"Antoine Musso","email":"hashar@free.fr","username":"hashar"},"change_message_id":"685f71620387dd12bc2227cae22e9974cd9cb2b5","unresolved":false,"context_lines":[{"line_number":2390,"context_line":"            return"},{"line_number":2391,"context_line":""},{"line_number":2392,"context_line":"        self.log.debug(\"Releasing build %s (%s)\" % (regex,"},{"line_number":2393,"context_line":"                                                    len(self.running_builds)))"},{"line_number":2394,"context_line":"        for build in builds:"},{"line_number":2395,"context_line":"            if not regex or re.match(regex, build.name):"},{"line_number":2396,"context_line":"                self.log.debug(\"Releasing build %s\" %"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_fe3ce5e1","line":2393,"range":{"start_line":2393,"start_character":56,"end_line":2393,"end_character":75},"in_reply_to":"3fa7e38b_e89df96b","updated":"2020-03-06 09:06:51.000000000","message":"Updated to use the copy","commit_id":"e73f61f85d44d1577fd9371d73c8c21f021f1c76"},{"author":{"_account_id":2475,"name":"Antoine Musso","email":"hashar@free.fr","username":"hashar"},"change_message_id":"2245c25c01a4f6cccfea8416c100c0f501b5b17e","unresolved":false,"context_lines":[{"line_number":2400,"context_line":"                self.log.debug(\"Not releasing build %s\" %"},{"line_number":2401,"context_line":"                               (build.parameters[\u0027zuul\u0027][\u0027build\u0027]))"},{"line_number":2402,"context_line":"        self.log.debug(\"Done releasing builds %s (%s)\" %"},{"line_number":2403,"context_line":"                       (regex, len(self.running_builds)))"},{"line_number":2404,"context_line":""},{"line_number":2405,"context_line":"    def executeJob(self, job):"},{"line_number":2406,"context_line":"        build \u003d FakeBuild(self, job)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_08a175a8","line":2403,"range":{"start_line":2403,"start_character":35,"end_line":2403,"end_character":54},"updated":"2020-01-27 18:44:49.000000000","message":"and a second one.","commit_id":"e73f61f85d44d1577fd9371d73c8c21f021f1c76"},{"author":{"_account_id":2475,"name":"Antoine Musso","email":"hashar@free.fr","username":"hashar"},"change_message_id":"685f71620387dd12bc2227cae22e9974cd9cb2b5","unresolved":false,"context_lines":[{"line_number":2400,"context_line":"                self.log.debug(\"Not releasing build %s\" %"},{"line_number":2401,"context_line":"                               (build.parameters[\u0027zuul\u0027][\u0027build\u0027]))"},{"line_number":2402,"context_line":"        self.log.debug(\"Done releasing builds %s (%s)\" %"},{"line_number":2403,"context_line":"                       (regex, len(self.running_builds)))"},{"line_number":2404,"context_line":""},{"line_number":2405,"context_line":"    def executeJob(self, job):"},{"line_number":2406,"context_line":"        build \u003d FakeBuild(self, job)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_9e27f1ca","line":2403,"range":{"start_line":2403,"start_character":35,"end_line":2403,"end_character":54},"in_reply_to":"3fa7e38b_08a175a8","updated":"2020-03-06 09:06:51.000000000","message":"Updated to use the copy","commit_id":"e73f61f85d44d1577fd9371d73c8c21f021f1c76"}],"zuul/lib/gearworker.py":[{"author":{"_account_id":2475,"name":"Antoine Musso","email":"hashar@free.fr","username":"hashar"},"change_message_id":"de6e331756d9d0dddace339f232304635e264651","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            self.gearman.registerFunction(job)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def unregister(self):"},{"line_number":65,"context_line":"        self.log.debug(\u0027Unregistering all jobs (%s)\u0027 % len(self.jobs))"},{"line_number":66,"context_line":"        for job in self.jobs:"},{"line_number":67,"context_line":"            self.gearman.unRegisterFunction(job)"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_c5fe8e69","line":65,"range":{"start_line":65,"start_character":8,"end_line":65,"end_character":70},"updated":"2020-04-02 08:46:33.000000000","message":"While rebasing, I have also updated the debug log for the unregister method.","commit_id":"d6beb77397f596dbd333975d31b6f3af02ea8f6d"}]}
