)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31083,"name":"Benjamin Schanzel","email":"benjamin.schanzel@bmw.de","username":"benjamin.schanzel"},"change_message_id":"12bb1260b7ba5be0734aba82f0e92d1013d7e613","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0bd0b954_3f07080d","updated":"2026-01-30 08:17:03.000000000","message":"recheck","commit_id":"f5563da993b7d684a4b6b05f812e542e85e2fb53"},{"author":{"_account_id":31083,"name":"Benjamin Schanzel","email":"benjamin.schanzel@bmw.de","username":"benjamin.schanzel"},"change_message_id":"f5a605c8badb22d0363cf72645871fe8ff6bdc12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"15fd722d_38201f8e","updated":"2026-07-24 08:16:01.000000000","message":"recheck","commit_id":"819678d394697c6d7157b6c0b34cf6e9ef84aaf3"}],"nodepool/builder.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"2cd1338be7ea5cdd95f85f9aff74bf1a3dd47e3a","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"        while self._running:"},{"line_number":1485,"context_line":"            # Don\u0027t do work if we\u0027ve lost communication with the ZK cluster"},{"line_number":1486,"context_line":"            did_suspend \u003d False"},{"line_number":1487,"context_line":"            while self._zk and (self._zk.suspended or self._zk.lost):"},{"line_number":1488,"context_line":"                did_suspend \u003d True"},{"line_number":1489,"context_line":"                self.log.info(\"ZooKeeper suspended. Waiting\")"},{"line_number":1490,"context_line":"                time.sleep(SUSPEND_WAIT_TIME)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fc91b22_b3d8f549","line":1487,"updated":"2026-01-23 18:05:27.000000000","message":"If we lose zk connection and then shut down, I don\u0027t think we\u0027ll exit this loop.  We should check self._running here as well (and probably after we exit the loop so we can short-circuit).","commit_id":"f5563da993b7d684a4b6b05f812e542e85e2fb53"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"a5fabe938f077a8367a152b1c15d836c94ca0338","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"        while self._running:"},{"line_number":1485,"context_line":"            # Don\u0027t do work if we\u0027ve lost communication with the ZK cluster"},{"line_number":1486,"context_line":"            did_suspend \u003d False"},{"line_number":1487,"context_line":"            while self._zk and (self._zk.suspended or self._zk.lost):"},{"line_number":1488,"context_line":"                did_suspend \u003d True"},{"line_number":1489,"context_line":"                self.log.info(\"ZooKeeper suspended. Waiting\")"},{"line_number":1490,"context_line":"                time.sleep(SUSPEND_WAIT_TIME)"}],"source_content_type":"text/x-python","patch_set":6,"id":"382c6cba_7502a88e","line":1487,"in_reply_to":"9fc91b22_b3d8f549","updated":"2026-01-29 23:34:17.000000000","message":"Let\u0027s keep them the same.  I\u0027ll switch my vote to a +2 on this, but will be happy to +2 a followup that then fixes them all.","commit_id":"f5563da993b7d684a4b6b05f812e542e85e2fb53"},{"author":{"_account_id":31083,"name":"Benjamin Schanzel","email":"benjamin.schanzel@bmw.de","username":"benjamin.schanzel"},"change_message_id":"8d47e707005cffb063d515d5db3cb3aa021bdb16","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"        while self._running:"},{"line_number":1485,"context_line":"            # Don\u0027t do work if we\u0027ve lost communication with the ZK cluster"},{"line_number":1486,"context_line":"            did_suspend \u003d False"},{"line_number":1487,"context_line":"            while self._zk and (self._zk.suspended or self._zk.lost):"},{"line_number":1488,"context_line":"                did_suspend \u003d True"},{"line_number":1489,"context_line":"                self.log.info(\"ZooKeeper suspended. Waiting\")"},{"line_number":1490,"context_line":"                time.sleep(SUSPEND_WAIT_TIME)"}],"source_content_type":"text/x-python","patch_set":6,"id":"c0223452_d175aaf6","line":1487,"in_reply_to":"9fc91b22_b3d8f549","updated":"2026-01-27 13:41:40.000000000","message":"Yes, looks like we can\u0027t gracefully exit from a state where the zk connection is (permanently) lost. I basically copied this boilerplate from UploadWorker, BuildWorker, etc, so this should apply to them as well.\n\nShall we fix this for all the worker implementations? In a follow-up change?","commit_id":"f5563da993b7d684a4b6b05f812e542e85e2fb53"}]}
