)]}'
{"nodepool/builder.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"ab33e7d716f99bf75a8f07785a143a7f9a488777","unresolved":true,"context_lines":[{"line_number":473,"context_line":"            # If it appears in the config, even if it\u0027s not used by a"},{"line_number":474,"context_line":"            # provider, we will assume there is some other builder"},{"line_number":475,"context_line":"            # responsible for it, so we fall through to the else"},{"line_number":476,"context_line":"            # condition below and rely on data in ZK."},{"line_number":477,"context_line":"            builds_to_keep \u003d set()"},{"line_number":478,"context_line":"            # TODO(jeblair): When all builds for an image which is not"},{"line_number":479,"context_line":"            # in use are deleted, the image znode should be deleted as"}],"source_content_type":"text/x-python","patch_set":1,"id":"42fa892a_f6f91401","line":476,"updated":"2022-07-28 17:19:47.000000000","message":"OpenDev has ARM64 and x86_64 builders with disjoint providers and diskimage lists: https://opendev.org/openstack/project-config/src/branch/master/nodepool/nb03.opendev.org.yaml#L91-L196 vs https://opendev.org/openstack/project-config/src/branch/master/nodepool/nodepool.yaml#L103-L363. I\u0027m not sure this fix will fix the issue for OpenDev as a result.\n\nIn OpenDev\u0027s case we have to have disjoint diskimages because we can\u0027t do cross arch builds (and even if we could they would very likely be slow due emulation as with docker).","commit_id":"6a569402755a2dd307675d02f25819cf590b37f4"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"eb077586d13a842cb06a8e11bf2936cbcd599c24","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            # If it appears in the config, even if it\u0027s not used by a"},{"line_number":474,"context_line":"            # provider, we will assume there is some other builder"},{"line_number":475,"context_line":"            # responsible for it, so we fall through to the else"},{"line_number":476,"context_line":"            # condition below and rely on data in ZK."},{"line_number":477,"context_line":"            builds_to_keep \u003d set()"},{"line_number":478,"context_line":"            # TODO(jeblair): When all builds for an image which is not"},{"line_number":479,"context_line":"            # in use are deleted, the image znode should be deleted as"}],"source_content_type":"text/x-python","patch_set":1,"id":"0a063e57_5c5e7a4a","line":476,"in_reply_to":"42fa892a_f6f91401","updated":"2022-07-28 17:26:12.000000000","message":"I think OpenDev will need stub diskimages for everything, but the arm builder won\u0027t build them without any providers using them.","commit_id":"6a569402755a2dd307675d02f25819cf590b37f4"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"ab770b63ced81df1c35337a9eb31e8aaf20dc54e","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            # If it appears in the config, even if it\u0027s not used by a"},{"line_number":474,"context_line":"            # provider, we will assume there is some other builder"},{"line_number":475,"context_line":"            # responsible for it, so we fall through to the else"},{"line_number":476,"context_line":"            # condition below and rely on data in ZK."},{"line_number":477,"context_line":"            builds_to_keep \u003d set()"},{"line_number":478,"context_line":"            # TODO(jeblair): When all builds for an image which is not"},{"line_number":479,"context_line":"            # in use are deleted, the image znode should be deleted as"}],"source_content_type":"text/x-python","patch_set":1,"id":"5291d921_81fd2c25","line":476,"in_reply_to":"42fa892a_f6f91401","updated":"2022-07-28 17:37:22.000000000","message":"https://review.opendev.org/851444 is the change for opendev.","commit_id":"6a569402755a2dd307675d02f25819cf590b37f4"}],"nodepool/tests/unit/test_builder.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0043fedd0181072533e4b00bf439a022f3cccf20","unresolved":true,"context_lines":[{"line_number":260,"context_line":"        self.waitForImage(\u0027fake-provider2\u0027, \u0027fake-image2\u0027)"},{"line_number":261,"context_line":"        # Don\u0027t check files because the image path switched to the"},{"line_number":262,"context_line":"        # second builder; we\u0027re really only interested in ZK."},{"line_number":263,"context_line":"        self.waitForBuild(\u0027fake-image1\u0027, \u00270000000001\u0027, check_files\u003dFalse)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def test_image_removal_dib_deletes_first(self):"},{"line_number":266,"context_line":"        # Break cloud image deleting"}],"source_content_type":"text/x-python","patch_set":1,"id":"5cbf9061_a480bd33","line":263,"updated":"2022-07-28 17:37:43.000000000","message":"Do we also need to assert that builder2 went through a cleanup cycle to ensure it has had a chance to clean up fake-image1? Put another way is there a race here in checking that the zk build record for fake-image1 is present and attempting to delete it?","commit_id":"6a569402755a2dd307675d02f25819cf590b37f4"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9ee92af4e56f2be90295f2dc1a4f9f4b80fbc42f","unresolved":true,"context_lines":[{"line_number":260,"context_line":"        self.waitForImage(\u0027fake-provider2\u0027, \u0027fake-image2\u0027)"},{"line_number":261,"context_line":"        # Don\u0027t check files because the image path switched to the"},{"line_number":262,"context_line":"        # second builder; we\u0027re really only interested in ZK."},{"line_number":263,"context_line":"        self.waitForBuild(\u0027fake-image1\u0027, \u00270000000001\u0027, check_files\u003dFalse)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def test_image_removal_dib_deletes_first(self):"},{"line_number":266,"context_line":"        # Break cloud image deleting"}],"source_content_type":"text/x-python","patch_set":1,"id":"87186040_e2b99a8f","line":263,"in_reply_to":"5cbf9061_a480bd33","updated":"2022-07-28 17:42:19.000000000","message":"I believe that since the builder kicks off a cleanup at startup and it\u0027s quite fast, it should be complete by the time the secound build we wait for is done.  I think there is a possibility the thread could be starved, but that would probably just make this test flakey.  Guaranteeing that is fairly difficult with the nodepool test infrastructure.","commit_id":"6a569402755a2dd307675d02f25819cf590b37f4"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"57fc6ab354f99d4edd2f74067296cda64af5e72d","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        self.waitForImage(\u0027fake-provider2\u0027, \u0027fake-image2\u0027)"},{"line_number":261,"context_line":"        # Don\u0027t check files because the image path switched to the"},{"line_number":262,"context_line":"        # second builder; we\u0027re really only interested in ZK."},{"line_number":263,"context_line":"        self.waitForBuild(\u0027fake-image1\u0027, \u00270000000001\u0027, check_files\u003dFalse)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def test_image_removal_dib_deletes_first(self):"},{"line_number":266,"context_line":"        # Break cloud image deleting"}],"source_content_type":"text/x-python","patch_set":1,"id":"5975b1f0_482bdca5","line":263,"in_reply_to":"87186040_e2b99a8f","updated":"2022-07-28 17:44:25.000000000","message":"Ack","commit_id":"6a569402755a2dd307675d02f25819cf590b37f4"}]}
