)]}'
{"id":"openstack%2Fplacement~675606","triplet_id":"openstack%2Fplacement~master~Ibccaed40f1eac9c244cf70654f6be1d72f7a6054","project":"openstack/placement","branch":"master","topic":"optimize-_build_provider_summaries","hashtags":[],"change_id":"Ibccaed40f1eac9c244cf70654f6be1d72f7a6054","subject":"Avoid duplicate ProviderSummary in _merge_candidates","status":"MERGED","created":"2019-08-09 12:15:46.000000000","updated":"2019-08-16 13:48:40.000000000","submitted":"2019-08-16 13:48:40.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":16,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"675606-1565963320480-0fc9d827","meta_rev_id":"4c2ee62c7e212d823ae19565f6d6f83e96683bf5","_number":675606,"virtual_id_number":675606,"owner":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":2,"date":"2019-08-16 13:48:40.000000000","post_submit":true,"permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"}],"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":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"all":[{"value":2,"date":"2019-08-16 09:52:29.000000000","_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2019-08-16 12:13:15.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"}],"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":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"all":[{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2019-08-16 12:13:15.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-08-14 19:00:18.000000000","updated_by":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"reviewer":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"state":"REVIEWER"},{"updated":"2019-08-16 12:13:15.000000000","updated_by":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"reviewer":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"state":"REVIEWER"},{"updated":"2019-08-16 13:48:40.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"}],"messages":[{"id":"72949e891394d5d013abd808cc8941d0b13fb198","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-09 12:15:46.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"e91cf65406c437cb620411b8bdfeda1606147207","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-09 12:19:40.000000000","message":"Patch Set 1:\n\nNote that the 21000 problem is not related to the keys()/values() FIXME. It\u0027s the same back to when we added same_subtree.\n\nSo this fix is still an improvement even without the fixme issue, but I think we should address as part of this, or at least the discussion of this.","accounts_in_message":[],"_revision_number":1},{"id":"74198e10a204b0ef5a2492c34b8380025bba4d6f","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-09 12:40:15.000000000","message":"Patch Set 1:\n\n(1 comment)\n\nthis is left in a pretty halfway state because I need to stop and do the pupdate","accounts_in_message":[],"_revision_number":1},{"id":"d38d47310d3ea770590862a1bd52ecc7699b9547","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-09 15:17:37.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- grenade-py3 https://logs.opendev.org/06/675606/1/check/grenade-py3/36578d8/ : FAILURE in 1h 12m 31s\n- tempest-integrated-placement https://logs.opendev.org/06/675606/1/check/tempest-integrated-placement/68f1c44/ : SUCCESS in 1h 32m 33s\n- openstack-tox-docs https://logs.opendev.org/06/675606/1/check/openstack-tox-docs/4191bf8/html/ : SUCCESS in 4m 53s\n- openstack-tox-cover https://logs.opendev.org/06/675606/1/check/openstack-tox-cover/3e6be6e/cover/ : SUCCESS in 5m 38s\n- openstack-tox-lower-constraints https://logs.opendev.org/06/675606/1/check/openstack-tox-lower-constraints/86e558b/ : SUCCESS in 6m 13s\n- openstack-tox-pep8 https://logs.opendev.org/06/675606/1/check/openstack-tox-pep8/34faba4/ : SUCCESS in 4m 35s\n- openstack-tox-py27 https://logs.opendev.org/06/675606/1/check/openstack-tox-py27/9100026/ : SUCCESS in 4m 51s\n- openstack-tox-py36 https://logs.opendev.org/06/675606/1/check/openstack-tox-py36/e9c9670/ : SUCCESS in 4m 06s\n- openstack-tox-py37 https://logs.opendev.org/06/675606/1/check/openstack-tox-py37/0440893/ : SUCCESS in 4m 56s\n- openstack-tox-functional https://logs.opendev.org/06/675606/1/check/openstack-tox-functional/22d3236/ : SUCCESS in 5m 43s\n- openstack-tox-functional-py36 https://logs.opendev.org/06/675606/1/check/openstack-tox-functional-py36/f5271d9/ : SUCCESS in 6m 16s\n- openstack-tox-functional-py37 https://logs.opendev.org/06/675606/1/check/openstack-tox-functional-py37/814e0fa/ : SUCCESS in 6m 22s\n- placement-nova-tox-functional-py37 https://logs.opendev.org/06/675606/1/check/placement-nova-tox-functional-py37/a5311e2/ : SUCCESS in 13m 19s\n- placement-nested-perfload https://logs.opendev.org/06/675606/1/check/placement-nested-perfload/3c06b81/ : SUCCESS in 25m 38s (non-voting)\n- placement-perfload https://logs.opendev.org/06/675606/1/check/placement-perfload/9b37fb6/ : SUCCESS in 11m 23s (non-voting)\n- tempest-ipv6-only https://logs.opendev.org/06/675606/1/check/tempest-ipv6-only/d7aa004/ : SUCCESS in 1h 03m 06s","accounts_in_message":[],"_revision_number":1},{"id":"39a2511670b1fc39ec4426f6e8b33e7634385583","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-09 15:31:37.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"09935706b29fe4190fc1e4d009c5bc89a4d0e116","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-09 18:13:13.000000000","message":"Patch Set 2:\n\n(1 comment)\n\nThis now works as desired and helps very nicely to speed things up (and probably saves a fair bit of RAM too).\n\nA tangential note within about the next big consumer.","accounts_in_message":[],"_revision_number":2},{"id":"4657ee92496565a331d27891dfe4b3835f74c956","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-09 22:04:23.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://logs.opendev.org/06/675606/2/check/grenade-py3/033436c/ : SUCCESS in 1h 10m 40s\n- tempest-integrated-placement https://logs.opendev.org/06/675606/2/check/tempest-integrated-placement/cafd12c/ : SUCCESS in 1h 21m 33s\n- openstack-tox-docs https://logs.opendev.org/06/675606/2/check/openstack-tox-docs/df211d7/html/ : SUCCESS in 5m 26s\n- openstack-tox-cover https://logs.opendev.org/06/675606/2/check/openstack-tox-cover/ad73c63/cover/ : SUCCESS in 6m 13s\n- openstack-tox-lower-constraints https://logs.opendev.org/06/675606/2/check/openstack-tox-lower-constraints/461bc14/ : SUCCESS in 6m 21s\n- openstack-tox-pep8 https://logs.opendev.org/06/675606/2/check/openstack-tox-pep8/55e3563/ : SUCCESS in 5m 23s\n- openstack-tox-py27 https://logs.opendev.org/06/675606/2/check/openstack-tox-py27/4f4f4da/ : SUCCESS in 5m 42s\n- openstack-tox-py36 https://logs.opendev.org/06/675606/2/check/openstack-tox-py36/d657c8e/ : SUCCESS in 5m 29s\n- openstack-tox-py37 https://logs.opendev.org/06/675606/2/check/openstack-tox-py37/9b15507/ : SUCCESS in 6m 11s\n- openstack-tox-functional https://logs.opendev.org/06/675606/2/check/openstack-tox-functional/7faf268/ : SUCCESS in 6m 02s\n- openstack-tox-functional-py36 https://logs.opendev.org/06/675606/2/check/openstack-tox-functional-py36/25908f7/ : SUCCESS in 5m 57s\n- openstack-tox-functional-py37 https://logs.opendev.org/06/675606/2/check/openstack-tox-functional-py37/9f90d6f/ : SUCCESS in 6m 22s\n- placement-nova-tox-functional-py37 https://logs.opendev.org/06/675606/2/check/placement-nova-tox-functional-py37/89bf8e9/ : SUCCESS in 12m 13s\n- placement-nested-perfload https://logs.opendev.org/06/675606/2/check/placement-nested-perfload/cc6f4c4/ : SUCCESS in 26m 33s (non-voting)\n- placement-perfload https://logs.opendev.org/06/675606/2/check/placement-perfload/35fda63/ : SUCCESS in 13m 40s (non-voting)\n- tempest-ipv6-only https://logs.opendev.org/06/675606/2/check/tempest-ipv6-only/ae7f9b4/ : SUCCESS in 1h 07m 55s","accounts_in_message":[],"_revision_number":2},{"id":"0d879a9b5864be87b95c87763bcbed7fa40b49d1","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2019-08-12 16:07:32.000000000","message":"Patch Set 2: Code-Review-1\n\n(3 comments)","accounts_in_message":[],"_revision_number":2},{"id":"8630a13b1bb97b531cd5475b11ff26344a5f64d3","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-12 16:14:12.000000000","message":"Patch Set 2: Workflow-1\n\n(3 comments)\n\nwill fix","accounts_in_message":[],"_revision_number":2},{"id":"1ef239dc23f9f6c271831dbf157b8e0ddd4f1875","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-12 16:28:08.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"52f99812557f170871433a45927216c8f11d3ac5","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-12 17:16:48.000000000","message":"Patch Set 3: Code-Review-1\n\n(5 comments)","accounts_in_message":[],"_revision_number":3},{"id":"578ea855572907aebf076c3dbc2c08dcda58dfa8","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-12 17:43:38.000000000","message":"Patch Set 3: Workflow-1\n\nwe need a failing test that points out the issues that eric has pointed out and we can figure things out from there\n\nthis _may_ mean this gets split in two. It may also mean it just gets fixed. I\u0027ll be able to figure out the right thing once the failing test is happening.","accounts_in_message":[],"_revision_number":3},{"id":"690256fd0727edff0271751470b9be447c15fb16","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-12 19:57:59.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/2bd162ed422c460eb7b673ea81412b48 : SUCCESS in 51m 47s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/c714aa4dd92042f194ec5bcb336a0561 : SUCCESS in 1h 18m 38s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bab47798a6f840699c6c178bca698aac : SUCCESS in 5m 18s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/ab8687b4b1f44d19b363fd79dbd113d3 : SUCCESS in 5m 43s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/75995fdaa4f24b7b96c5c395ba7b1a2c : SUCCESS in 5m 41s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/94726f4c2d854702832084572b1f0af7 : SUCCESS in 5m 56s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/a8ab6ceb0c9b4634b50f03fb8af4ee1b : SUCCESS in 6m 16s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/966363e3d89b41829e7e1231fd43e9b6 : SUCCESS in 6m 21s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/7f51cf7a6a164933a6bab513b4fbaeac : SUCCESS in 7m 28s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/87500faf97064183847b806e3adbe4fe : SUCCESS in 5m 17s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/1effdc16ecad460aa4357b2a9353dd08 : SUCCESS in 5m 11s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/73c9a63f2cce4be0aec120da2f644f71 : SUCCESS in 4m 52s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/c4c9de4301e64a8f8bdb66cff858a38a : SUCCESS in 11m 06s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/ea5fdb4dc7d64b87a25c1a9fb0e2f442 : SUCCESS in 34m 26s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/9b641e1d50314732ab61c1245582edb5 : SUCCESS in 12m 05s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/48d1a23b7c31410b9d22e357dc9de994 : SUCCESS in 1h 06m 24s","accounts_in_message":[],"_revision_number":3},{"id":"95964cf3890d9e96a65474b67a952d1bd453201c","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-13 14:36:44.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"da6e8fad716e19488f90f7aeb8c9e26324a8949a","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-13 16:11:56.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"02c4484778b044489543e3ec7404584b27bbb5c5","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-13 16:14:12.000000000","message":"Patch Set 5:\n\nThe tests in the patch at the start of this stack, https://review.opendev.org/676204 , are operating as a gate for the rest of the stack. They are supposed to help confirm that the changes to _merge_candidates and _satisfies_same_subtree that have happened throughout the stack have not broken things.\n\nThis change also breaks up the changes into 4 patches instead of just this one was, which was too big.","accounts_in_message":[],"_revision_number":5},{"id":"058e6a65c55086efa82bf1006d8ef54bc0c2e263","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-13 18:23:12.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/a60bad73e94a4ee088bb705427dd987e : SUCCESS in 1h 04m 44s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/7ee00d37694a4d1e894c2c599d4cf7de : SUCCESS in 1h 13m 04s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9eaa0233382e483198508cd940c967d0 : SUCCESS in 4m 42s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/d19e1190fadd422083c66de4cc93460e : SUCCESS in 5m 08s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/e8267537393a416995d55c684943a4de : SUCCESS in 4m 51s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d5733ada72874dec82d3c146ca7e70a8 : SUCCESS in 4m 49s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/7b1952715cac4d0f8209a4a2de79a5e1 : SUCCESS in 4m 02s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/1a03c22236ee4c03a0f3132289420009 : SUCCESS in 4m 27s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/3e5f69d3cb854eaeb0d4d74d18ce6383 : SUCCESS in 3m 59s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/2e443ac0f0644e66955844336f75f2c2 : SUCCESS in 5m 04s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/0fa507736a744242b307ba1899c0e802 : SUCCESS in 5m 37s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/846ffea4bd9a4f809f0b86a39d721ebb : SUCCESS in 5m 17s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/38e1b3ee344946469eda8da655b61e49 : SUCCESS in 12m 32s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/8e8671ab940c4434a05a7512ab93d376 : SUCCESS in 12m 12s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/b6c0ef960bd140949540ac68a7e7d31c : SUCCESS in 8m 49s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/1297eb89bf3d488e85bde4a7a6bc3a96 : SUCCESS in 55m 29s","accounts_in_message":[],"_revision_number":5},{"id":"01c1869975c1e37242b493511d76b4979540a4ec","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-13 18:55:53.000000000","message":"Patch Set 5:\n\nthe nested perfload job made need it\u0027s ab call adjusted:\n\n-s timeout      Seconds to max. wait for each response\n                    Default is 30 seconds\n\nhttps://logs.opendev.org/06/675606/5/check/placement-nested-perfload/8e8671a/job-output.txt.gz#_2019-08-13_17_11_43_213106","accounts_in_message":[],"_revision_number":5},{"id":"f64d7500e7e3ee05be21a5126401987c2dc1cb80","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-13 21:58:20.000000000","message":"Patch Set 5: Code-Review+2\n\nYeah, see, this is an easy +2 for me now.\n\nI still agree it would be nice to write the missing test. But this is obviously correct.","accounts_in_message":[],"_revision_number":5},{"id":"c6ca92e44ef9a3eb3b54ae7aaed7203488051edd","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-13 22:06:41.000000000","message":"Patch Set 5:\n\n\u003e Yeah, see, this is an easy +2 for me now.\n \u003e \n \u003e I still agree it would be nice to write the missing test. But this\n \u003e is obviously correct.\n\nYeah, I agree, it did get much simpler breaking things out, and that revealed some more things worth doing.\n\nhttps://review.opendev.org/#/c/676204 is the starting point for the test, but I ran out of imagination.","accounts_in_message":[],"_revision_number":5},{"id":"cfb47d05694de0326e5100a19024b2e3d2044991","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-14 08:49:52.000000000","message":"Uploaded patch set 6.","accounts_in_message":[],"_revision_number":6},{"id":"42ea5aff3db0b9b275cbda63ad6de6e9632f5d84","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-14 10:11:21.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/e23839b091c5481eb4ef0425ba5a9e06 : SUCCESS in 50m 17s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/01bdbb06aa9044528105436ca8eecb64 : SUCCESS in 1h 15m 54s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/80a45d90901b42b593c8bd90f274471e : SUCCESS in 3m 42s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/705b94027a1a456d8ee15bb2018eaf99 : SUCCESS in 5m 19s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/2371c32d20f64cf989c9f4f892dd6f9f : SUCCESS in 4m 56s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/fd2da566344946b99ed4f7917fb91724 : SUCCESS in 3m 37s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/d837fa2a8efc487fa673f5b14dd9808f : SUCCESS in 4m 21s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/d3f1ef03f68a461f923700b97c29c0cd : SUCCESS in 7m 47s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/c3c95766e8e34dd186bfc1910f20f71f : SUCCESS in 7m 04s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/7a33bac03a0c43e9a886ca40742bd76e : SUCCESS in 7m 58s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/25f3c7a876ff46ec84bc0ba37408bb6a : SUCCESS in 6m 59s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/cc9bde85c3af48eeb335cb195425d598 : SUCCESS in 9m 13s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/a3376d3ab830489083cda299200a0eee : SUCCESS in 11m 46s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/3f874222700c456cbf97b197ddf7ab70 : SUCCESS in 28m 01s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/9af0981fa6ec4846814a397786cebf0c : SUCCESS in 11m 00s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/65f65b12e04a4596acc8c05e95ea725c : SUCCESS in 1h 11m 40s","accounts_in_message":[],"_revision_number":6},{"id":"304d636be45384a028e385634409474d71ea5183","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2019-08-14 12:53:37.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"81b58c447cee9722f04ab45881ae633454760376","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-14 16:57:49.000000000","message":"Uploaded patch set 7: Patch Set 6 was rebased.","accounts_in_message":[],"_revision_number":7},{"id":"94097477d91dac7a306e1c87436b30be9bf0f7c0","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-14 17:02:32.000000000","message":"Patch Set 7:\n\n(1 comment)","accounts_in_message":[],"_revision_number":7},{"id":"44b35e9d7fe5ec199b80dcacc477b63f5e53d96f","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-14 17:13:33.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"c4fd2c49ed64dea0f1b24dd8d90e8a676a47d44a","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-14 17:40:24.000000000","message":"Patch Set 2:\n\nThanks for the analysis Eric, but I\u0027m not clear what the next step should be.\n\nI\u0027m not sure if I read what you wrote correctly, either:\n\n* the problem is present in master too\n* or you were describing a theoretical case with regard to parentage  info (one obviously present in my earlier patches), one which we fix in the present stack by making sure all providers (because they come from usages) in play are in the parent data\n* something else, because I\u0027m tired, I missed","accounts_in_message":[],"_revision_number":2},{"id":"1859fad23a1f97f4942cb5841b723f4da2dcc839","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-14 18:47:08.000000000","message":"Patch Set 7:\n\nThe problem is not present in master, since we went back to the fully-populated parentage data.\n\nI wrote a couple of patches to prove that, in the theoretical case where we use sparse parentage data, we can break same_subtree:\n\nunit: https://review.opendev.org/676471\ngabbi: https://review.opendev.org/676477\n\nThe latter contains a test we could keep - I just need to extract it from the part that breaks it. Which I was doing when I ran across a bug in the fixture, which I\u0027ve fixed here:\n\nhttps://review.opendev.org/676486","accounts_in_message":[],"_revision_number":7},{"id":"403f6212b1b0503da7c084360858409b90ae84c7","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-14 18:47:31.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/96c7db29603942d89a9895472bc64cd2 : SUCCESS in 1h 03m 19s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/41ecbd7295b54ff597ce0c9fc264e570 : SUCCESS in 1h 21m 47s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7d1d8403c91746958ada7617212753c6 : SUCCESS in 5m 02s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/57889cf2895b4398905cde7d3d425fcb : SUCCESS in 5m 34s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/e1714a4820ca4fd9a71920694067dcc4 : SUCCESS in 5m 55s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f06106352c104e54adc4b6d09bdf7ba7 : SUCCESS in 5m 16s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/6362b83ddb404d24963e04ca1e202f94 : SUCCESS in 5m 37s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/0ad66960db2d4239899d139499983904 : SUCCESS in 4m 23s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/e84275a9bb5943e1af8470280bc59dc2 : SUCCESS in 7m 48s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/1604d6610c4b4db99328197e5877c9f3 : SUCCESS in 5m 06s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/e4ef2e15857549d8a9b44b7d390f9315 : SUCCESS in 5m 29s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/0c03e38b0e084d308805f0bde6347d4a : SUCCESS in 7m 30s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/f172198dcfb54bf5b47ac9c19a7ebab2 : SUCCESS in 13m 08s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/26e118d3e50e43498df3e38d41bc475e : SUCCESS in 28m 17s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/0a763cd5a4ea41dca3a72ae0d401360d : SUCCESS in 12m 42s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/b75be1ddbc7944949635065969dc0a15 : SUCCESS in 1h 14m 54s","accounts_in_message":[],"_revision_number":7},{"id":"13b2396452e59ad12b3c778979e9baf1a6098b4f","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-14 19:00:18.000000000","message":"Patch Set 7: Code-Review+2\n\nOkay, the bit we can keep is here [1], now based on the fixture fix [2], and topped by a DNM proving that we can\u0027t do the sparse-parentage-dict thing [3].\n\nMeanwhile, this one got a manual rebase since my last +2, revoting.\n\n[1] https://review.opendev.org/#/c/676491/\n[2] https://review.opendev.org/#/c/676486/\n[3] https://review.opendev.org/#/c/676477/","accounts_in_message":[],"_revision_number":7},{"id":"65bd03c5cfd87f6394243cfa34ef6f464c6fced7","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-15 09:27:04.000000000","message":"Uploaded patch set 8: Patch Set 7 was rebased.","accounts_in_message":[],"_revision_number":8},{"id":"e9e45db4b4de0f7f88a567f4aab1bc1d98059973","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-15 09:53:13.000000000","message":"Uploaded patch set 9: Patch Set 8 was rebased.","accounts_in_message":[],"_revision_number":9},{"id":"2ee04f54feda13e08d5f8b307ff395dc33ca46a3","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-15 11:31:04.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/3090970040fa41f085fdd8f1efbb8045 : SUCCESS in 56m 10s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/1d13b9511a0549d48ba6632d0a48bfe0 : SUCCESS in 1h 30m 40s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3e07814b43df4a6d807d497d98a256fe : SUCCESS in 4m 26s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/8105ffc632e842f193e239a585e86afa : SUCCESS in 5m 15s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/d761ef47bb0e4811ba304798ce346c34 : SUCCESS in 4m 42s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4f54a4da7b2d47fdaabe0653af450e94 : SUCCESS in 4m 36s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/776d6ad7bb1e4a469ba466b02b8b9428 : SUCCESS in 4m 58s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/b0fadd4b1ae54c2ea20fd682b21538a5 : SUCCESS in 4m 08s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/cdc32fd3308c44b591e283a293c97937 : SUCCESS in 4m 52s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/36eb289c7f624b62bc70e9b07dac5a39 : SUCCESS in 4m 30s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/05a8ed525c684be9bca0cf046427213d : SUCCESS in 5m 49s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/4d016af91bab47149f2baa2533df7de6 : SUCCESS in 5m 06s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/a2a0baabd8e441b8958fd47dee28db4f : SUCCESS in 12m 19s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/d9a88812770449239160bebeb9cfecd8 : SUCCESS in 30m 41s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/90e29c0e5b5d405c976df3671d1033e3 : SUCCESS in 11m 57s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/d34b78742a2b44eea663ccfba711d87b : SUCCESS in 1h 05m 19s","accounts_in_message":[],"_revision_number":9},{"id":"a6fc2085713b1347b50bcb87e6cf824df72ca890","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-16 09:52:29.000000000","message":"Uploaded patch set 10: Patch Set 9 was rebased.","accounts_in_message":[],"_revision_number":10},{"id":"dcd478430bd0ff6f7b85469c068ad0bb5afa6816","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-16 11:31:20.000000000","message":"Patch Set 10: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/7063d8ec9f7e4c5a8271a31be06b69d6 : SUCCESS in 59m 07s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/9728ba1a1cf345db9b66bf8eb5192351 : SUCCESS in 1h 37m 23s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c4e6d5656a934955bde772fe66145272 : SUCCESS in 5m 06s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/32191f7b0b5b43098720534875e9d034 : SUCCESS in 7m 20s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/46cacd3c5b1c41a7bf5cd4db096406a9 : SUCCESS in 6m 05s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/152f8f2a79c14b66936ca03f03c0518c : SUCCESS in 4m 34s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/c266fd6fb83045148c6c84f86d53596f : SUCCESS in 4m 32s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/803d1c15bf5a449da0364a6392443ba0 : SUCCESS in 5m 05s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/a00b82d259de4bf6847dda5b16e2a929 : SUCCESS in 6m 09s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/09997f7aa86347e099448a90c0513ae8 : SUCCESS in 9m 26s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/2ce27fe7e6e243b691824897c19f45c4 : SUCCESS in 5m 32s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/975a5e4976834317bab3c67c6a821f4e : SUCCESS in 6m 22s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/9d2c41207a9640e78c78ab7084fa87c7 : SUCCESS in 11m 11s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/3d8416e6ed014334956313abdcc714b3 : SUCCESS in 25m 36s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/0aacf6e1807c4ca6912124119d28f4ee : SUCCESS in 12m 38s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/49a9f6bfd7be458cb8a6125b8b07784a : SUCCESS in 1h 08m 24s","accounts_in_message":[],"_revision_number":10},{"id":"879400e8a0286acadc18784662671694fda711cd","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2019-08-16 12:13:15.000000000","message":"Patch Set 10: Code-Review+2 Workflow+1\n\nGreat detective work avoiding a potential bug!","accounts_in_message":[],"_revision_number":10},{"id":"1e0b36264ba3b016f32f4af7ab7d5244b6d4c147","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-16 12:13:29.000000000","message":"Patch Set 10: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":10},{"id":"d0cbc03cf1fdb71e3ef410c4388313e04891005c","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-16 13:48:40.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":10},{"id":"03fbe205ac1d4cd6a975e992cb2ed8bfca9002bc","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-16 13:48:40.000000000","message":"Patch Set 10: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/15b4dc8d49824270878f166681b17162 : SUCCESS in 1h 01m 02s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/53288e83f7d441268c462ebd2d4ecd58 : SUCCESS in 1h 33m 02s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/30735ad871d84c149a0e4f622303ae21 : SUCCESS in 5m 51s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/2ca37b09cd6e439c950c8342c6c40e29 : SUCCESS in 5m 53s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/19c077ccca6945dab53620b6f19ef50d : SUCCESS in 4m 59s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/37b66c62e88a42f4a26aa301b2061419 : SUCCESS in 5m 55s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/85652524b4394a27ae95218a25ef9093 : SUCCESS in 5m 03s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/be7ef88b9eac4a9391fc88d37f49687b : SUCCESS in 6m 33s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/e537ab397a6c42caa5148cc0e68084fe : SUCCESS in 5m 54s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/aca506fea18f41fcb0a4f42c02ee7136 : SUCCESS in 8m 34s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/955e10c479c14f09bf8bb3c2e92aa5a2 : SUCCESS in 9m 34s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/96336493f8464c519bd72cd5374899a9 : SUCCESS in 13m 27s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/0ea4b2284c2540faa1da7d366339022a : SUCCESS in 1h 06m 35s","accounts_in_message":[],"_revision_number":10}],"current_revision_number":10,"current_revision":"aecd0f3497c5e4f1e73bf6c76a9add3db6270e27","revisions":{"14f39a3e91f50b8dd298eae4f2617cade91f2c78":{"kind":"REWORK","_number":1,"created":"2019-08-09 12:15:46.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/06/675606/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/06/675606/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/06/675606/1"}}},"commit":{"parents":[{"commit":"f49096ab7bdb9b3e5f6251b814c3fa4b8dfdfcc6","subject":"Merge \"Correct SQL docstring on _get_usages_by_provider_trees\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/f49096ab7bdb9b3e5f6251b814c3fa4b8dfdfcc6"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 11:32:49.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 12:14:34.000000000","tz":60},"subject":"WIP: Avoid duplicate ProviderSummary in _merge_candidates","message":"WIP: Avoid duplicate ProviderSummary in _merge_candidates\n\nIn testing with the nested-perfload topology, containing 7000\nproviders, _merge_candidates was returning 21000 ProviderSummary\nobjects which were not trimmed until serialization processing in\nhandlers/allocation_candidate.py.\n\nAs we now have rw_ctx.summaries_by_id, instead of pasing around\na bunch of summary objects redundantly, we can instead pass around\nids used to access that data structure.\n\n_alloc_candidates_multiple_providers and\n_alloc_candidates_single_provider now returns keys of\nrw_ctx.summaries_by_id instead of values. In neither of those methods is\na list required in either return value, so the case to list is removed.\n\nIn _merge_candidates all_psums is changed from a list to set,\nremoving duplicate ids on add(). At the end of the method, the\nsummaries which are in tree_ids are pulled from the summaries_by_id\nholding area.\n\nHOWEVER: See the FIXME added within. We\u0027re setting candidates with\ntoo much information.\n\nChange-Id: Ibccaed40f1eac9c244cf70654f6be1d72f7a6054\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/14f39a3e91f50b8dd298eae4f2617cade91f2c78"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/14f39a3e91f50b8dd298eae4f2617cade91f2c78"}]},"branch":"refs/heads/master"},"8547a8c08882f750eb150303c8417bf524115299":{"kind":"REWORK","_number":2,"created":"2019-08-09 15:31:37.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/06/675606/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/06/675606/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/06/675606/2"}}},"commit":{"parents":[{"commit":"f49096ab7bdb9b3e5f6251b814c3fa4b8dfdfcc6","subject":"Merge \"Correct SQL docstring on _get_usages_by_provider_trees\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/f49096ab7bdb9b3e5f6251b814c3fa4b8dfdfcc6"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 11:32:49.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 15:14:47.000000000","tz":60},"subject":"Avoid duplicate ProviderSummary in _merge_candidates","message":"Avoid duplicate ProviderSummary in _merge_candidates\n\nIn testing with the nested-perfload topology, containing 7000\nproviders, _merge_candidates was returning 21000 ProviderSummary\nobjects which were not trimmed until serialization processing in\nhandlers/allocation_candidate.py. That situation has been present\nat least since when we added same_subtree [1] so is not simply\nbecause of the addition of rw_ctx.summaries_by_id [2]\n\nTeasing out fixing this exposed a lot of opporutnities for\nshrinking the amount of data being inspected and processed.\n\nIn no particular order the changes are:\n\n* Return set() from _alloc_candidates_single_provider and\n  _alloc_candidates_multiple_providers instead of list. It doesn\u0027t need\n  to be a list and the cast to list costs.\n\n* Because we have rw_ctx.summaries_by_id we don\u0027t need to return\n  summaries from _get_by_one_request, they\u0027re in the rw_ctx.\n\n* The candidates provided to _merge_candidates is no longer a dict of\n  tuples of allocatation requests and summaries (_all_ the summaries).\n  It\u0027s just a dict of allocation requests.\n\n* _merge_candidates is updated to deal with this new structure of\n  input. In the process information is looked up somewhat differently:\n  we don\u0027t have summaries, but we do have the resoure providers and\n  resource classes in the allocation request and the associated\n  request resources\n\n* At the end of _merge_candidates we need to winnow the contents of\n  rw_ctx.summaries_by_id to only those that still matter.\n\n* In the process of making these fixes a bug was revealed in\n  _get_ancestors_by_one_uuid that wasn\u0027t noticed before because the\n  parent_uuid_by_rp_uuid dict was more populated than it is now\n\n[1] I7fdeac24606359d37f1a7405d22c5797840e1a9e\n[2] I43ae1118421366336b4e96738c2981e07caebec8\nChange-Id: Ibccaed40f1eac9c244cf70654f6be1d72f7a6054\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/8547a8c08882f750eb150303c8417bf524115299"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/8547a8c08882f750eb150303c8417bf524115299"}]},"branch":"refs/heads/master"},"24acc4bc6a3d3526c741fdb52ecfd826ae134326":{"kind":"REWORK","_number":3,"created":"2019-08-12 16:28:08.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/06/675606/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/06/675606/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/06/675606/3"}}},"commit":{"parents":[{"commit":"180167161623fe1264a260fb681c87de6d79c4a2","subject":"Merge \"Use expanding bindparam in get_traits_by_provider_tree\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/180167161623fe1264a260fb681c87de6d79c4a2"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 11:32:49.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-12 16:27:58.000000000","tz":60},"subject":"Avoid duplicate ProviderSummary in _merge_candidates","message":"Avoid duplicate ProviderSummary in _merge_candidates\n\nIn testing with the nested-perfload topology, containing 7000\nproviders, _merge_candidates was returning 21000 ProviderSummary\nobjects which were not trimmed until serialization processing in\nhandlers/allocation_candidate.py. That situation has been present\nat least since when we added same_subtree [1] so is not simply\nbecause of the addition of rw_ctx.summaries_by_id [2]\n\nTeasing out fixing this exposed a lot of opporutnities for\nshrinking the amount of data being inspected and processed.\n\nIn no particular order the changes are:\n\n* Return set() from _alloc_candidates_single_provider and\n  _alloc_candidates_multiple_providers instead of list. It doesn\u0027t need\n  to be a list and the cast to list costs.\n\n* Because we have rw_ctx.summaries_by_id we don\u0027t need to return\n  summaries from _get_by_one_request, they\u0027re in the rw_ctx.\n\n* The candidates provided to _merge_candidates is no longer a dict of\n  tuples of allocatation requests and summaries (_all_ the summaries).\n  It\u0027s just a dict of allocation requests.\n\n* _merge_candidates is updated to deal with this new structure of\n  input. In the process information is looked up somewhat differently:\n  we don\u0027t have summaries, but we do have the resoure providers and\n  resource classes in the allocation request and the associated\n  request resources\n\n* At the end of _merge_candidates we need to winnow the contents of\n  rw_ctx.summaries_by_id to only those that still matter.\n\n* In the process of making these fixes a bug was revealed in\n  _get_ancestors_by_one_uuid that wasn\u0027t noticed before because the\n  parent_uuid_by_rp_uuid dict was more populated than it is now\n\n[1] I7fdeac24606359d37f1a7405d22c5797840e1a9e\n[2] I43ae1118421366336b4e96738c2981e07caebec8\nChange-Id: Ibccaed40f1eac9c244cf70654f6be1d72f7a6054\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/24acc4bc6a3d3526c741fdb52ecfd826ae134326"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/24acc4bc6a3d3526c741fdb52ecfd826ae134326"}]},"branch":"refs/heads/master"},"5c994907d7f93469f71ffb0b6edb62f8362a172b":{"kind":"REWORK","_number":4,"created":"2019-08-13 14:36:44.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/06/675606/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/06/675606/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/06/675606/4"}}},"commit":{"parents":[{"commit":"1d51fe13982407c399cf5c40deab72f3b469f479","subject":"WIP: Add gabbits using a DeepNUMANetworkFixture","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/1d51fe13982407c399cf5c40deab72f3b469f479"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 11:32:49.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-13 14:33:56.000000000","tz":60},"subject":"WIP: Avoid duplicate ProviderSummary in _merge_candidates","message":"WIP: Avoid duplicate ProviderSummary in _merge_candidates\n\nIn testing with the nested-perfload topology, containing 7000\nproviders, _merge_candidates was returning 21000 ProviderSummary\nobjects which were not trimmed until serialization processing in\nhandlers/allocation_candidate.py. That situation has been present\nat least since when we added same_subtree [1] so is not simply\nbecause of the addition of rw_ctx.summaries_by_id [2]\n\nTeasing out fixing this exposed a lot of opporutnities for\nshrinking the amount of data being inspected and processed.\n\nIn no particular order the changes are:\n\n* Return set() from _alloc_candidates_single_provider and\n  _alloc_candidates_multiple_providers instead of list. It doesn\u0027t need\n  to be a list and the cast to list costs.\n\n* Because we have rw_ctx.summaries_by_id we don\u0027t need to return\n  summaries from _get_by_one_request, they\u0027re in the rw_ctx.\n\n* The candidates provided to _merge_candidates is no longer a dict of\n  tuples of allocatation requests and summaries (_all_ the summaries).\n  It\u0027s just a dict of allocation requests.\n\n* _merge_candidates is updated to deal with this new structure of\n  input. In the process information is looked up somewhat differently:\n  we don\u0027t have summaries, but we do have the resoure providers and\n  resource classes in the allocation request and the associated\n  request resources\n\n* At the end of _merge_candidates we need to winnow the contents of\n  rw_ctx.summaries_by_id to only those that still matter.\n\n* An rw_ctx.parent_uuid_by_rp_uuid is managed and updated in\n  _build_provider_summaries instead of having something local to\n  _merge_candidates. This helps to avoid any doubt about whether\n  or not all relevant providers have their parents recorded.\n\nThis is a WIP because it is too much lumped in one place.\n\n[1] I7fdeac24606359d37f1a7405d22c5797840e1a9e\n[2] I43ae1118421366336b4e96738c2981e07caebec8\nChange-Id: Ibccaed40f1eac9c244cf70654f6be1d72f7a6054\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/5c994907d7f93469f71ffb0b6edb62f8362a172b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/5c994907d7f93469f71ffb0b6edb62f8362a172b"}]},"branch":"refs/heads/master"},"a23844d6bbcba61595925cbc886c774a5fb2b68b":{"kind":"REWORK","_number":5,"created":"2019-08-13 16:11:56.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/06/675606/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/06/675606/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/06/675606/5"}}},"commit":{"parents":[{"commit":"eb5b837789afbbbf0a21f9ab022b0f118d5f2318","subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/eb5b837789afbbbf0a21f9ab022b0f118d5f2318"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 11:32:49.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-13 16:07:10.000000000","tz":60},"subject":"Avoid duplicate ProviderSummary in _merge_candidates","message":"Avoid duplicate ProviderSummary in _merge_candidates\n\nIn testing with the nested-perfload topology containing 7000\nproviders, _merge_candidates had been returning 21000 ProviderSummary\nobjects which were not trimmed until serialization processing in\nhandlers/allocation_candidate.py. That situation has been present\nat least since when we added same_subtree [1] so is not simply\nbecause of the addition of rw_ctx.summaries_by_id [2].\n\nTeasing out fixing this exposed a lot of opportunities for\nshrinking the amount of data being inspected and processed.\n\nIn no particular order the changes are:\n\n* Return set() from _alloc_candidates_single_provider and\n  _alloc_candidates_multiple_providers instead of list. It doesn\u0027t need\n  to be a list and the cast to list costs.\n\n* Because we have rw_ctx.summaries_by_id we don\u0027t need to return\n  summaries from _get_by_one_request, they\u0027re in the rw_ctx.\n\n* The candidates provided to _merge_candidates is no longer a dict of\n  tuples of allocatation requests and summaries (_all_ the summaries).\n  It\u0027s just a dict of allocation requests.\n\n* At the end of _merge_candidates we need to winnow the contents of\n  rw_ctx.summaries_by_id to only those that still matter.\n\n[1] I7fdeac24606359d37f1a7405d22c5797840e1a9e\n[2] I43ae1118421366336b4e96738c2981e07caebec8\nChange-Id: Ibccaed40f1eac9c244cf70654f6be1d72f7a6054\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/a23844d6bbcba61595925cbc886c774a5fb2b68b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/a23844d6bbcba61595925cbc886c774a5fb2b68b"}]},"branch":"refs/heads/master"},"881b2e187d82570297d91750ba1da5d34ca2a8c6":{"kind":"REWORK","_number":6,"created":"2019-08-14 08:49:52.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/06/675606/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/06/675606/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/06/675606/6"}}},"commit":{"parents":[{"commit":"34a04e939f12a2642433e6488d81c977e0d6adca","subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/34a04e939f12a2642433e6488d81c977e0d6adca"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 11:32:49.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-14 08:49:18.000000000","tz":60},"subject":"Avoid duplicate ProviderSummary in _merge_candidates","message":"Avoid duplicate ProviderSummary in _merge_candidates\n\nIn testing with the nested-perfload topology containing 7000\nproviders, _merge_candidates had been returning 21000 ProviderSummary\nobjects which were not trimmed until serialization processing in\nhandlers/allocation_candidate.py. That situation has been present\nat least since when we added same_subtree [1] so is not simply\nbecause of the addition of rw_ctx.summaries_by_id [2].\n\nTeasing out fixing this exposed a lot of opportunities for\nshrinking the amount of data being inspected and processed.\n\nIn no particular order the changes are:\n\n* Return set() from _alloc_candidates_single_provider and\n  _alloc_candidates_multiple_providers instead of list. It doesn\u0027t need\n  to be a list and the cast to list costs.\n\n* Because we have rw_ctx.summaries_by_id we don\u0027t need to return\n  summaries from _get_by_one_request, they\u0027re in the rw_ctx.\n\n* The candidates provided to _merge_candidates is no longer a dict of\n  tuples of allocatation requests and summaries (_all_ the summaries).\n  It\u0027s just a dict of allocation requests.\n\n* At the end of _merge_candidates we need to winnow the contents of\n  rw_ctx.summaries_by_id to only those that still matter.\n\n[1] I7fdeac24606359d37f1a7405d22c5797840e1a9e\n[2] I43ae1118421366336b4e96738c2981e07caebec8\nChange-Id: Ibccaed40f1eac9c244cf70654f6be1d72f7a6054\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/881b2e187d82570297d91750ba1da5d34ca2a8c6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/881b2e187d82570297d91750ba1da5d34ca2a8c6"}]},"branch":"refs/heads/master"},"2f3328400446c52cadd7f51b3928e49c7ee40bf5":{"kind":"TRIVIAL_REBASE","_number":7,"created":"2019-08-14 16:57:49.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/06/675606/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/06/675606/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/06/675606/7"}}},"commit":{"parents":[{"commit":"154e8483d4ff51afe4fd4ab2efb05af9aae30768","subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/154e8483d4ff51afe4fd4ab2efb05af9aae30768"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 11:32:49.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-14 16:57:04.000000000","tz":60},"subject":"Avoid duplicate ProviderSummary in _merge_candidates","message":"Avoid duplicate ProviderSummary in _merge_candidates\n\nIn testing with the nested-perfload topology containing 7000\nproviders, _merge_candidates had been returning 21000 ProviderSummary\nobjects which were not trimmed until serialization processing in\nhandlers/allocation_candidate.py. That situation has been present\nat least since when we added same_subtree [1] so is not simply\nbecause of the addition of rw_ctx.summaries_by_id [2].\n\nTeasing out fixing this exposed a lot of opportunities for\nshrinking the amount of data being inspected and processed.\n\nIn no particular order the changes are:\n\n* Return set() from _alloc_candidates_single_provider and\n  _alloc_candidates_multiple_providers instead of list. It doesn\u0027t need\n  to be a list and the cast to list costs.\n\n* Because we have rw_ctx.summaries_by_id we don\u0027t need to return\n  summaries from _get_by_one_request, they\u0027re in the rw_ctx.\n\n* The candidates provided to _merge_candidates is no longer a dict of\n  tuples of allocatation requests and summaries (_all_ the summaries).\n  It\u0027s just a dict of allocation requests.\n\n* At the end of _merge_candidates we need to winnow the contents of\n  rw_ctx.summaries_by_id to only those that still matter.\n\n[1] I7fdeac24606359d37f1a7405d22c5797840e1a9e\n[2] I43ae1118421366336b4e96738c2981e07caebec8\nChange-Id: Ibccaed40f1eac9c244cf70654f6be1d72f7a6054\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/2f3328400446c52cadd7f51b3928e49c7ee40bf5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/2f3328400446c52cadd7f51b3928e49c7ee40bf5"}]},"branch":"refs/heads/master"},"a3172e157a7fdbfb374cd9e994c6e94f73fa9a58":{"kind":"TRIVIAL_REBASE","_number":8,"created":"2019-08-15 09:27:04.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/06/675606/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/06/675606/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/06/675606/8"}}},"commit":{"parents":[{"commit":"cfeb3a9e768653c7b3cc1b937d2e6774bdc6d5ff","subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/cfeb3a9e768653c7b3cc1b937d2e6774bdc6d5ff"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 11:32:49.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-15 09:26:53.000000000","tz":60},"subject":"Avoid duplicate ProviderSummary in _merge_candidates","message":"Avoid duplicate ProviderSummary in _merge_candidates\n\nIn testing with the nested-perfload topology containing 7000\nproviders, _merge_candidates had been returning 21000 ProviderSummary\nobjects which were not trimmed until serialization processing in\nhandlers/allocation_candidate.py. That situation has been present\nat least since when we added same_subtree [1] so is not simply\nbecause of the addition of rw_ctx.summaries_by_id [2].\n\nTeasing out fixing this exposed a lot of opportunities for\nshrinking the amount of data being inspected and processed.\n\nIn no particular order the changes are:\n\n* Return set() from _alloc_candidates_single_provider and\n  _alloc_candidates_multiple_providers instead of list. It doesn\u0027t need\n  to be a list and the cast to list costs.\n\n* Because we have rw_ctx.summaries_by_id we don\u0027t need to return\n  summaries from _get_by_one_request, they\u0027re in the rw_ctx.\n\n* The candidates provided to _merge_candidates is no longer a dict of\n  tuples of allocatation requests and summaries (_all_ the summaries).\n  It\u0027s just a dict of allocation requests.\n\n* At the end of _merge_candidates we need to winnow the contents of\n  rw_ctx.summaries_by_id to only those that still matter.\n\n[1] I7fdeac24606359d37f1a7405d22c5797840e1a9e\n[2] I43ae1118421366336b4e96738c2981e07caebec8\nChange-Id: Ibccaed40f1eac9c244cf70654f6be1d72f7a6054\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/a3172e157a7fdbfb374cd9e994c6e94f73fa9a58"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/a3172e157a7fdbfb374cd9e994c6e94f73fa9a58"}]},"branch":"refs/heads/master"},"5e718c3a6fefed807919a8bf271e5ff36f0a5f17":{"kind":"TRIVIAL_REBASE","_number":9,"created":"2019-08-15 09:53:13.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/06/675606/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/06/675606/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/06/675606/9"}}},"commit":{"parents":[{"commit":"aa1de9cb17aff53b246bae9b29102f0358d8c576","subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/aa1de9cb17aff53b246bae9b29102f0358d8c576"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 11:32:49.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-15 09:53:03.000000000","tz":60},"subject":"Avoid duplicate ProviderSummary in _merge_candidates","message":"Avoid duplicate ProviderSummary in _merge_candidates\n\nIn testing with the nested-perfload topology containing 7000\nproviders, _merge_candidates had been returning 21000 ProviderSummary\nobjects which were not trimmed until serialization processing in\nhandlers/allocation_candidate.py. That situation has been present\nat least since when we added same_subtree [1] so is not simply\nbecause of the addition of rw_ctx.summaries_by_id [2].\n\nTeasing out fixing this exposed a lot of opportunities for\nshrinking the amount of data being inspected and processed.\n\nIn no particular order the changes are:\n\n* Return set() from _alloc_candidates_single_provider and\n  _alloc_candidates_multiple_providers instead of list. It doesn\u0027t need\n  to be a list and the cast to list costs.\n\n* Because we have rw_ctx.summaries_by_id we don\u0027t need to return\n  summaries from _get_by_one_request, they\u0027re in the rw_ctx.\n\n* The candidates provided to _merge_candidates is no longer a dict of\n  tuples of allocatation requests and summaries (_all_ the summaries).\n  It\u0027s just a dict of allocation requests.\n\n* At the end of _merge_candidates we need to winnow the contents of\n  rw_ctx.summaries_by_id to only those that still matter.\n\n[1] I7fdeac24606359d37f1a7405d22c5797840e1a9e\n[2] I43ae1118421366336b4e96738c2981e07caebec8\nChange-Id: Ibccaed40f1eac9c244cf70654f6be1d72f7a6054\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/5e718c3a6fefed807919a8bf271e5ff36f0a5f17"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/5e718c3a6fefed807919a8bf271e5ff36f0a5f17"}]},"branch":"refs/heads/master"},"aecd0f3497c5e4f1e73bf6c76a9add3db6270e27":{"kind":"TRIVIAL_REBASE","_number":10,"created":"2019-08-16 09:52:29.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/06/675606/10","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/06/675606/10","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/06/675606/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/06/675606/10"}}},"commit":{"parents":[{"commit":"5dda479f5b80e7853e3aeec9a94df0ed4bf90248","subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/5dda479f5b80e7853e3aeec9a94df0ed4bf90248"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-09 11:32:49.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-16 09:44:37.000000000","tz":60},"subject":"Avoid duplicate ProviderSummary in _merge_candidates","message":"Avoid duplicate ProviderSummary in _merge_candidates\n\nIn testing with the nested-perfload topology containing 7000\nproviders, _merge_candidates had been returning 21000 ProviderSummary\nobjects which were not trimmed until serialization processing in\nhandlers/allocation_candidate.py. That situation has been present\nat least since when we added same_subtree [1] so is not simply\nbecause of the addition of rw_ctx.summaries_by_id [2].\n\nTeasing out fixing this exposed a lot of opportunities for\nshrinking the amount of data being inspected and processed.\n\nIn no particular order the changes are:\n\n* Return set() from _alloc_candidates_single_provider and\n  _alloc_candidates_multiple_providers instead of list. It doesn\u0027t need\n  to be a list and the cast to list costs.\n\n* Because we have rw_ctx.summaries_by_id we don\u0027t need to return\n  summaries from _get_by_one_request, they\u0027re in the rw_ctx.\n\n* The candidates provided to _merge_candidates is no longer a dict of\n  tuples of allocatation requests and summaries (_all_ the summaries).\n  It\u0027s just a dict of allocation requests.\n\n* At the end of _merge_candidates we need to winnow the contents of\n  rw_ctx.summaries_by_id to only those that still matter.\n\n[1] I7fdeac24606359d37f1a7405d22c5797840e1a9e\n[2] I43ae1118421366336b4e96738c2981e07caebec8\nChange-Id: Ibccaed40f1eac9c244cf70654f6be1d72f7a6054\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/aecd0f3497c5e4f1e73bf6c76a9add3db6270e27"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/aecd0f3497c5e4f1e73bf6c76a9add3db6270e27"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
