)]}'
{"tests/unit/test_launcher.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"d2766bc4f272738b43aca293d1838690d62b9cca","unresolved":true,"context_lines":[{"line_number":607,"context_line":"        provider \u003d self.launcher._getProvider("},{"line_number":608,"context_line":"            \u0027tenant-one\u0027, \u0027aws-us-east-1-main\u0027)"},{"line_number":609,"context_line":"        endpoint \u003d provider.getEndpoint()"},{"line_number":610,"context_line":"        image \u003d list(provider.images.values())[1]"},{"line_number":611,"context_line":"        self.assertEqual(\u0027debian-local\u0027, image.name)"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"        upload_event \u003d threading.Event()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9793253a_d16c3504","line":610,"updated":"2025-07-21 17:23:38.000000000","message":"For other reviewers `layouts/nodepool-image.yaml` has `debian, debian-local, and ubuntu-local` in that order within the provider images list.","commit_id":"1673e44a48fdb43d2839b9b416d0111e88556587"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"d2766bc4f272738b43aca293d1838690d62b9cca","unresolved":true,"context_lines":[{"line_number":652,"context_line":"                    state_time\u003dtime.time(),"},{"line_number":653,"context_line":"                )"},{"line_number":654,"context_line":"                with iba.activeContext(ctx):"},{"line_number":655,"context_line":"                    iba.state \u003d iba.State.READY"},{"line_number":656,"context_line":"        self.launcher.checkMissingUploads()"},{"line_number":657,"context_line":"        self.launcher.checkMissingUploads()"},{"line_number":658,"context_line":"        upload_event.set()"}],"source_content_type":"text/x-python","patch_set":1,"id":"831042ee_3a99a884","line":655,"updated":"2025-07-21 17:23:38.000000000","message":"Nit, should the image build artifact be set to ready before we create an imageupload for it? I suspect under actual operations image uploads won\u0027t occur until the image build is ready?","commit_id":"1673e44a48fdb43d2839b9b416d0111e88556587"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"78866728fd2fb4780371764e5a3d6a27596c1e3c","unresolved":false,"context_lines":[{"line_number":652,"context_line":"                    state_time\u003dtime.time(),"},{"line_number":653,"context_line":"                )"},{"line_number":654,"context_line":"                with iba.activeContext(ctx):"},{"line_number":655,"context_line":"                    iba.state \u003d iba.State.READY"},{"line_number":656,"context_line":"        self.launcher.checkMissingUploads()"},{"line_number":657,"context_line":"        self.launcher.checkMissingUploads()"},{"line_number":658,"context_line":"        upload_event.set()"}],"source_content_type":"text/x-python","patch_set":1,"id":"6b5b3f9e_69a6951a","line":655,"in_reply_to":"831042ee_3a99a884","updated":"2025-07-21 17:28:23.000000000","message":"The image artifact becomes ready immediately after uploads are created; this is an accurate simulation.","commit_id":"1673e44a48fdb43d2839b9b416d0111e88556587"}],"zuul/launcher/server.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"d2766bc4f272738b43aca293d1838690d62b9cca","unresolved":true,"context_lines":[{"line_number":169,"context_line":"            for upload in self.uploads:"},{"line_number":170,"context_line":"                self.launcher.upload_uuids_in_queue.discard(upload.uuid)"},{"line_number":171,"context_line":"        except Exception:"},{"line_number":172,"context_line":"            self.log.exception(\"Error in upload job\")"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def _acquireUploadLocks(self, ctx, uploads):"},{"line_number":175,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"4eba3dc2_22efa56d","line":172,"range":{"start_line":172,"start_character":31,"end_line":172,"end_character":52},"updated":"2025-07-21 17:23:38.000000000","message":"Nit distinguishing this error from the one on line 167 might be nice. I think that the traceback will make it clear to anyone debugging problems here so this isn\u0027t a -1.","commit_id":"1673e44a48fdb43d2839b9b416d0111e88556587"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"78866728fd2fb4780371764e5a3d6a27596c1e3c","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            for upload in self.uploads:"},{"line_number":170,"context_line":"                self.launcher.upload_uuids_in_queue.discard(upload.uuid)"},{"line_number":171,"context_line":"        except Exception:"},{"line_number":172,"context_line":"            self.log.exception(\"Error in upload job\")"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def _acquireUploadLocks(self, ctx, uploads):"},{"line_number":175,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"377ee770_07bf2a14","line":172,"in_reply_to":"4eba3dc2_22efa56d","updated":"2025-07-21 17:28:23.000000000","message":"I considered that, but these are both exceptions that should never happen (especially the second one!).  Meanwhile, all of the candidate strings I could come up with were ridiculous.","commit_id":"1673e44a48fdb43d2839b9b416d0111e88556587"}]}
