)]}'
{"tests/unit/test_executor.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d591d3d4987c3d00c1defe162d4c7a6b62059ea7","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import zuul.executor.server"},{"line_number":27,"context_line":"import zuul.model"},{"line_number":28,"context_line":"import gear"},{"line_number":29,"context_line":"from tests.base import ("},{"line_number":30,"context_line":"    ZuulTestCase,"},{"line_number":31,"context_line":"    AnsibleZuulTestCase,"}],"source_content_type":"text/x-python","patch_set":35,"id":"9f560f44_ee2b5992","line":28,"updated":"2020-09-16 12:22:21.000000000","message":"linters: F401 \u0027gear\u0027 imported but unused","commit_id":"725d42bd06987578294de42ca814e9ad20e898e6"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d591d3d4987c3d00c1defe162d4c7a6b62059ea7","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from zuul.executor.sensors.startingbuilds import StartingBuildsSensor"},{"line_number":38,"context_line":"from zuul.executor.sensors.ram import RAMSensor"},{"line_number":39,"context_line":"from zuul.lib.ansible import AnsibleManager"},{"line_number":40,"context_line":"from zuul.zk.cache import ZooKeeperBuildItem"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"9f560f44_ce281599","line":39,"updated":"2020-09-16 12:22:21.000000000","message":"linters: F401 \u0027zuul.lib.ansible.AnsibleManager\u0027 imported but unused","commit_id":"725d42bd06987578294de42ca814e9ad20e898e6"}],"zuul/executor/client.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"126197a656c9e58b4f888172ca67f69577eb8f9a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import threading"},{"line_number":22,"context_line":"from uuid import uuid4"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import zuul.model"},{"line_number":25,"context_line":"from zuul.lib.config import get_default"},{"line_number":26,"context_line":"from zuul.lib.gear_utils import getGearmanFunctions"},{"line_number":27,"context_line":"from zuul.lib.jsonutil import json_dumps"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_2599e278","line":24,"updated":"2020-08-17 09:06:09.000000000","message":"linters: F401 \u0027zuul.model\u0027 imported but unused","commit_id":"bf415c9d47581af118612629e83ce0d2df38da05"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"126197a656c9e58b4f888172ca67f69577eb8f9a","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from uuid import uuid4"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import zuul.model"},{"line_number":25,"context_line":"from zuul.lib.config import get_default"},{"line_number":26,"context_line":"from zuul.lib.gear_utils import getGearmanFunctions"},{"line_number":27,"context_line":"from zuul.lib.jsonutil import json_dumps"},{"line_number":28,"context_line":"from zuul.lib.logutil import get_annotated_logger"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_8589ce27","line":25,"updated":"2020-08-17 09:06:09.000000000","message":"linters: F401 \u0027zuul.lib.config.get_default\u0027 imported but unused","commit_id":"bf415c9d47581af118612629e83ce0d2df38da05"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"126197a656c9e58b4f888172ca67f69577eb8f9a","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import zuul.model"},{"line_number":25,"context_line":"from zuul.lib.config import get_default"},{"line_number":26,"context_line":"from zuul.lib.gear_utils import getGearmanFunctions"},{"line_number":27,"context_line":"from zuul.lib.jsonutil import json_dumps"},{"line_number":28,"context_line":"from zuul.lib.logutil import get_annotated_logger"},{"line_number":29,"context_line":"from zuul.model import Build"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_658c7a35","line":26,"updated":"2020-08-17 09:06:09.000000000","message":"linters: F401 \u0027zuul.lib.gear_utils.getGearmanFunctions\u0027 imported but unused","commit_id":"bf415c9d47581af118612629e83ce0d2df38da05"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"faa0ebbc82d5e7e03d505c53ba1d5bbc3bc9f3aa","unresolved":false,"context_lines":[{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    # TODO JK"},{"line_number":561,"context_line":"    def cancelJobInQueue(self, build: Build) -\u003e bool:"},{"line_number":562,"context_line":"        log \u003d get_annotated_logger(self.log, build.zuul_event_id,"},{"line_number":563,"context_line":"                                   build\u003dbuild.uuid)"},{"line_number":564,"context_line":"        if build.zookeeper_node:"},{"line_number":565,"context_line":"            self._zk.cancelBuildInQueue(build.zookeeper_node)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_0327c8c8","line":562,"updated":"2020-08-27 08:40:04.000000000","message":"linters: F841 local variable \u0027log\u0027 is assigned to but never used","commit_id":"435c238ae1392c64b5790906be034ba2a673dd39"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8612f762ba61661c1aa1c1b7cd237d981e7bd623","unresolved":false,"context_lines":[{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    # TODO JK"},{"line_number":561,"context_line":"    def cancelJobInQueue(self, build: Build) -\u003e bool:"},{"line_number":562,"context_line":"        log \u003d get_annotated_logger(self.log, build.zuul_event_id,"},{"line_number":563,"context_line":"                                   build\u003dbuild.uuid)"},{"line_number":564,"context_line":"        if build.zookeeper_node:"},{"line_number":565,"context_line":"            self._zk.cancelBuildInQueue(build.zookeeper_node)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f560f44_76e1f22a","line":562,"updated":"2020-08-31 07:09:24.000000000","message":"linters: F841 local variable \u0027log\u0027 is assigned to but never used","commit_id":"7276ea653dff6d8613ccfd61f4fc5760b66164e4"},{"author":{"_account_id":31905,"name":"Guillaume Chauvel","email":"guillaume.chauvel@gmail.com","username":"gchauvel"},"change_message_id":"4e84dfc2506f87d507151067a223650235d5804d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            if self._stopped:"},{"line_number":50,"context_line":"                return"},{"line_number":51,"context_line":"            try:"},{"line_number":52,"context_line":"                self.gearman.lookForLostBuilds()"},{"line_number":53,"context_line":"            except Exception:"},{"line_number":54,"context_line":"                self.log.exception(\"Exception checking builds:\")"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"9f560f44_976144d8","line":52,"range":{"start_line":52,"start_character":29,"end_line":52,"end_character":46},"updated":"2020-09-28 14:01:45.000000000","message":"this method is removed in your current change.","commit_id":"14ec838acd8e4f85cd4206e379a88754de79e266"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"1551883c9664bd0fba45ad3f63452b32d18d817e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            if self._stopped:"},{"line_number":50,"context_line":"                return"},{"line_number":51,"context_line":"            try:"},{"line_number":52,"context_line":"                self.gearman.lookForLostBuilds()"},{"line_number":53,"context_line":"            except Exception:"},{"line_number":54,"context_line":"                self.log.exception(\"Exception checking builds:\")"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"9f560f44_0e479b20","line":52,"range":{"start_line":52,"start_character":29,"end_line":52,"end_character":46},"in_reply_to":"9f560f44_976144d8","updated":"2020-10-02 07:29:18.000000000","message":"Done: Good catch - gearman cleanup needs to be removed too here.","commit_id":"14ec838acd8e4f85cd4206e379a88754de79e266"}],"zuul/executor/server.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"126197a656c9e58b4f888172ca67f69577eb8f9a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from urllib.parse import urlsplit"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from zuul.lib.ansible import AnsibleManager"},{"line_number":39,"context_line":"from zuul.lib.gearworker import ZuulGearWorker"},{"line_number":40,"context_line":"from zuul.lib.yamlutil import yaml"},{"line_number":41,"context_line":"from zuul.lib.config import get_default"},{"line_number":42,"context_line":"from zuul.lib.logutil import get_annotated_logger"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_459e9663","line":39,"updated":"2020-08-17 09:06:09.000000000","message":"linters: F401 \u0027zuul.lib.gearworker.ZuulGearWorker\u0027 imported but unused","commit_id":"bf415c9d47581af118612629e83ce0d2df38da05"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"1df70710ea6ebd6af3e191ae02978530898b85f0","unresolved":false,"context_lines":[{"line_number":3139,"context_line":"                       (unique, len(self.job_workers), self.job_workers))"},{"line_number":3140,"context_line":""},{"line_number":3141,"context_line":""},{"line_number":3142,"context_line":"    def stopJobDiskFull(self, jobdir):"},{"line_number":3143,"context_line":"        unique \u003d os.path.basename(jobdir)"},{"line_number":3144,"context_line":"        self.__stopJobByUnique(unique, reason\u003dAnsibleJob.RESULT_DISK_FULL)"},{"line_number":3145,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_5f167af3","line":3142,"updated":"2020-08-31 14:24:41.000000000","message":"linters: E303 too many blank lines (2)","commit_id":"aa80f7b115e7950b528f64cbbf583243e9ec55e5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"73bdf757904b1523e257d9c33490114be19a8de7","unresolved":false,"context_lines":[{"line_number":66,"context_line":"from zuul.zk.cache import ZooKeeperBuildItem"},{"line_number":67,"context_line":"from zuul.zk.client import event_type_str"},{"line_number":68,"context_line":"from zuul.zk.components import ZooKeeperComponentState"},{"line_number":69,"context_line":"from zuul.zk.exceptions import NoClientException"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"BUFFER_LINES_FOR_SYNTAX \u003d 200"},{"line_number":72,"context_line":"COMMANDS \u003d [\u0027stop\u0027, \u0027pause\u0027, \u0027unpause\u0027, \u0027graceful\u0027, \u0027verbose\u0027,"}],"source_content_type":"text/x-python","patch_set":66,"id":"3f65232a_82c55f3f","line":69,"updated":"2020-10-23 11:01:47.000000000","message":"linters: F401 \u0027zuul.zk.exceptions.NoClientException\u0027 imported but unused","commit_id":"9d194eb6c3fb85de6e63a9570936e1dfd8a99dc0"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"d8d4a63ff27ffaf6b8c13909c9f2b0ca36f21917","unresolved":false,"context_lines":[{"line_number":2998,"context_line":"                self.log.warning(\"Zookeeper disconnected\")"},{"line_number":2999,"context_line":"                time.sleep(1.0)"},{"line_number":3000,"context_line":"                continue"},{"line_number":3001,"context_line":"            self.zk_builds.cleanup()"},{"line_number":3002,"context_line":"            items \u003d list(self._build_items.items())"},{"line_number":3003,"context_line":"            for node_path, build_item in items:"},{"line_number":3004,"context_line":"                self.zk_builds.resumeAttempt(node_path, self.resumeJob)"}],"source_content_type":"text/x-python","patch_set":67,"id":"3f65232a_f6a03fa8","line":3001,"updated":"2020-10-26 14:05:15.000000000","message":"I\u0027m not sure it\u0027s necessary to run the cleanup on every iteration of the executor main loop on every single executor. Can we maybe do this periodically in a separate thread? Maybe it makes sense to also use the kazoo leader election feature so we only have one executor taking care of the cleanup.","commit_id":"17a4efe81282dcb4b734a4688449d28b44ff8585"}],"zuul/merger/server.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"237b625b03df4171328b1905a318ddde89cd51fd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import threading"},{"line_number":18,"context_line":"from abc import ABCMeta"},{"line_number":19,"context_line":"from configparser import ConfigParser"},{"line_number":20,"context_line":"from typing import Optional"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from zuul.zk import ZooKeeper"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_e6a16b48","line":20,"updated":"2020-08-03 11:32:07.000000000","message":"linters: F401 \u0027typing.Optional\u0027 imported but unused","commit_id":"26f81055752c53c800fe775ae3c723209fd5f52d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"abf09f2e53a012da3be604c6c038666e7f85d05e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import threading"},{"line_number":18,"context_line":"from abc import ABCMeta"},{"line_number":19,"context_line":"from configparser import ConfigParser"},{"line_number":20,"context_line":"from typing import Optional"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from zuul.zk import ZooKeeper"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_093d67c3","line":20,"updated":"2020-08-05 14:27:25.000000000","message":"linters: F401 \u0027typing.Optional\u0027 imported but unused","commit_id":"2fe7d476871e8371d6299d20a548848273bfbf80"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9acfc3c962970bae781ed7675ee2aeb426569c3c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import threading"},{"line_number":18,"context_line":"from abc import ABCMeta"},{"line_number":19,"context_line":"from configparser import ConfigParser"},{"line_number":20,"context_line":"from typing import Optional"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from zuul.zk import ZooKeeper"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_44e614ea","line":20,"updated":"2020-08-06 13:38:14.000000000","message":"linters: F401 \u0027typing.Optional\u0027 imported but unused","commit_id":"bf1ca38eb567ddc2e8fb50e0bac685fb4e463bea"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"126197a656c9e58b4f888172ca67f69577eb8f9a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import threading"},{"line_number":18,"context_line":"from abc import ABCMeta"},{"line_number":19,"context_line":"from configparser import ConfigParser"},{"line_number":20,"context_line":"from typing import Optional"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from zuul.zk import ZooKeeper"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_e58eca30","line":20,"updated":"2020-08-17 09:06:09.000000000","message":"linters: F401 \u0027typing.Optional\u0027 imported but unused","commit_id":"bf415c9d47581af118612629e83ce0d2df38da05"}],"zuul/scheduler.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8612f762ba61661c1aa1c1b7cd237d981e7bd623","unresolved":false,"context_lines":[{"line_number":25,"context_line":"import threading"},{"line_number":26,"context_line":"import time"},{"line_number":27,"context_line":"import urllib"},{"line_number":28,"context_line":"from typing import Dict"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from zuul.executor.client import ExecutorClient"},{"line_number":31,"context_line":"from zuul.lib.named_queue import NamedQueue"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f560f44_36d77a52","line":28,"updated":"2020-08-31 07:09:24.000000000","message":"linters: F401 \u0027typing.Dict\u0027 imported but unused","commit_id":"7276ea653dff6d8613ccfd61f4fc5760b66164e4"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8612f762ba61661c1aa1c1b7cd237d981e7bd623","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        self._hibernate \u003d False"},{"line_number":317,"context_line":"        self._stopped \u003d False"},{"line_number":318,"context_line":"        self._zuul_app \u003d None"},{"line_number":319,"context_line":"        self.executor \u003d None  # type: Optional[ExecutorClient]"},{"line_number":320,"context_line":"        self.merger \u003d None"},{"line_number":321,"context_line":"        self.connections \u003d None"},{"line_number":322,"context_line":"        self.statsd \u003d get_statsd(config)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f560f44_96e4863e","line":319,"updated":"2020-08-31 07:09:24.000000000","message":"linters: F821 undefined name \u0027Optional\u0027","commit_id":"7276ea653dff6d8613ccfd61f4fc5760b66164e4"}],"zuul/zk/builds.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"6424828709013f93cc7d62225d7fde54879bd872","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            # Result needs to be added after unlocking the node"},{"line_number":505,"context_line":"            self.data(path, result, key\u003d\u0027result\u0027 if success else \u0027exception\u0027)"},{"line_number":506,"context_line":"            return True"},{"line_number":507,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f560f44_7e04927e","line":507,"updated":"2020-09-23 19:04:54.000000000","message":"linters: W292 no newline at end of file","commit_id":"13e0d05f883851a63d44a5757be63da9b4f1433c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"507c203b2d0088c9fab138fb9e52be59c23b4a0a","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            # Result needs to be added after unlocking the node"},{"line_number":505,"context_line":"            self.data(path, result, key\u003d\u0027result\u0027 if success else \u0027exception\u0027)"},{"line_number":506,"context_line":"            return True"},{"line_number":507,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":42,"id":"9f560f44_f55f18e2","line":507,"updated":"2020-09-24 06:51:34.000000000","message":"linters: W292 no newline at end of file","commit_id":"ddaacc50b1a1eddbd607d026f3d98b963aa638e6"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"b55ced38f0f9c9a395841605684d978d39df8371","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                        log.debug(\"Next: Trying to aquire lock\")"},{"line_number":254,"context_line":"                        self.client.acquireLock(lock)"},{"line_number":255,"context_line":"                        cached.content[\u0027state\u0027] \u003d \u0027RUNNING\u0027"},{"line_number":256,"context_line":"                        self.persist(cached)"},{"line_number":257,"context_line":"                        if isinstance(cached, ZooKeeperBuildItem):"},{"line_number":258,"context_line":"                            log.debug(\"Next: %s\", path)"},{"line_number":259,"context_line":"                            return cached"}],"source_content_type":"text/x-python","patch_set":60,"id":"9f560f44_56407832","line":256,"updated":"2020-10-13 07:34:42.000000000","message":"Is the lock released somewhere else in case persist() fails e.g. because of a BadVersionError?","commit_id":"a596c89517318de81ae8bf6c539f02306799797d"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"332003f94764136bc63666c91f4f43ebc16cd4e1","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                        log.debug(\"Next: Trying to aquire lock\")"},{"line_number":254,"context_line":"                        self.client.acquireLock(lock)"},{"line_number":255,"context_line":"                        cached.content[\u0027state\u0027] \u003d \u0027RUNNING\u0027"},{"line_number":256,"context_line":"                        self.persist(cached)"},{"line_number":257,"context_line":"                        if isinstance(cached, ZooKeeperBuildItem):"},{"line_number":258,"context_line":"                            log.debug(\"Next: %s\", path)"},{"line_number":259,"context_line":"                            return cached"}],"source_content_type":"text/x-python","patch_set":60,"id":"7f6b1bfe_309f7151","line":256,"in_reply_to":"9f560f44_56407832","updated":"2020-10-16 04:00:06.000000000","message":"Done: Good catch.","commit_id":"a596c89517318de81ae8bf6c539f02306799797d"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"b55ced38f0f9c9a395841605684d978d39df8371","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                        self.client.acquireLock(lock)"},{"line_number":255,"context_line":"                        cached.content[\u0027state\u0027] \u003d \u0027RUNNING\u0027"},{"line_number":256,"context_line":"                        self.persist(cached)"},{"line_number":257,"context_line":"                        if isinstance(cached, ZooKeeperBuildItem):"},{"line_number":258,"context_line":"                            log.debug(\"Next: %s\", path)"},{"line_number":259,"context_line":"                            return cached"},{"line_number":260,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":60,"id":"9f560f44_36ad04ea","line":257,"updated":"2020-10-13 07:34:42.000000000","message":"I don\u0027t understand the if condition here. How can it happen that when iterating over ZookeeperBuildItems the type changes to something else?","commit_id":"a596c89517318de81ae8bf6c539f02306799797d"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"332003f94764136bc63666c91f4f43ebc16cd4e1","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                        self.client.acquireLock(lock)"},{"line_number":255,"context_line":"                        cached.content[\u0027state\u0027] \u003d \u0027RUNNING\u0027"},{"line_number":256,"context_line":"                        self.persist(cached)"},{"line_number":257,"context_line":"                        if isinstance(cached, ZooKeeperBuildItem):"},{"line_number":258,"context_line":"                            log.debug(\"Next: %s\", path)"},{"line_number":259,"context_line":"                            return cached"},{"line_number":260,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":60,"id":"7f6b1bfe_50a2ed9b","line":257,"in_reply_to":"9f560f44_36ad04ea","updated":"2020-10-16 04:00:06.000000000","message":"Done: Leftover","commit_id":"a596c89517318de81ae8bf6c539f02306799797d"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"00a3cc17275f4e3db766d752e14986cd8fdf860a","unresolved":false,"context_lines":[{"line_number":519,"context_line":"                    self.log.exception(\"Cleanup: Local removal %s failed!\","},{"line_number":520,"context_line":"                                       path)"},{"line_number":521,"context_line":"            else:"},{"line_number":522,"context_line":"                del self._to_delete[i]"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        # Cleanup nodes where deletion failed and responsible client died"},{"line_number":525,"context_line":"        self.log.debug(\"Cleanup: Nodes where deletion failed and dead client\")"}],"source_content_type":"text/x-python","patch_set":60,"id":"9f560f44_8adca471","line":522,"updated":"2020-10-13 08:16:47.000000000","message":"I think this can be simplified to:\n\n        # Cleanup nodes where deletion failed\n        self.log.debug(\"Cleanup: Nodes where deletion failed\")\n        for path in list(self._to_delete):\n            self.remove(path)\n\nas remove() is already taking care of node-exists checks and removing it from self._to_delete.\n\nThe NotEmptyError seems to be handled by the `except Exception` clause.","commit_id":"a596c89517318de81ae8bf6c539f02306799797d"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"d4a86b4710f6bed61873d3bad10ff3e772a7d24d","unresolved":false,"context_lines":[{"line_number":519,"context_line":"                    self.log.exception(\"Cleanup: Local removal %s failed!\","},{"line_number":520,"context_line":"                                       path)"},{"line_number":521,"context_line":"            else:"},{"line_number":522,"context_line":"                del self._to_delete[i]"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        # Cleanup nodes where deletion failed and responsible client died"},{"line_number":525,"context_line":"        self.log.debug(\"Cleanup: Nodes where deletion failed and dead client\")"}],"source_content_type":"text/x-python","patch_set":60,"id":"5f681702_986fb991","line":522,"in_reply_to":"9f560f44_8adca471","updated":"2020-10-16 07:43:38.000000000","message":"Done","commit_id":"a596c89517318de81ae8bf6c539f02306799797d"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"00a3cc17275f4e3db766d752e14986cd8fdf860a","unresolved":false,"context_lines":[{"line_number":532,"context_line":"                    self.log.exception(\"Cleanup: Removal of marked %s failed!\","},{"line_number":533,"context_line":"                                       path)"},{"line_number":534,"context_line":"            elif path in self._to_delete:"},{"line_number":535,"context_line":"                self._to_delete.remove(path)"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"        # Cleanup zombie nodes: empty build nodes. This may happen if a node"},{"line_number":538,"context_line":"        # gets deleted and lock is checked on that node which will create it"}],"source_content_type":"text/x-python","patch_set":60,"id":"9f560f44_2ad8f84f","line":535,"updated":"2020-10-13 08:16:47.000000000","message":"I think this can be simplified in a similar way as for the self._to_delete items above.","commit_id":"a596c89517318de81ae8bf6c539f02306799797d"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"d4a86b4710f6bed61873d3bad10ff3e772a7d24d","unresolved":false,"context_lines":[{"line_number":532,"context_line":"                    self.log.exception(\"Cleanup: Removal of marked %s failed!\","},{"line_number":533,"context_line":"                                       path)"},{"line_number":534,"context_line":"            elif path in self._to_delete:"},{"line_number":535,"context_line":"                self._to_delete.remove(path)"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"        # Cleanup zombie nodes: empty build nodes. This may happen if a node"},{"line_number":538,"context_line":"        # gets deleted and lock is checked on that node which will create it"}],"source_content_type":"text/x-python","patch_set":60,"id":"5f681702_f86ced9d","line":535,"in_reply_to":"9f560f44_2ad8f84f","updated":"2020-10-16 07:43:38.000000000","message":"Done","commit_id":"a596c89517318de81ae8bf6c539f02306799797d"}]}
