)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a54a1490d94f5fa608a8c7823fd370e9c7d6889f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"70314290_c46b0ff2","updated":"2025-07-22 05:13:06.000000000","message":"let\u0027s not merge this until the failure is understood","commit_id":"bd2e5eb8d6a4c8e60391a4288a8c2e401683d0be"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"27b743659a56b83c8277b7445b8d7c290528e963","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4fb29e02_fc7190d2","updated":"2025-07-22 05:11:49.000000000","message":"one of the new tests is failing in https://zuul.opendev.org/t/zuul/build/ef12903647a24b45aed3afafa659cabb so it seems to be somewhat unstable, maybe a timing issue?","commit_id":"bd2e5eb8d6a4c8e60391a4288a8c2e401683d0be"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ff7ca027bdc11e824d6317dcffa3d80cb425eef6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"09a37b4b_fb0b0649","updated":"2025-07-22 05:14:36.000000000","message":"recheck can we get a check run now instead of gate?","commit_id":"bd2e5eb8d6a4c8e60391a4288a8c2e401683d0be"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"32c454918933de3bd11846f2d62aaf7be861b346","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f9ac7636_4534223b","updated":"2025-07-22 05:00:17.000000000","message":"recheck unrelated fail","commit_id":"bd2e5eb8d6a4c8e60391a4288a8c2e401683d0be"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"aeae321b45f6e488f35b0c185f415f0d0259e448","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6ab3e276_0f46f06b","in_reply_to":"4fb29e02_fc7190d2","updated":"2025-07-22 22:59:14.000000000","message":"Acknowledged","commit_id":"bd2e5eb8d6a4c8e60391a4288a8c2e401683d0be"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"aeae321b45f6e488f35b0c185f415f0d0259e448","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"289f3bdd_1edce6d1","in_reply_to":"70314290_c46b0ff2","updated":"2025-07-22 22:59:14.000000000","message":"Acknowledged","commit_id":"bd2e5eb8d6a4c8e60391a4288a8c2e401683d0be"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"7cefef5f08a85c8bf7536741519983ad5b5f0357","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"aba2a16e_8b2217db","in_reply_to":"f9ac7636_4534223b","updated":"2025-07-22 05:01:37.000000000","message":"ok new test test_provider_selection_locality_exhaustion_failure failed so could be related","commit_id":"bd2e5eb8d6a4c8e60391a4288a8c2e401683d0be"}],"tests/unit/test_launcher.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"5d72e1ff47d23340daad18a78fa36c75f3252a05","unresolved":true,"context_lines":[{"line_number":1708,"context_line":"                                         timeout\u003d30)"},{"line_number":1709,"context_line":"        nodes1 \u003d self.getNodes(request1)"},{"line_number":1710,"context_line":"        nodes1 \u003d [n for n in nodes1 if n.state \u003d\u003d n.State.READY]"},{"line_number":1711,"context_line":"        nodes1 \u003d [n for n in nodes1 if n.uuid in request1.nodes]"},{"line_number":1712,"context_line":"        self.assertEqual(2, len(nodes1))"},{"line_number":1713,"context_line":""},{"line_number":1714,"context_line":"        # These can be served from either provider; both should be"}],"source_content_type":"text/x-python","patch_set":1,"id":"5954f277_23df79a9","line":1711,"updated":"2025-07-21 21:41:18.000000000","message":"Do we need both list comprehensions here? Seems like we\u0027re interested in knowing that there are 2 ready nodes at the end and further filtering by uuid isn\u0027t necessary?","commit_id":"39bcc653ca7b747bbfb930a71be326f14bf31057"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"ce28c8bccb13d876edbde8a1b7c7f32b0cd68b2e","unresolved":false,"context_lines":[{"line_number":1708,"context_line":"                                         timeout\u003d30)"},{"line_number":1709,"context_line":"        nodes1 \u003d self.getNodes(request1)"},{"line_number":1710,"context_line":"        nodes1 \u003d [n for n in nodes1 if n.state \u003d\u003d n.State.READY]"},{"line_number":1711,"context_line":"        nodes1 \u003d [n for n in nodes1 if n.uuid in request1.nodes]"},{"line_number":1712,"context_line":"        self.assertEqual(2, len(nodes1))"},{"line_number":1713,"context_line":""},{"line_number":1714,"context_line":"        # These can be served from either provider; both should be"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa23870_8bb18697","line":1711,"in_reply_to":"48358498_421390f6","updated":"2025-07-21 21:59:16.000000000","message":"Acknowledged","commit_id":"39bcc653ca7b747bbfb930a71be326f14bf31057"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9b708bdf3fcf139afa62bea724638f32d441824d","unresolved":true,"context_lines":[{"line_number":1708,"context_line":"                                         timeout\u003d30)"},{"line_number":1709,"context_line":"        nodes1 \u003d self.getNodes(request1)"},{"line_number":1710,"context_line":"        nodes1 \u003d [n for n in nodes1 if n.state \u003d\u003d n.State.READY]"},{"line_number":1711,"context_line":"        nodes1 \u003d [n for n in nodes1 if n.uuid in request1.nodes]"},{"line_number":1712,"context_line":"        self.assertEqual(2, len(nodes1))"},{"line_number":1713,"context_line":""},{"line_number":1714,"context_line":"        # These can be served from either provider; both should be"}],"source_content_type":"text/x-python","patch_set":1,"id":"48358498_421390f6","line":1711,"in_reply_to":"5954f277_23df79a9","updated":"2025-07-21 21:52:03.000000000","message":"Yes, there are 3 ready nodes with the request1 uuid, but the request itself only knows or cares about 2 of them.  This test wants to ignore the third ready node that will get dropped because it\u0027s in the wrong provider.\n\n(But we don\u0027t have a lot of assertions for it because the cleanup for it would be racy without a bunch of other locking; so we assume that works as intended and is tested elsewhere.)","commit_id":"39bcc653ca7b747bbfb930a71be326f14bf31057"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"bbb549f1c1148081407027e4a8f9d154d9968113","unresolved":true,"context_lines":[{"line_number":1697,"context_line":"                return orig_advance(*args, **kw)"},{"line_number":1698,"context_line":"            failed_count \u003d failed_count_by_node.get("},{"line_number":1699,"context_line":"                ns_request.node.uuid, 0)"},{"line_number":1700,"context_line":"            failed_count_by_node[ns_request.node.uuid] \u003d failed_count + 1"},{"line_number":1701,"context_line":"            raise Exception(\"Test exception\")"},{"line_number":1702,"context_line":""},{"line_number":1703,"context_line":"        with mock.patch.object("}],"source_content_type":"text/x-python","patch_set":3,"id":"0878f7a0_91703591","line":1700,"range":{"start_line":1700,"start_character":49,"end_line":1700,"end_character":53},"updated":"2025-07-22 22:42:51.000000000","message":"Looking at the recent test failures I think this uuid attribute we\u0027re using to index means that we haev a separate counter for each node which resutls in more failuers than anticipated. Instead I think we want to index on the request_id so that we only have 3 failures (0,1,2) for the entire request.","commit_id":"9dc39fbb9ae1ad9e47725d88ab842955b241dddd"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"aeae321b45f6e488f35b0c185f415f0d0259e448","unresolved":false,"context_lines":[{"line_number":1697,"context_line":"                return orig_advance(*args, **kw)"},{"line_number":1698,"context_line":"            failed_count \u003d failed_count_by_node.get("},{"line_number":1699,"context_line":"                ns_request.node.uuid, 0)"},{"line_number":1700,"context_line":"            failed_count_by_node[ns_request.node.uuid] \u003d failed_count + 1"},{"line_number":1701,"context_line":"            raise Exception(\"Test exception\")"},{"line_number":1702,"context_line":""},{"line_number":1703,"context_line":"        with mock.patch.object("}],"source_content_type":"text/x-python","patch_set":3,"id":"925faf50_fe1a860b","line":1700,"range":{"start_line":1700,"start_character":49,"end_line":1700,"end_character":53},"in_reply_to":"0878f7a0_91703591","updated":"2025-07-22 22:59:14.000000000","message":"We only have one request.  The current code should cause exactly 3 failures, one for each of the first 3 nodes.","commit_id":"9dc39fbb9ae1ad9e47725d88ab842955b241dddd"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"bbb549f1c1148081407027e4a8f9d154d9968113","unresolved":true,"context_lines":[{"line_number":1740,"context_line":"        ):"},{"line_number":1741,"context_line":"            request1 \u003d self.requestNodes([\"debian-normal\", \"debian-normal\"],"},{"line_number":1742,"context_line":"                                         tenant\u003d\"tenant-two\","},{"line_number":1743,"context_line":"                                         timeout\u003d30)"},{"line_number":1744,"context_line":"        self.assertEqual(request1.state, model.NodesetRequest.State.FAILED)"},{"line_number":1745,"context_line":""},{"line_number":1746,"context_line":"        # The last two nodes will still be referenced by the request,"}],"source_content_type":"text/x-python","patch_set":3,"id":"b9685210_c785e582","line":1743,"updated":"2025-07-22 22:42:51.000000000","message":"It seems like this timeout may not be long enough to get through all of the retries across all providers. Maybe we should reduce the total number of retries rather than increasing the timeout?","commit_id":"9dc39fbb9ae1ad9e47725d88ab842955b241dddd"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"aeae321b45f6e488f35b0c185f415f0d0259e448","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"        ):"},{"line_number":1741,"context_line":"            request1 \u003d self.requestNodes([\"debian-normal\", \"debian-normal\"],"},{"line_number":1742,"context_line":"                                         tenant\u003d\"tenant-two\","},{"line_number":1743,"context_line":"                                         timeout\u003d30)"},{"line_number":1744,"context_line":"        self.assertEqual(request1.state, model.NodesetRequest.State.FAILED)"},{"line_number":1745,"context_line":""},{"line_number":1746,"context_line":"        # The last two nodes will still be referenced by the request,"}],"source_content_type":"text/x-python","patch_set":3,"id":"2a76fbcc_9c2361b7","line":1743,"in_reply_to":"b9685210_c785e582","updated":"2025-07-22 22:59:14.000000000","message":"Perhaps, but that\u0027s not what caused the timeout I saw, so let\u0027s wait before we change it.\n\nAlso, we already have the attempts lowered to 2.","commit_id":"9dc39fbb9ae1ad9e47725d88ab842955b241dddd"}],"zuul/launcher/server.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"5d72e1ff47d23340daad18a78fa36c75f3252a05","unresolved":true,"context_lines":[{"line_number":1416,"context_line":"        label_providers \u003d []"},{"line_number":1417,"context_line":"        for i, label_name in enumerate(request.labels):"},{"line_number":1418,"context_line":"            if require_same_provider:"},{"line_number":1419,"context_line":"                candidate_providers \u003d providers_for_all_labels"},{"line_number":1420,"context_line":"            else:"},{"line_number":1421,"context_line":"                candidate_providers \u003d providers_for_label[i]"},{"line_number":1422,"context_line":"            if not candidate_providers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"79bf79a2_db5e9327","line":1419,"updated":"2025-07-21 21:41:18.000000000","message":"I think it may be possible for `require_same_provider \u003d bool(ideal_providers_for_all_labels)` to evaluate to true but providers_for_all_labels may be an empty set due to errors with the ideal provider. We handle that case below on line 1422 but I wonder if we should log a specific error message for the case where limiting the providers due to the ideal is the source of the error?","commit_id":"39bcc653ca7b747bbfb930a71be326f14bf31057"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9b708bdf3fcf139afa62bea724638f32d441824d","unresolved":true,"context_lines":[{"line_number":1416,"context_line":"        label_providers \u003d []"},{"line_number":1417,"context_line":"        for i, label_name in enumerate(request.labels):"},{"line_number":1418,"context_line":"            if require_same_provider:"},{"line_number":1419,"context_line":"                candidate_providers \u003d providers_for_all_labels"},{"line_number":1420,"context_line":"            else:"},{"line_number":1421,"context_line":"                candidate_providers \u003d providers_for_label[i]"},{"line_number":1422,"context_line":"            if not candidate_providers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"a40becf8_3a4aca9c","line":1419,"in_reply_to":"79bf79a2_db5e9327","updated":"2025-07-21 21:52:03.000000000","message":"I think it will be obvious: \"Requiring same provider for all labels\" followed by \"No provider found for label\".\n\nAlso, there will be further context based on what messages have been logged previously by the request.","commit_id":"39bcc653ca7b747bbfb930a71be326f14bf31057"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"ce28c8bccb13d876edbde8a1b7c7f32b0cd68b2e","unresolved":false,"context_lines":[{"line_number":1416,"context_line":"        label_providers \u003d []"},{"line_number":1417,"context_line":"        for i, label_name in enumerate(request.labels):"},{"line_number":1418,"context_line":"            if require_same_provider:"},{"line_number":1419,"context_line":"                candidate_providers \u003d providers_for_all_labels"},{"line_number":1420,"context_line":"            else:"},{"line_number":1421,"context_line":"                candidate_providers \u003d providers_for_label[i]"},{"line_number":1422,"context_line":"            if not candidate_providers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ef9a8f15_579aad3e","line":1419,"in_reply_to":"a40becf8_3a4aca9c","updated":"2025-07-21 21:59:16.000000000","message":"Acknowledged","commit_id":"39bcc653ca7b747bbfb930a71be326f14bf31057"}]}
