)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"e645eea4a51cde780bc4a6d0d402b7418a61f18c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fb71ce47_54460e36","updated":"2026-02-02 15:09:17.000000000","message":"Everything should stop using eventlet as soon as possible, and this solution looks good to me","commit_id":"e55207471aba0be3852c90401a3e88d98ae77f33"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"386a49916556975011125950e372f025024ed782","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2c9a4e3f_d008cdab","updated":"2026-02-03 15:00:33.000000000","message":"Reading the code and the concurrent.futures documentation, this makes sense to me. I have small suggestion regarding the import (see comment inline). Also doing a search across the cloudkitty repo, I think you can now remove futurist from the requirements https://github.com/search?q\u003drepo%3Aopenstack%2Fcloudkitty%20futurist\u0026type\u003dcode","commit_id":"e55207471aba0be3852c90401a3e88d98ae77f33"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"5131ae5e51699102a010d8fa4bd1c689f869eea1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"70f52bd1_52824db4","updated":"2026-01-30 08:04:03.000000000","message":"eventlet is dead and has limitations with modern versions of python 3.12+. \n\nhttps://eventlet.readthedocs.io/en/latest/asyncio/migration.html#migrating-off-of-eventlet","commit_id":"e55207471aba0be3852c90401a3e88d98ae77f33"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"504bca8743b1bf398a8d8fdd2518c1a988ad3e6e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0d9a822b_9b7f016e","in_reply_to":"2c9a4e3f_d008cdab","updated":"2026-02-03 16:34:37.000000000","message":"done","commit_id":"e55207471aba0be3852c90401a3e88d98ae77f33"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"ede3d1b8850c1efb4f29632f374d468a5bd3ada9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0fbb1c0f_ba3bc05d","updated":"2026-02-04 09:42:04.000000000","message":"I am so happy to see futurist gone.","commit_id":"87d5fc0bbb006b97d2a934ba3143c9997431c760"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"5760bf712c3d3966bac33bb9c1db7f5c0e84fd5d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"94f3544a_6f061f80","updated":"2026-02-04 09:42:18.000000000","message":"its nice to see eventlet going away everywehere","commit_id":"87d5fc0bbb006b97d2a934ba3143c9997431c760"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"4cccd3da372506c0efd5b203621a1c7ae31ee3eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8f6169d4_1704854c","updated":"2026-02-27 07:20:30.000000000","message":"Jaromir has a patch to fix the gabbi test issues, https://review.opendev.org/c/openstack/cloudkitty/+/978156","commit_id":"57ac914ae786c944ac20d93294c5197c0581887b"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"a2eba8d360e4259da3c9dd14a4901a463efe2fe7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a07a9d5d_7a389e3e","updated":"2026-03-02 09:42:22.000000000","message":"recheck -- gabbi issues have been resolved","commit_id":"57ac914ae786c944ac20d93294c5197c0581887b"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"dfaf265bc785f0d27c5191d0cc461b5a0426a3c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"88d885aa_fb7444ff","updated":"2026-03-02 13:28:46.000000000","message":"Still looks good to me; CI failures don\u0027t seem to be related to this patch.","commit_id":"3fecc05d6ea62325dc0b78b08a3cf593f3929b57"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"61622f3f7f9563a6a03d468646cc2ae08e2ab425","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"72a7869b_895073ac","updated":"2026-03-04 12:50:53.000000000","message":"Thanks!\nSingle merging as agreed in Monday\u0027s meeting.","commit_id":"f3259f372cbae1896aeb6803894e502886143d49"}],"cloudkitty/orchestrator.py":[{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"386a49916556975011125950e372f025024ed782","unresolved":true,"context_lines":[{"line_number":41,"context_line":"from cloudkitty import utils as ck_utils"},{"line_number":42,"context_line":"from cloudkitty.utils import tz as tzutils"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"from concurrent import futures"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b9657e0c_4dcb2383","line":44,"updated":"2026-02-03 15:00:33.000000000","message":"according to the hacking import order. This should be in the first import block along with other stdlib modules (L17).","commit_id":"e55207471aba0be3852c90401a3e88d98ae77f33"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"504bca8743b1bf398a8d8fdd2518c1a988ad3e6e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"from cloudkitty import utils as ck_utils"},{"line_number":42,"context_line":"from cloudkitty.utils import tz as tzutils"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"from concurrent import futures"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"45cb77a3_3a586dcb","line":44,"in_reply_to":"b9657e0c_4dcb2383","updated":"2026-02-03 16:34:37.000000000","message":"Done","commit_id":"e55207471aba0be3852c90401a3e88d98ae77f33"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"fd6463612f1416ec197ce9d19da4e0a0fecc07b3","unresolved":true,"context_lines":[{"line_number":376,"context_line":"        \"\"\""},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        execution_outputs \u003d self.thread_executor.map("},{"line_number":379,"context_line":"            _get_result, metrics, timeout\u003d300)"},{"line_number":380,"context_line":"        results \u003d list(execution_outputs)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        return dict(filter(lambda x: x[1] is not None, results))"}],"source_content_type":"text/x-python","patch_set":4,"id":"b82bdd94_ce769597","line":379,"updated":"2026-03-02 14:20:05.000000000","message":"Looks like we\u0027ll now have a timeout here, where previously it would wait forever.\nIMO this is fine, but should we make it configurable?","commit_id":"3fecc05d6ea62325dc0b78b08a3cf593f3929b57"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"60ae872c7e0e48f9b64fe95a56d755dbadfbef49","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        \"\"\""},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        execution_outputs \u003d self.thread_executor.map("},{"line_number":379,"context_line":"            _get_result, metrics, timeout\u003d300)"},{"line_number":380,"context_line":"        results \u003d list(execution_outputs)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        return dict(filter(lambda x: x[1] is not None, results))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7cc9a7a8_7da5dbff","line":379,"in_reply_to":"b82bdd94_ce769597","updated":"2026-03-03 16:13:59.000000000","message":"Done","commit_id":"3fecc05d6ea62325dc0b78b08a3cf593f3929b57"}]}
