)]}'
{"id":"openstack%2Fceilometer~973046","triplet_id":"openstack%2Fceilometer~master~I7c4b6e11f6ad14ba12c774a70d0e2d6c573f2ed0","project":"openstack/ceilometer","branch":"master","attention_set":{},"removed_from_attention_set":{"4264":{"account":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"last_update":"2026-01-14 21:32:56.000000000","reason":"Change was submitted"},"32968":{"account":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"last_update":"2026-01-14 11:39:51.000000000","reason":"\u003cGERRIT_ACCOUNT_32968\u003e replied on the change","reason_account":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}},"16137":{"account":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"last_update":"2026-01-14 21:32:56.000000000","reason":"Change was submitted"},"34975":{"account":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"last_update":"2026-01-14 20:18:46.000000000","reason":"\u003cGERRIT_ACCOUNT_34975\u003e replied on the change","reason_account":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"}}},"hashtags":[],"change_id":"I7c4b6e11f6ad14ba12c774a70d0e2d6c573f2ed0","subject":"Use stable hashing for cache in Gnocchi publisher","status":"MERGED","created":"2026-01-12 06:54:44.000000000","updated":"2026-01-14 21:35:03.000000000","submitted":"2026-01-14 21:32:56.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":3,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"973046","meta_rev_id":"9fc660c19fe6924f2b4f885cc4082c8a457671f0","_number":973046,"virtual_id_number":973046,"owner":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-01-14 21:32:55.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},{"value":0,"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"}],"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":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"all":[{"value":2,"date":"2026-01-14 11:39:51.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-01-14 11:53:24.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},{"value":2,"date":"2026-01-14 20:18:46.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"}],"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":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"all":[{"value":0,"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},{"value":1,"date":"2026-01-14 20:18:46.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"}],"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":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-01-12 07:58:39.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-12 08:57:30.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":"CC"},{"updated":"2026-01-14 09:12:55.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"state":"CC"},{"updated":"2026-01-14 09:12:55.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"state":"REVIEWER"},{"updated":"2026-01-14 09:13:09.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"state":"REVIEWER"},{"updated":"2026-01-14 11:53:24.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"state":"REVIEWER"},{"updated":"2026-01-14 11:53:42.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"state":"REVIEWER"}],"messages":[{"id":"476bbbc1e04133593cf8db3f8a4bc7e3d53e1846","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"date":"2026-01-12 06:54:44.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"dd037b73f84e8390b6b8efc554a2b619b1b371a2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"date":"2026-01-12 06:56:18.000000000","message":"Uploaded patch set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"e3c8595b8146680b954e0aba45c57653f89353a3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"date":"2026-01-12 07:05:18.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"e2610d719018d364f0dabdc86479f555adb49cf1","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-12 07:58:39.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ab5f329523d1410eb966cf2abc124dee\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/71c564dc081249feba7cf298a6f20605 : SUCCESS in 3m 42s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7ccfb2d9da6e4179bba74990d4678625 : SUCCESS in 1m 57s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/16f9cdf0964d45c48375877447af9782 : SUCCESS in 3m 22s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/3780573252cd403ca7e311750d12aac3 : SUCCESS in 3m 38s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/60a3cb109dbd461aac03fc4646d3d683 : SUCCESS in 7m 20s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/d9326edbaaf24544aa7b75c7c134041d : SUCCESS in 4m 18s\n- grenade-ceilometer https://zuul.opendev.org/t/openstack/build/80e8c2f8582c4c458a3844a5640f2bc0 : SUCCESS in 35m 05s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/bc6b772f4eee41da93ce134c2673b5fe : SUCCESS in 48m 28s","accounts_in_message":[],"_revision_number":3},{"id":"37631cf02926a8197c83aa1e8fbef7b3cc8823c3","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-01-12 08:57:30.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"a290b654298bc88a41f223e8c49f21a6f69176f0","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"date":"2026-01-12 10:37:17.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":4},{"id":"27bca7131af284dc84af412c78f705edb676a0f1","author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"date":"2026-01-12 10:38:08.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"2656ad6cc721685a3a91af82bc533908fc0970de","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-12 11:48:41.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/f83475d93d9a486f8197ae974659a98e\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/ac0f25534552424394880046f6d38349 : SUCCESS in 5m 53s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/299633706a694977a8606f40846cd7e3 : SUCCESS in 3m 05s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/c8513f80faa54c58bb60d640243e4e29 : SUCCESS in 3m 36s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/fe48cd9abefc43f994e7bb70daf79b1f : SUCCESS in 3m 41s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6a09fd766f444d4392b2be7a7c15f7d1 : SUCCESS in 7m 45s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/1d4dab5ceedc438c848a5e3b7ce2bec9 : SUCCESS in 4m 41s\n- grenade-ceilometer https://zuul.opendev.org/t/openstack/build/de4a9673b0c04b0a8695048ea59165f0 : SUCCESS in 1h 06m 00s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/aec8d9937afa4ad48ba6e6271eff79de : SUCCESS in 31m 13s","accounts_in_message":[],"_revision_number":4},{"id":"61cd01924c1f88fb3dee5e1c0604b8c1fc69de91","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-01-14 11:39:51.000000000","message":"Patch Set 4: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"1ba6d55a90557273bb62487bea7004d28f261e72","author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"date":"2026-01-14 11:53:24.000000000","message":"Patch Set 4: Code-Review+1","accounts_in_message":[],"_revision_number":4},{"id":"3d574adb3aff78353fa0e0b424d06bce3dca045f","author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"date":"2026-01-14 20:18:46.000000000","message":"Patch Set 4: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":4},{"id":"43f551b9d23ff212449e09e356ab4c0fc3ead950","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-14 20:19:13.000000000","message":"Patch Set 4: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":4},{"id":"cd757d186ca6326af2db0280b48c078e7cd64aef","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-14 21:32:55.000000000","message":"Patch Set 4: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/7c3310d5b2aa4f149222e5e55350f4df\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b64c8011d346430caa78afc61109787f : SUCCESS in 3m 52s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/cf22e4d8dfc94cbe895b002941edb6b3 : SUCCESS in 3m 29s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/15be04e86a9240feb9d660cfb8d82ba8 : SUCCESS in 5m 51s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/647634d8c6ea4a638159acd983129d94 : SUCCESS in 7m 07s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/909088feb40a4178a1697de157656c08 : SUCCESS in 4m 47s\n- grenade-ceilometer https://zuul.opendev.org/t/openstack/build/f6cbfe4ad7f44d0b86f8ff187105ab57 : SUCCESS in 1h 08m 58s\n- telemetry-dsvm-integration https://zuul.opendev.org/t/openstack/build/3fbbd7d2cb064c6eb0e913139f7fabef : SUCCESS in 51m 40s","accounts_in_message":[],"_revision_number":4},{"id":"4e7fd13df9ec05ff88927dfe1b77a942f9252509","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-14 21:32:56.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":4},{"id":"9fc660c19fe6924f2b4f885cc4082c8a457671f0","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-14 21:35:03.000000000","message":"Patch Set 4:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/820e9f0bb94c420790acc6a47f651e92\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/cf38c15c06fc4e77bc5f0110fb506c6d : SUCCESS in 43s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/3cf0c275b781442687cf37e171d9da46 : SUCCESS in 1m 42s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"373e7829339d10b866a07a747103af99a8555599","revisions":{"999963f06c8130a44ae2274eef1076d7641da8c3":{"kind":"REWORK","_number":1,"created":"2026-01-12 06:54:44.000000000","uploader":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"ref":"refs/changes/46/973046/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/46/973046/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/1"}}},"commit":{"parents":[{"commit":"96292a0b6b2b4ba1b4933fc82401b1b693ce3a6b","subject":"Imported Translations from Zanata","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/96292a0b6b2b4ba1b4933fc82401b1b693ce3a6b"}]}],"author":{"name":"Tobias Urdin","email":"tobias.urdin@binero.com","date":"2026-01-09 15:41:03.000000000","tz":60},"committer":{"name":"Tobias Urdin","email":"tobias.urdin@binero.com","date":"2026-01-09 16:05:03.000000000","tz":60},"subject":"Use stable hashing for cache in Gnocchi publisher","message":"Use stable hashing for cache in Gnocchi publisher\n\nIn the Gnocchi publisher we\u0027ve been using the\nPython hash() function which causes inconsitent\nhashes of resource attributes due to it\nbeing non-deterministic between instances of\nthe Python interpreter as it depends on\nPYTHONHASHSEED.\n\nThis, together with it being sensitive to the\nordering of data in the dictionary, causes the\nhash to not be stable across multiple workers\ncausing us to perform more HTTP PATCH requests\nfor resource against the Gnocchi API than what\nis needed if we were to have a more stable hash\nof the attributes.\n\nThis replaces the usage of hash() with the BLAKE2\nalgorithm from the hashlib standard library that\nis available by default since Python \u003e\u003d 3.6\n\nThis gives us a deterministic and stable hash\nbetween processes, hosts, restarts and to\nmake sure we\u0027re not affected by any ordering\nwe first encode it to JSON and sort the keys.\n\nBLAKE2 is much faster than SHA256, was designed\nto replace SHA1 and MD5, has a lower collision\nrisk than using MD5 and gives us fast enough\nperformance.\n\nBy default the expiration_time in oslo.cache\nmakes it so the hash only has to be recomputed\nevery 10 minutes, unless the config option is\nincreased by the operator (recommended, atleast\nfor the Gnocchi publisher workload).\n\nChange-Id: I7c4b6e11f6ad14ba12c774a70d0e2d6c573f2ed0\nSigned-off-by: Tobias Urdin \u003ctobias.urdin@binero.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/999963f06c8130a44ae2274eef1076d7641da8c3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/999963f06c8130a44ae2274eef1076d7641da8c3"}]},"branch":"refs/heads/master"},"3e4fc614547638087b15f75256352c01e08810f1":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2026-01-12 06:56:18.000000000","uploader":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"ref":"refs/changes/46/973046/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/46/973046/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/2"}}},"commit":{"parents":[{"commit":"96292a0b6b2b4ba1b4933fc82401b1b693ce3a6b","subject":"Imported Translations from Zanata","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/96292a0b6b2b4ba1b4933fc82401b1b693ce3a6b"}]}],"author":{"name":"Tobias Urdin","email":"tobias.urdin@binero.com","date":"2026-01-09 15:41:03.000000000","tz":60},"committer":{"name":"Tobias Urdin","email":"tobias.urdin@binero.com","date":"2026-01-12 06:56:07.000000000","tz":60},"subject":"Use stable hashing for cache in Gnocchi publisher","message":"Use stable hashing for cache in Gnocchi publisher\n\nIn the Gnocchi publisher we\u0027ve been using the\nPython hash() function which causes inconsitent\nhashes of resource attributes due to it\nbeing non-deterministic between instances of\nthe Python interpreter as it depends on\nPYTHONHASHSEED.\n\nThis, together with it being sensitive to the\nordering of data in the dictionary, causes the\nhash to not be stable across multiple workers\ncausing us to perform more HTTP PATCH requests\nfor resource against the Gnocchi API than what\nis needed if we were to have a more stable hash\nof the attributes.\n\nThis replaces the usage of hash() with the BLAKE2\nalgorithm from the hashlib standard library that\nis available by default since Python \u003e\u003d 3.6\n\nThis gives us a deterministic and stable hash\nbetween processes, hosts, restarts and to\nmake sure we\u0027re not affected by any ordering\nwe first encode it to JSON and sort the keys.\n\nBLAKE2 is much faster than SHA256, was designed\nto replace SHA1 and MD5, has a lower collision\nrisk than using MD5 and gives us fast enough\nperformance.\n\nChange-Id: I7c4b6e11f6ad14ba12c774a70d0e2d6c573f2ed0\nSigned-off-by: Tobias Urdin \u003ctobias.urdin@binero.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/3e4fc614547638087b15f75256352c01e08810f1"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/3e4fc614547638087b15f75256352c01e08810f1"}]},"branch":"refs/heads/master"},"40be81aefcadf49cbb3afd701b9ce7dbaf9be888":{"kind":"REWORK","_number":3,"created":"2026-01-12 07:05:18.000000000","uploader":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"ref":"refs/changes/46/973046/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/46/973046/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/3"}}},"commit":{"parents":[{"commit":"96292a0b6b2b4ba1b4933fc82401b1b693ce3a6b","subject":"Imported Translations from Zanata","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/96292a0b6b2b4ba1b4933fc82401b1b693ce3a6b"}]}],"author":{"name":"Tobias Urdin","email":"tobias.urdin@binero.com","date":"2026-01-09 15:41:03.000000000","tz":60},"committer":{"name":"Tobias Urdin","email":"tobias.urdin@binero.com","date":"2026-01-12 07:05:12.000000000","tz":60},"subject":"Use stable hashing for cache in Gnocchi publisher","message":"Use stable hashing for cache in Gnocchi publisher\n\nIn the Gnocchi publisher we\u0027ve been using the\nPython hash() function which causes inconsitent\nhashes of resource attributes due to it\nbeing non-deterministic between instances of\nthe Python interpreter as it depends on\nPYTHONHASHSEED.\n\nThis, together with it being sensitive to the\nordering of data in the dictionary, causes the\nhash to not be stable across multiple workers\ncausing us to perform more HTTP PATCH requests\nfor resource against the Gnocchi API than what\nis needed if we were to have a more stable hash\nof the attributes.\n\nThis replaces the usage of hash() with the BLAKE2\nalgorithm from the hashlib standard library that\nis available by default since Python \u003e\u003d 3.6\n\nThis gives us a deterministic and stable hash\nbetween processes, hosts, restarts and to\nmake sure we\u0027re not affected by any ordering\nwe first encode it to JSON and sort the keys.\n\nBLAKE2 is much faster than SHA256, was designed\nto replace SHA1 and MD5, has a lower collision\nrisk than using MD5 and gives us fast enough\nperformance.\n\nChange-Id: I7c4b6e11f6ad14ba12c774a70d0e2d6c573f2ed0\nSigned-off-by: Tobias Urdin \u003ctobias.urdin@binero.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/40be81aefcadf49cbb3afd701b9ce7dbaf9be888"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/40be81aefcadf49cbb3afd701b9ce7dbaf9be888"}]},"branch":"refs/heads/master"},"373e7829339d10b866a07a747103af99a8555599":{"kind":"REWORK","_number":4,"created":"2026-01-12 10:37:17.000000000","uploader":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"ref":"refs/changes/46/973046/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/46/973046/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/46/973046/4"}}},"commit":{"parents":[{"commit":"96292a0b6b2b4ba1b4933fc82401b1b693ce3a6b","subject":"Imported Translations from Zanata","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/96292a0b6b2b4ba1b4933fc82401b1b693ce3a6b"}]}],"author":{"name":"Tobias Urdin","email":"tobias.urdin@binero.com","date":"2026-01-09 15:41:03.000000000","tz":60},"committer":{"name":"Tobias Urdin","email":"tobias.urdin@binero.com","date":"2026-01-12 10:37:10.000000000","tz":60},"subject":"Use stable hashing for cache in Gnocchi publisher","message":"Use stable hashing for cache in Gnocchi publisher\n\nIn the Gnocchi publisher we\u0027ve been using the\nPython hash() function which causes inconsitent\nhashes of resource attributes due to it\nbeing non-deterministic between instances of\nthe Python interpreter as it depends on\nPYTHONHASHSEED.\n\nThis, together with it being sensitive to the\nordering of data in the dictionary, causes the\nhash to not be stable across multiple workers\ncausing us to perform more HTTP PATCH requests\nfor resource against the Gnocchi API than what\nis needed if we were to have a more stable hash\nof the attributes.\n\nThis replaces the usage of hash() with the BLAKE2\nalgorithm from the hashlib standard library that\nis available by default since Python \u003e\u003d 3.6\n\nThis gives us a deterministic and stable hash\nbetween processes, hosts, restarts and to\nmake sure we\u0027re not affected by any ordering\nwe first encode it to JSON and sort the keys.\n\nBLAKE2 is much faster than SHA256, was designed\nto replace SHA1 and MD5, has a lower collision\nrisk than using MD5 and gives us fast enough\nperformance.\n\nChange-Id: I7c4b6e11f6ad14ba12c774a70d0e2d6c573f2ed0\nSigned-off-by: Tobias Urdin \u003ctobias.urdin@binero.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/373e7829339d10b866a07a747103af99a8555599"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/373e7829339d10b866a07a747103af99a8555599"}]},"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":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"}}]}],"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":"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":{}}}]}
