)]}'
{"id":"openstack%2Fcloudkitty~975224","triplet_id":"openstack%2Fcloudkitty~master~Idd0bca36f7f78e0f824013b0a0f844e878e83de3","project":"openstack/cloudkitty","branch":"master","attention_set":{},"removed_from_attention_set":{"34975":{"account":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"last_update":"2026-03-04 13:31:33.000000000","reason":"Change was submitted"},"35263":{"account":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"last_update":"2026-03-04 12:50:53.000000000","reason":"\u003cGERRIT_ACCOUNT_35263\u003e replied on the change","reason_account":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"}},"4264":{"account":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"last_update":"2026-03-04 13:31:33.000000000","reason":"Change was submitted"},"32968":{"account":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"last_update":"2026-03-04 13:31:33.000000000","reason":"Change was submitted"},"28356":{"account":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"last_update":"2026-03-04 13:31:33.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"Idd0bca36f7f78e0f824013b0a0f844e878e83de3","subject":"Address CloudKitty memory leak during collection processing.","status":"MERGED","created":"2026-01-29 20:52:52.000000000","updated":"2026-03-04 13:32:22.000000000","submitted":"2026-03-04 13:31:33.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":14,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"975224","meta_rev_id":"5fb2619381aa984b258a7adef08d191fc1487b18","_number":975224,"virtual_id_number":975224,"owner":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-03-04 13:31:33.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},{"value":0,"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},{"value":0,"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},{"value":0,"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2026-03-04 12:50:53.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},{"value":0,"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},{"value":0,"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},{"value":0,"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-03-04 12:50:53.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},{"value":0,"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},{"value":0,"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},{"value":0,"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},{"value":0,"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},{"value":0,"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},{"value":0,"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}],"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-01-29 21:33:18.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-01-30 08:04:03.000000000","updated_by":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"reviewer":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"state":"REVIEWER"},{"updated":"2026-02-02 15:09:17.000000000","updated_by":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"reviewer":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"state":"REVIEWER"},{"updated":"2026-02-03 15:00:33.000000000","updated_by":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"reviewer":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"state":"CC"},{"updated":"2026-02-04 07:46:31.000000000","updated_by":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"reviewer":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"state":"REVIEWER"},{"updated":"2026-03-02 14:20:05.000000000","updated_by":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"reviewer":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"state":"CC"},{"updated":"2026-03-04 12:50:53.000000000","updated_by":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"reviewer":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"state":"REVIEWER"}],"messages":[{"id":"b242483a184d0010117c804162b1bfb6628ea315","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2026-01-29 20:52:52.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"2573a8dc0081dbe9e0b05c15cc42236475248416","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2026-01-29 20:53:26.000000000","message":"Patch Set 1:\n\nThis change is ready for review.","accounts_in_message":[],"_revision_number":1},{"id":"cae83f7909394a5c9b2d117eafddfc37df5f27d0","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-29 21:33:18.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/1abfb27a73d74c1892a63a213a348090\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/c7f8b19caf3b493fa36602dbf7df1722 : SUCCESS in 3m 05s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/cfe05549edad495ca009b5c1e1eb05e2 : SUCCESS in 1m 54s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/6d28724df7a74404a97443ff1ddda964 : SUCCESS in 2m 21s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/d13d8abd2d664349905a51d19963c506 : SUCCESS in 4m 13s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5a3d31a98a494c85b428034967a298dc : SUCCESS in 2m 08s\n- cloudkitty-tempest-full-v2-storage-influxdb https://zuul.opendev.org/t/openstack/build/bebc30fa83c64f578cf5629eedbf0362 : SUCCESS in 33m 03s\n- cloudkitty-tempest-full-v2-storage-influxdb-v2 https://zuul.opendev.org/t/openstack/build/c9d0fac442954997ae925fa78995e474 : SUCCESS in 31m 51s\n- cloudkitty-tempest-full-v2-storage-elasticsearch https://zuul.opendev.org/t/openstack/build/e3ab4009ed9e44d6845355876960f140 : SUCCESS in 17m 34s\n- cloudkitty-tempest-full-v2-storage-opensearch https://zuul.opendev.org/t/openstack/build/4e243eb44b1b4aa59b237314ffe0fdfe : SUCCESS in 22m 20s\n- cloudkitty-tempest-full-v1-storage-sqlalchemy https://zuul.opendev.org/t/openstack/build/193b35436e4546d188586d3b482d1a69 : SUCCESS in 34m 42s\n- cloudkitty-tempest-full-v2-storage-loki https://zuul.opendev.org/t/openstack/build/6d116fb8e948410d94f7d6ffa9c70a97 : SUCCESS in 34m 54s\n- cloudkitty-tempest-full-ipv6-only https://zuul.opendev.org/t/openstack/build/4a01e20e72fc48019b8c04a7f2a72c28 : SUCCESS in 17m 04s\n- cloudkitty-tempest-full-v2-fetcher-collector-prometheus https://zuul.opendev.org/t/openstack/build/663ae917591b4f37a4aa507c46ceb15f : SUCCESS in 16m 22s\n- cloudkitty-tox-bandit https://zuul.opendev.org/t/openstack/build/26c5045500bf4910ad9483c1ae8a142a : FAILURE in 2m 55s (non-voting)\n- cloudkitty-grenade-job https://zuul.opendev.org/t/openstack/build/afe9e39e3f86407ebdb4307f313369f6 : SUCCESS in 26m 19s","accounts_in_message":[],"_revision_number":1},{"id":"5131ae5e51699102a010d8fa4bd1c689f869eea1","author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"date":"2026-01-30 08:04:03.000000000","message":"Patch Set 1: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"e645eea4a51cde780bc4a6d0d402b7418a61f18c","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-02-02 15:09:17.000000000","message":"Patch Set 1: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"386a49916556975011125950e372f025024ed782","author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"date":"2026-02-03 15:00:33.000000000","message":"Patch Set 1:\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"5febe792839c835364ca78ac3f5697d38829e7e0","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2026-02-03 16:34:37.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":2},{"id":"504bca8743b1bf398a8d8fdd2518c1a988ad3e6e","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2026-02-03 16:34:37.000000000","message":"Patch Set 2:\n\n(2 comments)","accounts_in_message":[],"_revision_number":2},{"id":"f34e8affdc6b6ad6703f7811166c4fa98018f177","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-03 17:27:16.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/9c176d5efdec4d9da71fa7ef3131b07e\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/62eb0c0404ce404c9817efa0aba3cfe0 : SUCCESS in 2m 43s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/523e96cd07cd488092880a51aff0ed7a : SUCCESS in 4m 59s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/169e6c17af2e4fe0a85b654dd4bd60eb : SUCCESS in 3m 02s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/c5113c633868477abfb5c8f4cf42e9e8 : SUCCESS in 4m 06s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/717549ee875946449909dde35d9c2ea4 : SUCCESS in 4m 03s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1e0213471f9b4532866e5826be2a98e8 : SUCCESS in 3m 17s\n- cloudkitty-tempest-full-v2-storage-influxdb https://zuul.opendev.org/t/openstack/build/880842a8b1e746269fb9998fa2b31128 : SUCCESS in 25m 04s\n- cloudkitty-tempest-full-v2-storage-influxdb-v2 https://zuul.opendev.org/t/openstack/build/d4d72d29a38d4286a9bb46668a3de791 : SUCCESS in 31m 41s\n- cloudkitty-tempest-full-v2-storage-elasticsearch https://zuul.opendev.org/t/openstack/build/68e1beaa6b674d2086c561116c2a4b29 : SUCCESS in 18m 17s\n- cloudkitty-tempest-full-v2-storage-opensearch https://zuul.opendev.org/t/openstack/build/95fffe506d8647878c00265a6304cd6d : SUCCESS in 30m 20s\n- cloudkitty-tempest-full-v1-storage-sqlalchemy https://zuul.opendev.org/t/openstack/build/13fed79f2edf43a0a807cc443f7a9c26 : SUCCESS in 34m 58s\n- cloudkitty-tempest-full-v2-storage-loki https://zuul.opendev.org/t/openstack/build/d2a3cb82c77946fbab76b8fe476c4988 : SUCCESS in 15m 59s\n- cloudkitty-tempest-full-ipv6-only https://zuul.opendev.org/t/openstack/build/27fa453da1c6442eb61f414b2861ec95 : SUCCESS in 27m 01s\n- cloudkitty-tempest-full-v2-fetcher-collector-prometheus https://zuul.opendev.org/t/openstack/build/8b2e4adcd8b54281ba214ae21f5e6fda : SUCCESS in 36m 25s\n- cloudkitty-tox-bandit https://zuul.opendev.org/t/openstack/build/af0cb0d16bd04e5b9d6d6ed50171881a : FAILURE in 2m 30s (non-voting)\n- cloudkitty-grenade-job https://zuul.opendev.org/t/openstack/build/949514648bcd46fc954743bd049cca75 : SUCCESS in 51m 06s","accounts_in_message":[],"_revision_number":2},{"id":"e5753e122aad35d550a9196eb1ad2c8472f77e0c","author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"date":"2026-02-04 07:46:31.000000000","message":"Patch Set 2: Code-Review+1","accounts_in_message":[],"_revision_number":2},{"id":"ede3d1b8850c1efb4f29632f374d468a5bd3ada9","author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"date":"2026-02-04 09:42:04.000000000","message":"Patch Set 2: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"5760bf712c3d3966bac33bb9c1db7f5c0e84fd5d","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-02-04 09:42:18.000000000","message":"Patch Set 2: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"0b850a3038bcf0490180b75db410c480639f12b9","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2026-02-26 23:50:41.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":3},{"id":"231e7a4d63b4a74bc3f06dd8ac7f6f1202ade993","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-27 00:52:40.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/551217593d324588845ceafb8d549b88\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/97d174c8e84d42a1b02bbf60d01ab562 : SUCCESS in 1m 41s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/16a3ab758a3f4f3ebd45e3828ef77ae0 : FAILURE in 2m 37s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/eda621157bcf49949dd7ef0290d1954e : SUCCESS in 3m 15s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/6c18af888ebf420c920afd5d0a1d3aeb : FAILURE in 1m 51s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/12ea02115050483cb28438d5063f6477 : FAILURE in 2m 57s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f077d017ef6748a5944d27a22bcda28a : FAILURE in 5m 57s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/84cc06804bb44c40a25493f13532884e : SUCCESS in 3m 25s\n- cloudkitty-tempest-full-v2-storage-influxdb https://zuul.opendev.org/t/openstack/build/aef685386ace4e4ca2274849bd8773b6 : SUCCESS in 28m 03s\n- cloudkitty-tempest-full-v2-storage-influxdb-v2 https://zuul.opendev.org/t/openstack/build/2c31db6a8f16433b9d36a13bed0ffc96 : SUCCESS in 31m 00s\n- cloudkitty-tempest-full-v2-storage-elasticsearch https://zuul.opendev.org/t/openstack/build/de68ba09ae804d958c90346b6ac13b1d : SUCCESS in 31m 41s\n- cloudkitty-tempest-full-v2-storage-opensearch https://zuul.opendev.org/t/openstack/build/e4610cd1725f457d80993623c1f00acd : SUCCESS in 38m 19s\n- cloudkitty-tempest-full-v1-storage-sqlalchemy https://zuul.opendev.org/t/openstack/build/2215d5f31a174eb193b8d3ff79a73d5b : SUCCESS in 30m 30s\n- cloudkitty-tempest-full-v2-storage-loki https://zuul.opendev.org/t/openstack/build/851744c11a90442ca6cde44d8e2ae636 : SUCCESS in 37m 24s\n- cloudkitty-tempest-full-ipv6-only https://zuul.opendev.org/t/openstack/build/343e3461ff7f4070955df5fa109eb04e : SUCCESS in 32m 02s\n- cloudkitty-tempest-full-v2-fetcher-collector-prometheus https://zuul.opendev.org/t/openstack/build/eba5e9c9098242b68ed804dbc1b4e8a3 : SUCCESS in 16m 33s\n- cloudkitty-tox-bandit https://zuul.opendev.org/t/openstack/build/63d3fdac1c2344429b3c80e8f1563f69 : FAILURE in 2m 01s (non-voting)\n- cloudkitty-grenade-job https://zuul.opendev.org/t/openstack/build/d4e3206e0d2a4647a9e3b1f74b7f0a0e : SUCCESS in 56m 54s","accounts_in_message":[],"_revision_number":3},{"id":"4cccd3da372506c0efd5b203621a1c7ae31ee3eb","author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"date":"2026-02-27 07:20:30.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"a2eba8d360e4259da3c9dd14a4901a463efe2fe7","author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"date":"2026-03-02 09:42:22.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"4f623c0fa64e99b49dda9627cbd9d68661a8f90e","author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"date":"2026-03-02 09:42:50.000000000","message":"Patch Set 3: Code-Review+1","accounts_in_message":[],"_revision_number":3},{"id":"a04dc1d96311e1fd6e062ce568c0b45d6c4e7306","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-02 10:29:14.000000000","message":"Patch Set 3:\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/9a950aebd8544fee8161107965229000\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/a7fc2cb5dc48458f991442d71459e07a : SUCCESS in 1m 35s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/abfbbc8127b64817b2fbd81f7cb809ec : FAILURE in 4m 44s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1b58cbf1dede48f2bd507ef5b8d4c66e : SUCCESS in 4m 12s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/e1821e048279402a82599d3d8d54d522 : SUCCESS in 2m 43s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/688044ab414e45d9bb87615f8c8da1cb : SUCCESS in 2m 50s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b0e00f9b74544904b0c84db636cce05c : SUCCESS in 3m 46s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1341ef5f70ca4fada719287566cf5e0c : SUCCESS in 4m 00s\n- cloudkitty-tempest-full-v2-storage-influxdb https://zuul.opendev.org/t/openstack/build/d4cd89cd929b4ca7950ecc8c2c41a924 : SUCCESS in 36m 10s\n- cloudkitty-tempest-full-v2-storage-influxdb-v2 https://zuul.opendev.org/t/openstack/build/9ea08cec6592450f817bffa771072bab : SUCCESS in 16m 41s\n- cloudkitty-tempest-full-v2-storage-elasticsearch https://zuul.opendev.org/t/openstack/build/c356e5aaf07f46e98e496413c4613d92 : SUCCESS in 34m 20s\n- cloudkitty-tempest-full-v2-storage-opensearch https://zuul.opendev.org/t/openstack/build/4de37c8491734cb0858b91b38dedbe8a : SUCCESS in 16m 44s\n- cloudkitty-tempest-full-v1-storage-sqlalchemy https://zuul.opendev.org/t/openstack/build/620aaa7548f246a49280f08ebc25ccc1 : SUCCESS in 17m 03s\n- cloudkitty-tempest-full-v2-storage-loki https://zuul.opendev.org/t/openstack/build/41d71f2d54ab44b89f0ff27b91b94306 : SUCCESS in 13m 41s\n- cloudkitty-tempest-full-ipv6-only https://zuul.opendev.org/t/openstack/build/994364b56383447c990500bd7f3456e5 : SUCCESS in 33m 50s\n- cloudkitty-tempest-full-v2-fetcher-collector-prometheus https://zuul.opendev.org/t/openstack/build/6b882273c7b74fcf89161fc3b26aae1c : SUCCESS in 36m 10s\n- cloudkitty-tox-bandit https://zuul.opendev.org/t/openstack/build/08484cdb73474f1092d5aa283be9feab : FAILURE in 3m 08s (non-voting)\n- cloudkitty-grenade-job https://zuul.opendev.org/t/openstack/build/4ef1fe859ee84c16ae2e7cbf29b35ed2 : SUCCESS in 45m 55s","accounts_in_message":[],"_revision_number":3},{"id":"a25d147e7a028e1947c7a25f8df65b9992abe8c0","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-03-02 11:17:14.000000000","message":"Patch Set 3: Code-Review+1","accounts_in_message":[],"_revision_number":3},{"id":"ee6c77ea6e1807d49be0840781bc12a6cc2f92a2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2026-03-02 12:48:38.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1\n","accounts_in_message":[],"_revision_number":4},{"id":"dfaf265bc785f0d27c5191d0cc461b5a0426a3c3","author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"date":"2026-03-02 13:28:46.000000000","message":"Patch Set 4: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"b279c04a3856037cbf66a5db4da542ab6fd7225d","author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"date":"2026-03-02 14:08:23.000000000","message":"Patch Set 4: Code-Review+1","accounts_in_message":[],"_revision_number":4},{"id":"497db7aa9cb0a6488ddf1c71571eb726b35e4822","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-03-02 14:08:56.000000000","message":"Patch Set 4: Code-Review+1","accounts_in_message":[],"_revision_number":4},{"id":"fd6463612f1416ec197ce9d19da4e0a0fecc07b3","author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"date":"2026-03-02 14:20:05.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"dd914cf57986fee67ebd1d1b0b2b10469d6d7225","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-02 14:57:00.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/08db1cbab0204b29bfc47cabc9e3d384\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/c9ba08b6c32b4244af87e69f7fb7d0ca : SUCCESS in 2m 05s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/6f1730777a744a899de8935f2d99242c : SUCCESS in 6m 49s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7c0434270b4547c5a54372cd31ca7075 : SUCCESS in 5m 10s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/3495ef1aafbb4240b2757e711de35148 : SUCCESS in 4m 22s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/bd279e8d415344fc8d7faff2a6206dc0 : SUCCESS in 4m 49s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/6d96bbf283f44e93bbe078dea6d3c279 : FAILURE in 7m 09s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/024d74d8952241f4b71840cf838c782a : SUCCESS in 5m 13s\n- cloudkitty-tempest-full-v2-storage-influxdb https://zuul.opendev.org/t/openstack/build/0ff4741dda4046fc8e686fae3cf0158f : SUCCESS in 44m 55s\n- cloudkitty-tempest-full-v2-storage-influxdb-v2 https://zuul.opendev.org/t/openstack/build/dc296a58febd40c88c2ff7c4a0746dac : SUCCESS in 37m 02s\n- cloudkitty-tempest-full-v2-storage-elasticsearch https://zuul.opendev.org/t/openstack/build/7c14b8298f1144c39b0f10811d5be4d7 : SUCCESS in 33m 27s\n- cloudkitty-tempest-full-v2-storage-opensearch https://zuul.opendev.org/t/openstack/build/4d29f8ce4ecb4d8a80f17f43ee97b8d8 : SUCCESS in 33m 50s\n- cloudkitty-tempest-full-v1-storage-sqlalchemy https://zuul.opendev.org/t/openstack/build/770688893ffd4b1fa3f135838fba2ab7 : SUCCESS in 36m 31s\n- cloudkitty-tempest-full-v2-storage-loki https://zuul.opendev.org/t/openstack/build/f6a89f3900644f6ba25c5fa45a0f7461 : SUCCESS in 18m 32s\n- cloudkitty-tempest-full-ipv6-only https://zuul.opendev.org/t/openstack/build/8251df9fa23c498e99227ebb9f797ecc : SUCCESS in 37m 55s\n- cloudkitty-tempest-full-v2-fetcher-collector-prometheus https://zuul.opendev.org/t/openstack/build/ce87dbeac3534cfd90fc76855f8ce6cf : SUCCESS in 51m 46s\n- cloudkitty-tox-bandit https://zuul.opendev.org/t/openstack/build/40d6e53c32f44c0c91d975493d3a57c7 : FAILURE in 5m 06s (non-voting)\n- cloudkitty-grenade-job https://zuul.opendev.org/t/openstack/build/0e864c7d5c8a4785aa80f031e6fecf5e : SUCCESS in 1h 03m 01s","accounts_in_message":[],"_revision_number":4},{"id":"c0164bcfdbfbed37fc59065b1f094248b98610da","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2026-03-03 16:13:59.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":5},{"id":"60ae872c7e0e48f9b64fe95a56d755dbadfbef49","author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"date":"2026-03-03 16:13:59.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"0426b0345d6acea28d7ff93c73c502e06d620589","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-03 17:14:34.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ef99a63b05334fbaba9a2d8699ae3400\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/394b21c0cc1c412997fecce7e8e8c81f : SUCCESS in 1m 55s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/d70c1ffc168f498bb71087f76ab3539d : SUCCESS in 5m 53s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/da642000fff3496b85d2a3f70e0e45bc : SUCCESS in 3m 27s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/58874350e04345ce966c062f3611c61a : SUCCESS in 2m 43s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/d4a012ce21d54030b84cbf6d52f24d00 : SUCCESS in 3m 21s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b05ce608569243e6b78c283956227347 : SUCCESS in 8m 11s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a0a0e63e5f0e4ab4b9525bb51e08fac8 : SUCCESS in 2m 21s\n- cloudkitty-tempest-full-v2-storage-influxdb https://zuul.opendev.org/t/openstack/build/0344c9ad5d634682b8ae9edcc65efd3e : SUCCESS in 34m 57s\n- cloudkitty-tempest-full-v2-storage-influxdb-v2 https://zuul.opendev.org/t/openstack/build/829317b461ca4af6be50b8456f9600c1 : SUCCESS in 33m 15s\n- cloudkitty-tempest-full-v2-storage-elasticsearch https://zuul.opendev.org/t/openstack/build/fb3df7631b874bdfa9f939aa0f98c3d0 : SUCCESS in 33m 45s\n- cloudkitty-tempest-full-v2-storage-opensearch https://zuul.opendev.org/t/openstack/build/902c65fd06ba4be1b8e812a258c4fa3e : SUCCESS in 35m 51s\n- cloudkitty-tempest-full-v1-storage-sqlalchemy https://zuul.opendev.org/t/openstack/build/93c357774f734784b0fd567e82119fdc : SUCCESS in 15m 06s\n- cloudkitty-tempest-full-v2-storage-loki https://zuul.opendev.org/t/openstack/build/4924e9ffcb02448a83465734c1485d00 : SUCCESS in 31m 31s\n- cloudkitty-tempest-full-ipv6-only https://zuul.opendev.org/t/openstack/build/7454f957f5c74479bd9b3c5f0d81edbe : SUCCESS in 32m 45s\n- cloudkitty-tempest-full-v2-fetcher-collector-prometheus https://zuul.opendev.org/t/openstack/build/dbafe94f2dd94c9abc11df8280037a5c : SUCCESS in 19m 48s\n- cloudkitty-tox-bandit https://zuul.opendev.org/t/openstack/build/bb5c6975790948af976e42b8c7d25b22 : FAILURE in 4m 43s (non-voting)\n- cloudkitty-grenade-job https://zuul.opendev.org/t/openstack/build/f479d987c0404e87bf998039f9a38611 : SUCCESS in 58m 41s","accounts_in_message":[],"_revision_number":5},{"id":"61622f3f7f9563a6a03d468646cc2ae08e2ab425","author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"date":"2026-03-04 12:50:53.000000000","message":"Patch Set 5: Code-Review+2 Workflow+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"2586612169b89d0b2ec1ea850502028575a40442","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-04 12:51:16.000000000","message":"Patch Set 5: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":5},{"id":"516b530f34d2ddf368eda15fee5a94b7d13003d6","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-04 13:31:33.000000000","message":"Patch Set 5: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d1c2ec44a9d94bd3b658d3d34fefd27b\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/2038a2faea4d4772af850a36dfa0a39e : SUCCESS in 3m 04s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7862509f5b2e49b990a43d60674b3e0f : SUCCESS in 1m 51s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/c95d831e7372481691a47c48f2033598 : SUCCESS in 3m 56s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/56712072d4074a91a6705e2ab2d8320a : SUCCESS in 3m 30s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0deb0823219845df9f5c28f3e39e992c : SUCCESS in 2m 13s\n- cloudkitty-tempest-full-v2-storage-influxdb https://zuul.opendev.org/t/openstack/build/bb51ec1b2f074e419e00779504508518 : SUCCESS in 14m 14s\n- cloudkitty-tempest-full-v2-storage-influxdb-v2 https://zuul.opendev.org/t/openstack/build/7040867996584af497ff023bad5d23ef : SUCCESS in 30m 59s\n- cloudkitty-tempest-full-v2-storage-elasticsearch https://zuul.opendev.org/t/openstack/build/c4d108cc63704925a967de7aa1cb0ca9 : SUCCESS in 32m 43s\n- cloudkitty-tempest-full-v2-storage-opensearch https://zuul.opendev.org/t/openstack/build/0ff6203839a8407491ea1052eea6651b : SUCCESS in 31m 41s\n- cloudkitty-tempest-full-v1-storage-sqlalchemy https://zuul.opendev.org/t/openstack/build/d07ca1702fc64780ac9dcbe27a845df1 : SUCCESS in 17m 24s\n- cloudkitty-tempest-full-v2-storage-loki https://zuul.opendev.org/t/openstack/build/65f15fd1e9d4435f9aa60107792399c5 : SUCCESS in 33m 33s\n- cloudkitty-tempest-full-ipv6-only https://zuul.opendev.org/t/openstack/build/3523ad7986a1483681774040fd3a35ca : SUCCESS in 32m 34s\n- cloudkitty-grenade-job https://zuul.opendev.org/t/openstack/build/7fc3f27dd9334559b2bd005d8db3ec76 : SUCCESS in 32m 13s\n- cloudkitty-tempest-full-v2-fetcher-collector-prometheus https://zuul.opendev.org/t/openstack/build/3d94c17ab3094242b78a8a8cd2a3d87e : SUCCESS in 35m 10s","accounts_in_message":[],"_revision_number":5},{"id":"9afd1c5596bbaeb8b8f06a4e30fb7cb4fa0996ac","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-04 13:31:33.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":5},{"id":"5fb2619381aa984b258a7adef08d191fc1487b18","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-04 13:32:22.000000000","message":"Patch Set 5:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/014c7eaacd3848d18b1e2e4efe35eefb\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/633b936624b54346b055b1bbf7d7c48c : SUCCESS in 37s","accounts_in_message":[],"_revision_number":5}],"current_revision_number":5,"current_revision":"f3259f372cbae1896aeb6803894e502886143d49","revisions":{"e55207471aba0be3852c90401a3e88d98ae77f33":{"kind":"REWORK","_number":1,"created":"2026-01-29 20:52:52.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/24/975224/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cloudkitty","ref":"refs/changes/24/975224/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/1"}}},"commit":{"parents":[{"commit":"013cc39ee1dcb7324a70139ea25481e9eecb3606","subject":"Merge \"Remove outdated comment in setup.py\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/013cc39ee1dcb7324a70139ea25481e9eecb3606"}]}],"author":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2026-01-29 20:52:04.000000000","tz":-180},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2026-01-29 20:52:40.000000000","tz":-180},"subject":"Address CloudKitty memory leak during collection processing.","message":"Address CloudKitty memory leak during collection processing.\n\nDuring an upgrade/rollout of CloudKitty with a new Gnocchi backend\ndriver as a storage backend, we noticed a memory leak while processing\nthe full month of January/2026.\n\nDuring the investigation, we tracked the leak to the \"eventlet\" module.\nThe \"eventlet\" module is used by the \"futurist\" module, which provides\nthread pool management. The part of the code that uses a \"leaking\"\nmodule is \"ThreadPoolExecutor\", in the \"_do_execute_collection\" method\nin the \"orchestrator\" module of CloudKitty.\n\nThe leak has been reported at [1], and there is still no solution. It is\na core library. We cannot remove the \"ThreadPoolExecutor\", as we need to\nexecute a parallel collection of metrics; otherwise, the process would\nbecome even slower.\n\nHowever, looking from a different perspective, we can use a native\nThreadPoolExecutor, and use it in a more correct approach. Instead of\ncreating a new ThreadPoolExecutor for every collection of every\ntimestamp of a scope, we are creating a single thread pool, and then\nusing this same instance across all timestamps and being processed for a\nscope. The timestamps are already processed in a serial fashion.\nTherefore, we do not create a bottleneck by adopting this approach.\n\nBy adopting a new approach to manage threads for data collection, we\nmanaged to improve CloudKitty code, remove the memory leak, and reduce\nthe CPU consumption (the futurist facade was presenting increases in CPU\nloads), as the creation of the thread pool can be costly.\n\nhttps://github.com/eventlet/eventlet/issues/741\n\nChange-Id: Idd0bca36f7f78e0f824013b0a0f844e878e83de3\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/e55207471aba0be3852c90401a3e88d98ae77f33"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/e55207471aba0be3852c90401a3e88d98ae77f33"}]},"branch":"refs/heads/master"},"87d5fc0bbb006b97d2a934ba3143c9997431c760":{"kind":"REWORK","_number":2,"created":"2026-02-03 16:34:37.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/24/975224/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cloudkitty","ref":"refs/changes/24/975224/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/2"}}},"commit":{"parents":[{"commit":"013cc39ee1dcb7324a70139ea25481e9eecb3606","subject":"Merge \"Remove outdated comment in setup.py\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/013cc39ee1dcb7324a70139ea25481e9eecb3606"}]}],"author":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2026-01-29 20:52:04.000000000","tz":-180},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2026-02-03 16:34:24.000000000","tz":-180},"subject":"Address CloudKitty memory leak during collection processing.","message":"Address CloudKitty memory leak during collection processing.\n\nDuring an upgrade/rollout of CloudKitty with a new Gnocchi backend\ndriver as a storage backend, we noticed a memory leak while processing\nthe full month of January/2026.\n\nDuring the investigation, we tracked the leak to the \"eventlet\" module.\nThe \"eventlet\" module is used by the \"futurist\" module, which provides\nthread pool management. The part of the code that uses a \"leaking\"\nmodule is \"ThreadPoolExecutor\", in the \"_do_execute_collection\" method\nin the \"orchestrator\" module of CloudKitty.\n\nThe leak has been reported at [1], and there is still no solution. It is\na core library. We cannot remove the \"ThreadPoolExecutor\", as we need to\nexecute a parallel collection of metrics; otherwise, the process would\nbecome even slower.\n\nHowever, looking from a different perspective, we can use a native\nThreadPoolExecutor, and use it in a more correct approach. Instead of\ncreating a new ThreadPoolExecutor for every collection of every\ntimestamp of a scope, we are creating a single thread pool, and then\nusing this same instance across all timestamps and being processed for a\nscope. The timestamps are already processed in a serial fashion.\nTherefore, we do not create a bottleneck by adopting this approach.\n\nBy adopting a new approach to manage threads for data collection, we\nmanaged to improve CloudKitty code, remove the memory leak, and reduce\nthe CPU consumption (the futurist facade was presenting increases in CPU\nloads), as the creation of the thread pool can be costly.\n\nhttps://github.com/eventlet/eventlet/issues/741\n\nChange-Id: Idd0bca36f7f78e0f824013b0a0f844e878e83de3\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/87d5fc0bbb006b97d2a934ba3143c9997431c760"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/87d5fc0bbb006b97d2a934ba3143c9997431c760"}]},"branch":"refs/heads/master"},"57ac914ae786c944ac20d93294c5197c0581887b":{"kind":"REWORK","_number":3,"created":"2026-02-26 23:50:41.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/24/975224/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cloudkitty","ref":"refs/changes/24/975224/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/3"}}},"commit":{"parents":[{"commit":"394d780f9307af2abad26228eec86faa648e4b1b","subject":"Merge \"Feature to skip processed datapoints persistence\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/394d780f9307af2abad26228eec86faa648e4b1b"}]}],"author":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2026-01-29 20:52:04.000000000","tz":-180},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2026-02-26 23:50:28.000000000","tz":-180},"subject":"Address CloudKitty memory leak during collection processing.","message":"Address CloudKitty memory leak during collection processing.\n\nDuring an upgrade/rollout of CloudKitty with a new Gnocchi backend\ndriver as a storage backend, we noticed a memory leak while processing\nthe full month of January/2026.\n\nDuring the investigation, we tracked the leak to the \"eventlet\" module.\nThe \"eventlet\" module is used by the \"futurist\" module, which provides\nthread pool management. The part of the code that uses a \"leaking\"\nmodule is \"ThreadPoolExecutor\", in the \"_do_execute_collection\" method\nin the \"orchestrator\" module of CloudKitty.\n\nThe leak has been reported at [1], and there is still no solution. It is\na core library. We cannot remove the \"ThreadPoolExecutor\", as we need to\nexecute a parallel collection of metrics; otherwise, the process would\nbecome even slower.\n\nHowever, looking from a different perspective, we can use a native\nThreadPoolExecutor, and use it in a more correct approach. Instead of\ncreating a new ThreadPoolExecutor for every collection of every\ntimestamp of a scope, we are creating a single thread pool, and then\nusing this same instance across all timestamps and being processed for a\nscope. The timestamps are already processed in a serial fashion.\nTherefore, we do not create a bottleneck by adopting this approach.\n\nBy adopting a new approach to manage threads for data collection, we\nmanaged to improve CloudKitty code, remove the memory leak, and reduce\nthe CPU consumption (the futurist facade was presenting increases in CPU\nloads), as the creation of the thread pool can be costly.\n\nhttps://github.com/eventlet/eventlet/issues/741\n\nChange-Id: Idd0bca36f7f78e0f824013b0a0f844e878e83de3\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/57ac914ae786c944ac20d93294c5197c0581887b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/57ac914ae786c944ac20d93294c5197c0581887b"}]},"branch":"refs/heads/master"},"3fecc05d6ea62325dc0b78b08a3cf593f3929b57":{"kind":"REWORK","_number":4,"created":"2026-03-02 12:48:38.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/24/975224/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cloudkitty","ref":"refs/changes/24/975224/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/4"}}},"commit":{"parents":[{"commit":"576ce3be005ca92bf5344aaf54cbc2cfffef5ac1","subject":"Merge \"Fix CloudKitty log formatting\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/576ce3be005ca92bf5344aaf54cbc2cfffef5ac1"}]}],"author":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2026-01-29 20:52:04.000000000","tz":-180},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2026-03-02 12:48:27.000000000","tz":-180},"subject":"Address CloudKitty memory leak during collection processing.","message":"Address CloudKitty memory leak during collection processing.\n\nDuring an upgrade/rollout of CloudKitty with a new Gnocchi backend\ndriver as a storage backend, we noticed a memory leak while processing\nthe full month of January/2026.\n\nDuring the investigation, we tracked the leak to the \"eventlet\" module.\nThe \"eventlet\" module is used by the \"futurist\" module, which provides\nthread pool management. The part of the code that uses a \"leaking\"\nmodule is \"ThreadPoolExecutor\", in the \"_do_execute_collection\" method\nin the \"orchestrator\" module of CloudKitty.\n\nThe leak has been reported at [1], and there is still no solution. It is\na core library. We cannot remove the \"ThreadPoolExecutor\", as we need to\nexecute a parallel collection of metrics; otherwise, the process would\nbecome even slower.\n\nHowever, looking from a different perspective, we can use a native\nThreadPoolExecutor, and use it in a more correct approach. Instead of\ncreating a new ThreadPoolExecutor for every collection of every\ntimestamp of a scope, we are creating a single thread pool, and then\nusing this same instance across all timestamps and being processed for a\nscope. The timestamps are already processed in a serial fashion.\nTherefore, we do not create a bottleneck by adopting this approach.\n\nBy adopting a new approach to manage threads for data collection, we\nmanaged to improve CloudKitty code, remove the memory leak, and reduce\nthe CPU consumption (the futurist facade was presenting increases in CPU\nloads), as the creation of the thread pool can be costly.\n\nhttps://github.com/eventlet/eventlet/issues/741\n\nChange-Id: Idd0bca36f7f78e0f824013b0a0f844e878e83de3\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/3fecc05d6ea62325dc0b78b08a3cf593f3929b57"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/3fecc05d6ea62325dc0b78b08a3cf593f3929b57"}]},"branch":"refs/heads/master"},"f3259f372cbae1896aeb6803894e502886143d49":{"kind":"REWORK","_number":5,"created":"2026-03-03 16:13:59.000000000","uploader":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"ref":"refs/changes/24/975224/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cloudkitty","ref":"refs/changes/24/975224/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cloudkitty refs/changes/24/975224/5"}}},"commit":{"parents":[{"commit":"576ce3be005ca92bf5344aaf54cbc2cfffef5ac1","subject":"Merge \"Fix CloudKitty log formatting\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/576ce3be005ca92bf5344aaf54cbc2cfffef5ac1"}]}],"author":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2026-01-29 20:52:04.000000000","tz":-180},"committer":{"name":"Rafael Weingärtner","email":"rafael@apache.org","date":"2026-03-03 16:13:46.000000000","tz":-180},"subject":"Address CloudKitty memory leak during collection processing.","message":"Address CloudKitty memory leak during collection processing.\n\nDuring an upgrade/rollout of CloudKitty with a new Gnocchi backend\ndriver as a storage backend, we noticed a memory leak while processing\nthe full month of January/2026.\n\nDuring the investigation, we tracked the leak to the \"eventlet\" module.\nThe \"eventlet\" module is used by the \"futurist\" module, which provides\nthread pool management. The part of the code that uses a \"leaking\"\nmodule is \"ThreadPoolExecutor\", in the \"_do_execute_collection\" method\nin the \"orchestrator\" module of CloudKitty.\n\nThe leak has been reported at [1], and there is still no solution. It is\na core library. We cannot remove the \"ThreadPoolExecutor\", as we need to\nexecute a parallel collection of metrics; otherwise, the process would\nbecome even slower.\n\nHowever, looking from a different perspective, we can use a native\nThreadPoolExecutor, and use it in a more correct approach. Instead of\ncreating a new ThreadPoolExecutor for every collection of every\ntimestamp of a scope, we are creating a single thread pool, and then\nusing this same instance across all timestamps and being processed for a\nscope. The timestamps are already processed in a serial fashion.\nTherefore, we do not create a bottleneck by adopting this approach.\n\nBy adopting a new approach to manage threads for data collection, we\nmanaged to improve CloudKitty code, remove the memory leak, and reduce\nthe CPU consumption (the futurist facade was presenting increases in CPU\nloads), as the creation of the thread pool can be costly.\n\nhttps://github.com/eventlet/eventlet/issues/741\n\nChange-Id: Idd0bca36f7f78e0f824013b0a0f844e878e83de3\nSigned-off-by: Rafael Weingärtner \u003crafael@apache.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/f3259f372cbae1896aeb6803894e502886143d49"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cloudkitty/commit/f3259f372cbae1896aeb6803894e502886143d49"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"}},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{}}},{"name":"Review-Priority","description":"Review priority","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"-label:Review-Priority\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":[],"failing_atoms":["label:Review-Priority\u003dMIN"],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{}}}]}
