)]}'
{"id":"openstack%2Fnova~773834","triplet_id":"openstack%2Fnova~master~Ie653e5ec69d16ae469f1f8171fee85aea754edff","project":"openstack/nova","branch":"master","topic":"bug/1837995","hashtags":[],"change_id":"Ie653e5ec69d16ae469f1f8171fee85aea754edff","subject":"Dynamically archive FK related records in archive_deleted_rows","status":"MERGED","created":"2021-02-03 05:56:18.000000000","updated":"2021-03-23 20:42:22.000000000","submitted":"2021-03-23 13:19:38.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":15,"unresolved_comment_count":7,"has_review_started":true,"submission_id":"773834-bug/1837995","meta_rev_id":"d192dc2c4a318612dae3a42c3e7c39ca18059021","_number":773834,"virtual_id_number":773834,"owner":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":32291,"name":"wushiming","email":"wushiming@yovole.com","username":"wushiming"},{"value":0,"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2021-03-23 13:19:36.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"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":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"recommended":{"_account_id":32291,"name":"wushiming","email":"wushiming@yovole.com","username":"wushiming"},"all":[{"value":1,"date":"2021-03-17 02:32:33.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":32291,"name":"wushiming","email":"wushiming@yovole.com","username":"wushiming"},{"value":2,"date":"2021-03-11 21:10:06.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":2,"date":"2021-03-23 11:05:13.000000000","_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"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":"","value":1,"default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"all":[{"value":0,"_account_id":32291,"name":"wushiming","email":"wushiming@yovole.com","username":"wushiming"},{"value":0,"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":1,"date":"2021-03-23 11:05:13.000000000","_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":32291,"name":"wushiming","email":"wushiming@yovole.com","username":"wushiming"},{"value":0,"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":9008,"name":"VMware NSX CI","username":"vmwareminesweeper","tags":["SERVICE_USER"]},{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},{"_account_id":15941,"name":"DellEMC PowerFlex CI","email":"emc.scaleio.ci@emc.com","username":"emc-scaleio-ci","tags":["SERVICE_USER"]},{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"}],"REVIEWER":[{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":32291,"name":"wushiming","email":"wushiming@yovole.com","username":"wushiming"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2021-02-03 06:32:28.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":"CC"},{"updated":"2021-02-03 07:26:32.000000000","updated_by":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"reviewer":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2021-02-03 07:30:48.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":"2021-02-03 07:31:18.000000000","updated_by":{"_account_id":15941,"name":"DellEMC PowerFlex CI","email":"emc.scaleio.ci@emc.com","username":"emc-scaleio-ci","tags":["SERVICE_USER"]},"reviewer":{"_account_id":15941,"name":"DellEMC PowerFlex CI","email":"emc.scaleio.ci@emc.com","username":"emc-scaleio-ci","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2021-02-03 08:40:55.000000000","updated_by":{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},"reviewer":{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},"state":"CC"},{"updated":"2021-02-12 23:04:48.000000000","updated_by":{"_account_id":9008,"name":"VMware NSX CI","username":"vmwareminesweeper","tags":["SERVICE_USER"]},"reviewer":{"_account_id":9008,"name":"VMware NSX CI","username":"vmwareminesweeper","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2021-03-09 18:12:32.000000000","updated_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"reviewer":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"state":"REVIEWER"},{"updated":"2021-03-17 02:32:33.000000000","updated_by":{"_account_id":32291,"name":"wushiming","email":"wushiming@yovole.com","username":"wushiming"},"reviewer":{"_account_id":32291,"name":"wushiming","email":"wushiming@yovole.com","username":"wushiming"},"state":"REVIEWER"},{"updated":"2021-03-23 11:05:13.000000000","updated_by":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"reviewer":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"state":"REVIEWER"}],"messages":[{"id":"4e3655951d99c19901ada1a7dd721ee89d8abfb4","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-02-03 05:56:18.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"6d6eeda4b066da47bd723360e565662464c7eac5","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-02-03 06:32:28.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/f816a61cdbf84024b2b225b3afeeb359 : SUCCESS in 24m 41s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/fe1107ee705e42edbb288da6dcbce764 : SUCCESS in 28m 54s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"08feab14b86bee6844aa9e620e0e00b918fe2cc6","author":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"date":"2021-02-03 07:26:32.000000000","message":"Patch Set 1:\n\nBuild failed. Test completed on IBM PowerKVM platform. For rechecking only on the IBM PowerKVM CI, add a review comment with pkvm- recheck. For contact and more information, see https://wiki.openstack.org/wiki/PowerKVM\n\n- tempest-dsvm-full-focal-py3 https://oplab9.parqtec.unicamp.br/pub/ppc64el/openstack/nova/34/773834/1/check/tempest-dsvm-full-focal-py3/7ea8c00/ : FAILURE in 1h 24m 23s","accounts_in_message":[],"_revision_number":1},{"id":"a8601da2f21447ae9b1b2490a52297a3e5a76798","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-02-03 07:30:48.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade https://zuul.opendev.org/t/openstack/build/3f8de825adec41cf963ae916c5cf0494 : SUCCESS in 1h 07m 17s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/ff021f045428495385f2613047ef6014 : SUCCESS in 1h 21m 03s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/beaff8c9d7c34cbab10a13ef90d20875 : SUCCESS in 17m 25s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/a1cee95d63bd4d83af356f28905eab86 : SUCCESS in 14m 08s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/866e108e835a4aa480a9bddd7b1f45fa : SUCCESS in 8m 44s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/d5c1ba28b75745b9b1aed3e6975dcd8e : SUCCESS in 12m 12s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/d1278481ba9d410084cd7d3e2cb67fd1 : SUCCESS in 12m 21s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/e57e84da9e764177bc719d7f0b9d72b1 : SUCCESS in 15m 12s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7fd74c37880c4223951af34b42dd56af : SUCCESS in 9m 11s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://zuul.opendev.org/t/openstack/build/dd5d14fb4e474ec89ff159c68a56cce4 : SUCCESS in 1h 26m 27s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/2a195df50c174fae821f65c5652275e9 : SUCCESS in 1h 12m 03s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/d33d46bef9294529b6d2cb69db32e9e9 : SUCCESS in 1h 12m 18s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/2a892565947c4af3b846685acdd4ff7c : SUCCESS in 51m 19s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/2175aeb23fce4fb2b58307fc734fc3c8 : SUCCESS in 1h 27m 14s\n- nova-next https://zuul.opendev.org/t/openstack/build/02c55cfc866c4bfc9fb7b04aff36f6b8 : SUCCESS in 1h 26m 37s\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/53230a6325de49c9ac1d58ab13587e1a : SUCCESS in 21m 06s\n- nova-tox-functional-py39 https://zuul.opendev.org/t/openstack/build/16217d715a2740e7a3abcd3196b40a33 : SUCCESS in 20m 13s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/fa41d523b5bf4404ab11039bdd164f78 : SUCCESS in 1h 17m 44s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/abbe7c2671a647299ed1b73e5e028ec9 : SUCCESS in 1h 15m 36s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/a32b411f13d84f9e967cd30b48b4448e : SUCCESS in 48m 06s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/4617bcd105784038adda1f9aeecb7752 : FAILURE in 54m 10s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"6e0ac82b16d44d3e3bcccf4ae1ba97194a7b2fc5","author":{"_account_id":15941,"name":"DellEMC PowerFlex CI","email":"emc.scaleio.ci@emc.com","username":"emc-scaleio-ci","tags":["SERVICE_USER"]},"date":"2021-02-03 07:31:18.000000000","message":"Patch Set 1:\n\nBuild failed.  For information on how to proceed, see https://docs.openstack.org/infra/manual/developers.html\n\n- EMC_PowerFlex_NOVA http://publiclogs.emc.com/34/773834/1/check/EMC_PowerFlex_NOVA/d9e0821/EMC_PowerFlex_NOVA/None : NOT_REGISTERED\n\nLeave a comment with \u0027run-DellEMC PowerFlex CI\u0027 to trigger a recheck. For more information about CI, please see https://wiki.openstack.org/wiki/ThirdPartySystems/DellEMC_PowerFlex_CI","accounts_in_message":[],"_revision_number":1},{"id":"b2f2876ee5f6102f7fd8c90f22cb073f8f48d737","author":{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},"date":"2021-02-03 08:40:55.000000000","message":"Patch Set 1:\n\nBuild succeeded. For checking Nova with Ceph, add a comment with run-Cloudbase Nova Ceph Hyper-V CI\n\n- nova http://cloudbase-ci.com/nova/773834/1/iscsi : SUCCESS in 2h 42m 17s","accounts_in_message":[],"_revision_number":1},{"id":"01cf89cf72b0640316c7c8cf6a608e79c20995e6","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-02-12 21:51:02.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"a01dc34d71a8926a9615790b11bb2c87dfdb85e1","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-02-12 21:51:53.000000000","message":"Uploaded patch set 3: Commit message was updated.","accounts_in_message":[],"_revision_number":3},{"id":"c6bf5a32730754b0e19801faa9cfd7fcb5de80e7","author":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"date":"2021-02-12 21:57:12.000000000","message":"Patch Set 3:\n\nBuild failed. Test completed on IBM PowerKVM platform. For rechecking only on the IBM PowerKVM CI, add a review comment with pkvm- recheck. For contact and more information, see https://wiki.openstack.org/wiki/PowerKVM\n\n- tempest-dsvm-full-focal-py3 tempest-dsvm-full-focal-py3 : NODE_FAILURE in 0s","accounts_in_message":[],"_revision_number":3},{"id":"ab66c1582777ba0759052b21f0f1eb917022db86","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-02-12 22:26:22.000000000","message":"Patch Set 3:\n\nBuild succeeded (ARM64 pipeline).\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/b86b6a617def483e82d62aaa0e6fa027 : SUCCESS in 23m 53s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/a64ae50c2e0f4f8eb2658e7779773084 : SUCCESS in 26m 09s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"77318747e2f54f40b6dbf0a93d8e45bb311bfe00","author":{"_account_id":9008,"name":"VMware NSX CI","username":"vmwareminesweeper","tags":["SERVICE_USER"]},"date":"2021-02-12 23:04:48.000000000","message":"Patch Set 3:\n\nBuild succeeded\n\n- dsvm-nova http://207.189.188.190/logs/773834/773834/3/check-not-vote/ext-nova-zuul/da4f508 : SUCCESS in 1h 09m 02s","accounts_in_message":[],"_revision_number":3},{"id":"a8145a0cf9e7f08fb765e42ba165a5c6e244bbc8","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-02-12 23:18:08.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade https://zuul.opendev.org/t/openstack/build/279b61fae00a475aa9e3aa83b2ed2ea5 : SUCCESS in 1h 17m 17s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/6445e7eff1ea4ba8b2db06c7d2bd92f5 : SUCCESS in 1h 08m 24s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/ea98742b442948a18e9e026df4a724a6 : SUCCESS in 15m 20s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/f1fe5767e8524903bc9ca46eb8ee5127 : SUCCESS in 12m 35s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/16842f0da1844d5ca94fd2a5d13733ec : SUCCESS in 7m 52s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/10b46834187544d7b5b1008dcec65bd9 : SUCCESS in 20m 19s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/d73fa5559e9e44dca59dae50538e64fd : SUCCESS in 12m 14s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/1c9e2d6ec92f4a6b97fabf072a252fc6 : SUCCESS in 13m 57s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c5ae34ddde094459a4c57a6e23ad2257 : SUCCESS in 9m 21s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://zuul.opendev.org/t/openstack/build/0b53d94a2dd44761aa1c132d5f27cbc6 : SUCCESS in 1h 03m 32s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/7938f4730bf9461996534c3a38d7bedc : SUCCESS in 1h 01m 29s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/8035c9eeeebd40c890e0dd6ccc0b98c4 : SUCCESS in 1h 24m 19s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/e64ffc4f142a49cda97e8fc1cc330827 : SUCCESS in 42m 11s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/8aafaa3a5736422996d7976d9e7b307d : SUCCESS in 1h 11m 03s\n- nova-next https://zuul.opendev.org/t/openstack/build/38a7f2192f444917a7bef457aa5d5eb8 : SUCCESS in 1h 14m 57s\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/c7dd1c406fcd48408caa5adadb08a3e9 : SUCCESS in 15m 51s\n- nova-tox-functional-py39 https://zuul.opendev.org/t/openstack/build/8a83571b377e4d5ca8f2a4a2e83ac36f : SUCCESS in 18m 22s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/b7a4873f68b9445287e00f727e890fb0 : SUCCESS in 1h 00m 14s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/ee9e57f1ae3145ebaf8aa9f980afa657 : SUCCESS in 56m 18s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/9e216446af1e4139bf51909c3d85b0ad : SUCCESS in 24m 30s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/d816f9f78c91486db92021b6b1e0be8d : SUCCESS in 42m 34s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"f69c6d557b1b2c56c4f2f1f019042f4254b19552","author":{"_account_id":15941,"name":"DellEMC PowerFlex CI","email":"emc.scaleio.ci@emc.com","username":"emc-scaleio-ci","tags":["SERVICE_USER"]},"date":"2021-02-12 23:19:56.000000000","message":"Patch Set 3:\n\nBuild failed.  For information on how to proceed, see https://docs.openstack.org/infra/manual/developers.html\n\n- EMC_PowerFlex_NOVA http://publiclogs.emc.com/34/773834/3/check/EMC_PowerFlex_NOVA/5280146/EMC_PowerFlex_NOVA/None : NOT_REGISTERED\n\nLeave a comment with \u0027run-DellEMC PowerFlex CI\u0027 to trigger a recheck. For more information about CI, please see https://wiki.openstack.org/wiki/ThirdPartySystems/DellEMC_PowerFlex_CI","accounts_in_message":[],"_revision_number":3},{"id":"c65786d4c8e546d1deb5d5db36f260f9f4881a5f","author":{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},"date":"2021-02-13 00:22:19.000000000","message":"Patch Set 3:\n\nBuild succeeded. For checking Nova with Ceph, add a comment with run-Cloudbase Nova Ceph Hyper-V CI\n\n- nova http://cloudbase-ci.com/nova/773834/3/iscsi : SUCCESS in 2h 25m 02s","accounts_in_message":[],"_revision_number":3},{"id":"db1a19d0369f10181ee0a9c23ba6fb6fa008f69f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-03-04 23:51:45.000000000","message":"Uploaded patch set 4: Patch Set 3 was rebased.","accounts_in_message":[],"_revision_number":4},{"id":"4811979e82a184119c1afddce5e934298066d131","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-05 00:25:59.000000000","message":"Patch Set 4:\n\nBuild succeeded (ARM64 pipeline).\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/ad41fbb26b444285a9dba9b8e2919576 : SUCCESS in 27m 47s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/401bba3019c547a88fc69ec04dee5935 : SUCCESS in 26m 59s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"d4f700cfbcfc878ea73a042cf3aa2fd3f6d10b6a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-05 01:20:32.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/1806f3bb32cd4345ba9fb2da3a5eace0 : SUCCESS in 1h 19m 38s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/d93b55d1882844d9ade65cabd77152ed : SUCCESS in 19m 25s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/7781151ff4a14e81914ababcc5561b79 : SUCCESS in 17m 09s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d17dc946cba34ae1b6352445b8ca2c9e : SUCCESS in 8m 34s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/93f97803848a421f9840daefe5c539f5 : SUCCESS in 14m 27s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/6b916518d02548a1bd5780628e688ab7 : SUCCESS in 13m 00s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/1be0494c6d9f44c0a31eee126dc3e7cc : SUCCESS in 13m 08s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/cf994e605f48415780325c7cf9042007 : SUCCESS in 10m 50s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://zuul.opendev.org/t/openstack/build/f4240c4581ef4f8ba6881651c83d689c : SUCCESS in 1h 12m 30s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/47ed856d249d445aa2fa8267c5d11de3 : SUCCESS in 1h 11m 22s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/3c87000c480c426dbe8ce3a87ecc88b4 : SUCCESS in 1h 13m 29s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/1fc8e206bd6d4d41871f08eff497b1c1 : SUCCESS in 50m 29s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/857a404efa12428095bd419144552198 : SUCCESS in 1h 18m 48s\n- nova-next https://zuul.opendev.org/t/openstack/build/db87b5ee26224e00a7bca4c36793e37c : SUCCESS in 1h 24m 34s\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/cbd8463463de49bc887a2f0548c865d8 : SUCCESS in 18m 13s\n- nova-tox-functional-py39 https://zuul.opendev.org/t/openstack/build/b35b1f945e32400a8c5ec94f62696d91 : SUCCESS in 20m 02s (non-voting)\n- grenade https://zuul.opendev.org/t/openstack/build/914913763bff470e950d5ab6b03e1ece : SUCCESS in 57m 21s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/e7b3b602e677402195fa128af53ee7de : SUCCESS in 50m 56s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/a0ae96dd86694e21864dff27a1a8b07b : SUCCESS in 58m 25s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/84d9af7b28654be88fffcc534228e78c : SUCCESS in 29m 48s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/115e2e78ea1e489892388eb805157232 : SUCCESS in 39m 12s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"3e0fc860ce9dc08503c65b41325314d123a5bbda","author":{"_account_id":15941,"name":"DellEMC PowerFlex CI","email":"emc.scaleio.ci@emc.com","username":"emc-scaleio-ci","tags":["SERVICE_USER"]},"date":"2021-03-05 01:21:17.000000000","message":"Patch Set 4:\n\nBuild failed.  For information on how to proceed, see https://docs.openstack.org/infra/manual/developers.html\n\n- EMC_PowerFlex_NOVA http://publiclogs.emc.com/34/773834/4/check/EMC_PowerFlex_NOVA/98f5227/EMC_PowerFlex_NOVA/None : NOT_REGISTERED\n\nLeave a comment with \u0027run-DellEMC PowerFlex CI\u0027 to trigger a recheck. For more information about CI, please see https://wiki.openstack.org/wiki/ThirdPartySystems/DellEMC_PowerFlex_CI","accounts_in_message":[],"_revision_number":4},{"id":"bdbfd32a05657bba94451956fe80f04518a084d7","author":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"date":"2021-03-05 08:30:29.000000000","message":"Patch Set 4:\n\nBuild failed. Test completed on IBM PowerKVM platform. For rechecking only on the IBM PowerKVM CI, add a review comment with pkvm- recheck. For contact and more information, see https://wiki.openstack.org/wiki/PowerKVM\n\n- tempest-dsvm-full-focal-py3 finger://zuul-v3-executor.novalocal/03189451523548e5956de7a442bda7fd : POST_FAILURE in 2h 13m 06s","accounts_in_message":[],"_revision_number":4},{"id":"e56a70e4fc03edc6e9debdd54d77edc230c816b4","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2021-03-09 18:12:32.000000000","message":"Patch Set 4: Code-Review-1\n\n(7 comments)\n\nIdea is great. I just don\u0027t like how you\u0027ve gone about it. Suggestions inline but they\u0027re just that. The main thing would be getting rid of the reliance on side effects so do that however you want, assuming you agree","accounts_in_message":[],"_revision_number":4},{"id":"7d71d64611cfe88fcfb862529c0be6e41b74d04f","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-03-09 23:44:32.000000000","message":"Patch Set 4:\n\n(4 comments)\n\nI do agree, thanks for the review!","accounts_in_message":[],"_revision_number":4},{"id":"27786185cb29f7127b243e3af4b7a104539c473e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-03-11 04:31:23.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"b29e30253524438e0a4d43192939bcd86086dc56","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-11 04:56:08.000000000","message":"Patch Set 5:\n\nBuild succeeded (ARM64 pipeline).\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/0c0cf2e3c41741039c7d3c1d323139a6 : SUCCESS in 18m 31s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/98260082d824449984558036df61b052 : SUCCESS in 19m 29s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"3b0fe5e3b13cff12fc5000b0faf5a1b2acd9823c","author":{"_account_id":9008,"name":"VMware NSX CI","username":"vmwareminesweeper","tags":["SERVICE_USER"]},"date":"2021-03-11 05:31:52.000000000","message":"Patch Set 5:\n\nBuild succeeded\n\n- dsvm-nova http://207.189.188.190/logs/773834/773834/5/check-not-vote/ext-nova-zuul/d53140f : SUCCESS in 57m 10s","accounts_in_message":[],"_revision_number":5},{"id":"f2d9fc2f5295afa3efc34fc84dce1a6142b8bc05","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-11 05:55:33.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/d689b6fea21243a9ad6cebdd2ef0c156 : SUCCESS in 1h 18m 05s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/cac282a5828442278e00fc11f1adabd3 : SUCCESS in 20m 51s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/82a7997642e84d04b8742d22924bf1d9 : SUCCESS in 17m 53s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f10b626cadfa4c89875cf86639658cef : SUCCESS in 10m 22s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/eb529a6368ce48329a5b1cd92295b979 : SUCCESS in 11m 33s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/73499d64b43e4e5fbffa05eb9c110a80 : SUCCESS in 12m 53s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/e1de9ce8019b48499ddee2b0a19b0bfd : SUCCESS in 13m 09s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a5f86c9eb53848b98917a852ecccf957 : SUCCESS in 9m 26s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://zuul.opendev.org/t/openstack/build/076815b3a0c94ecdb6f97b78d2e63b3f : SUCCESS in 57m 51s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/312acdfc008d40fe9cfdd79b323baa1e : SUCCESS in 51m 48s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/edeb33b564444827b0ee71500b596ac0 : SUCCESS in 1h 00m 22s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/db738b1e45e84ebdaa1b519d50bc17d7 : SUCCESS in 41m 04s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/34d5c726dcb9470f885de05643e3ba09 : SUCCESS in 1h 05m 24s\n- nova-next https://zuul.opendev.org/t/openstack/build/ec88d85f24d449e39161b31f97bb9003 : SUCCESS in 1h 09m 13s\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/b8d4686c6e214369946ebb5ede948f4d : SUCCESS in 17m 56s\n- nova-tox-functional-py39 https://zuul.opendev.org/t/openstack/build/56279d74c6cb4604a86d075831df102b : SUCCESS in 17m 36s (non-voting)\n- grenade https://zuul.opendev.org/t/openstack/build/7a323962d6cd4c4bbbe49add3bce8078 : SUCCESS in 48m 07s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/528ac9555917458bb90f4181c932e11c : SUCCESS in 49m 10s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/67ff6bec4ad349aca9b9a428b7222e57 : SUCCESS in 43m 40s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/8e01c071497d40bba4279a1e8ca6e889 : SUCCESS in 23m 05s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/41b68b4620d9415e9e26c03f69e5b302 : SUCCESS in 32m 30s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"27aa75b5c2b3260991ed695c5b8fd5e7dcadba74","author":{"_account_id":15941,"name":"DellEMC PowerFlex CI","email":"emc.scaleio.ci@emc.com","username":"emc-scaleio-ci","tags":["SERVICE_USER"]},"date":"2021-03-11 05:56:24.000000000","message":"Patch Set 5:\n\nBuild failed.  For information on how to proceed, see https://docs.openstack.org/infra/manual/developers.html\n\n- EMC_PowerFlex_NOVA http://publiclogs.emc.com/34/773834/5/check/EMC_PowerFlex_NOVA/5936585/EMC_PowerFlex_NOVA/None : NOT_REGISTERED\n\nLeave a comment with \u0027run-DellEMC PowerFlex CI\u0027 to trigger a recheck. For more information about CI, please see https://wiki.openstack.org/wiki/ThirdPartySystems/DellEMC_PowerFlex_CI","accounts_in_message":[],"_revision_number":5},{"id":"6c578e54fe0d494cca9688954a8a824846f52a24","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2021-03-11 09:32:31.000000000","message":"Patch Set 5: Code-Review+2\n\n(1 comment)\n\nMuch improved. Thanks! One minor issue left and then I\u0027m +2","accounts_in_message":[],"_revision_number":5},{"id":"e41966e71fcff968eca1f6cceb80a9d7912d59be","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2021-03-11 09:32:37.000000000","message":"Patch Set 5: Code-Review-1","accounts_in_message":[],"_revision_number":5},{"id":"92b817cbd93c0a5c77e5113623f20a79505fd46e","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-03-11 19:48:18.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"13c92f711e7d8c696cf92256649e53ac85a040c2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-03-11 20:06:08.000000000","message":"Uploaded patch set 6.","accounts_in_message":[],"_revision_number":6},{"id":"723d19829bdc18b1c0278cae23d868fc7c0bbc40","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-11 20:46:40.000000000","message":"Patch Set 6:\n\nBuild succeeded (ARM64 pipeline).\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/fafa3c5e17f94d30abb84fbbfd53f85d : SUCCESS in 26m 14s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/5b5ad685e373492aa484acfb1d4923f8 : SUCCESS in 28m 14s (non-voting)","accounts_in_message":[],"_revision_number":6},{"id":"d4c6798a330c7e141eb5f917268f8212a154d5d9","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2021-03-11 21:10:06.000000000","message":"Patch Set 6: Code-Review+2\n\nThanks, lgtm now","accounts_in_message":[],"_revision_number":6},{"id":"8a3a20afc811fbfcde56e84b8d88ad52d960377a","author":{"_account_id":9008,"name":"VMware NSX CI","username":"vmwareminesweeper","tags":["SERVICE_USER"]},"date":"2021-03-11 21:15:52.000000000","message":"Patch Set 6:\n\nBuild succeeded\n\n- dsvm-nova http://207.189.188.190/logs/773834/773834/6/check-not-vote/ext-nova-zuul/4643a95 : SUCCESS in 1h 03m 43s","accounts_in_message":[],"_revision_number":6},{"id":"0d10a371170a0abeca3514e15a3543805dd30d2e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-11 22:40:47.000000000","message":"Patch Set 6: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\n\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/48184d0d4f34478ba34593e3210e4673 : SUCCESS in 1h 48m 56s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/91417079b4194ad989c9a322f7c2f19b : SUCCESS in 23m 37s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/d8a0a9646821472d8bcb6983fe09103b : SUCCESS in 18m 41s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4537444715b345e88a435b610d0c8283 : SUCCESS in 9m 18s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/dd55181931c84689853e24017d674240 : SUCCESS in 17m 04s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/c2eca5e17fbd486ca8abcdd081307130 : SUCCESS in 15m 14s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/dc0e3d90127143788b66472cf23d0407 : SUCCESS in 12m 43s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3b9e2d8fc15a46c8a0054b424e0c3641 : SUCCESS in 9m 46s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://zuul.opendev.org/t/openstack/build/5c9d1d24f63b47e990d060670f02fabc : SUCCESS in 1h 16m 23s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/69030e7f4063435d922a5645e3d8c457 : SUCCESS in 1h 27m 29s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/24c656511d074f7db07c53e4a7fa2863 : SUCCESS in 1h 19m 27s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/8a3aafa71ee64f96b3ed3b9d1177bcfe : FAILURE in 1h 01m 30s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/7ddd79c030b24bf0bdcc02fac3471ad3 : SUCCESS in 1h 55m 47s\n- nova-next https://zuul.opendev.org/t/openstack/build/480a81cd414f4367b9529fb53d79b56b : SUCCESS in 1h 48m 16s\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/44b6ac4c450647788510c593644dcee6 : SUCCESS in 19m 25s\n- nova-tox-functional-py39 https://zuul.opendev.org/t/openstack/build/c38132c2e59647149facca2150cc8a7a : SUCCESS in 18m 18s (non-voting)\n- grenade https://zuul.opendev.org/t/openstack/build/aef5cd35b13840ee9a66b18a5e90582f : SUCCESS in 59m 29s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/fbb06dd45d794df08c400dd9da53897f : SUCCESS in 56m 30s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/a8fd04fbf66d409bb4b27846b9deda10 : SUCCESS in 52m 45s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/b6e4dbd26c30478ab09ed55df079662a : SUCCESS in 28m 12s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/7438e0b433be4ae996ec29f3f7656c39 : SUCCESS in 40m 59s (non-voting)","accounts_in_message":[],"_revision_number":6},{"id":"9d075d6abce8be737a915eb1511bd60c8c3346b5","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-03-11 22:46:32.000000000","message":"Patch Set 6:\n\nrecheck bug 1770211","accounts_in_message":[],"_revision_number":6},{"id":"ea7abfdc452407d44542970556fe26102b79c678","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-03-11 22:48:57.000000000","message":"Patch Set 6:\n\n\u003e Patch Set 6:\n\u003e \n\u003e recheck bug 1770211\n\nActually, more accurately it was bug 1882521. I just never find it because the bug title doesn\u0027t contain the words \"Unable to detach the device from the live config\"","accounts_in_message":[],"_revision_number":6},{"id":"66ec46fb8e415ff4ec8bb371e4da2ee59913cd01","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-11 23:23:19.000000000","message":"Patch Set 6:\n\nBuild succeeded (ARM64 pipeline).\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/798b45835361476b8d1cb3414d82cc51 : SUCCESS in 28m 34s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/c9329c0a7b2646e0a116da2026e27e43 : SUCCESS in 28m 27s (non-voting)","accounts_in_message":[],"_revision_number":6},{"id":"e336320b834086d862aa07c35231b966651288ae","author":{"_account_id":9008,"name":"VMware NSX CI","username":"vmwareminesweeper","tags":["SERVICE_USER"]},"date":"2021-03-11 23:50:04.000000000","message":"Patch Set 6:\n\nBuild succeeded\n\n- dsvm-nova http://207.189.188.190/logs/773834/773834/6/check-not-vote/ext-nova-zuul/ab2aaeb : SUCCESS in 1h 00m 56s","accounts_in_message":[],"_revision_number":6},{"id":"43e570c86792d578bb48f7682c607f3944eb01f6","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-12 00:26:10.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/48eb1a2aae7e4ce0a4a61385bc4bf0cb : SUCCESS in 1h 20m 25s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/8ad1604dda514a34a636d5da69300c99 : SUCCESS in 19m 20s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/865afbf5273945e6bcede4e6c2ce7162 : SUCCESS in 15m 47s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/bfb1a86682c0478286febe20e16481e5 : SUCCESS in 10m 34s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/1a14a4d4e5384445bbc795381485b772 : SUCCESS in 14m 10s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/b36b12e6fdb1486cbf345611fdfb5600 : SUCCESS in 14m 42s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/cfe0ee1ffa554fd2bfb7ff45c4b6a5c3 : SUCCESS in 15m 01s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/455b2fef7705432a85149a0e3370ebe5 : SUCCESS in 12m 05s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://zuul.opendev.org/t/openstack/build/77f445fb518b47bbad7a29586a3b8b98 : SUCCESS in 1h 11m 21s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/4978ab2af7da4c2fb8668e4d79dc80a5 : SUCCESS in 1h 10m 33s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/8970dd4d89f843dc81cb520f067633d0 : SUCCESS in 1h 15m 26s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/19ad80768ae6413ab2b7ac56b2efbf62 : SUCCESS in 52m 15s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/9a86c4cadc9940d094e6418bdb08a15e : SUCCESS in 1h 21m 36s\n- nova-next https://zuul.opendev.org/t/openstack/build/871e124ff7cd4eeeb7334255442409e1 : SUCCESS in 1h 36m 01s\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/4f437c6722ba44ac93b10b822a64c8d5 : SUCCESS in 19m 44s\n- nova-tox-functional-py39 https://zuul.opendev.org/t/openstack/build/e5fbed59872a4226b7f92245d4ae5fcc : SUCCESS in 18m 21s (non-voting)\n- grenade https://zuul.opendev.org/t/openstack/build/affaa42d01f24157b5aa726f8c878c0a : SUCCESS in 59m 54s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/ab096dd420534a0aa1d248c95ab42d3c : SUCCESS in 58m 20s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/fa70069f12c943b89cde72ea38b02b84 : SUCCESS in 54m 40s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/f2beb842b3c04962b006616b29743c7d : SUCCESS in 36m 09s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/e4d83f051eb74b9b8e803f180e7e3404 : SUCCESS in 43m 22s (non-voting)","accounts_in_message":[],"_revision_number":6},{"id":"c6f46589257eadb3bf934996501495b7ea5d6d90","author":{"_account_id":15941,"name":"DellEMC PowerFlex CI","email":"emc.scaleio.ci@emc.com","username":"emc-scaleio-ci","tags":["SERVICE_USER"]},"date":"2021-03-12 00:26:49.000000000","message":"Patch Set 6:\n\nBuild failed.  For information on how to proceed, see https://docs.openstack.org/infra/manual/developers.html\n\n- EMC_PowerFlex_NOVA http://publiclogs.emc.com/34/773834/6/check/EMC_PowerFlex_NOVA/0de16c0/EMC_PowerFlex_NOVA/None : NOT_REGISTERED\n\nLeave a comment with \u0027run-DellEMC PowerFlex CI\u0027 to trigger a recheck. For more information about CI, please see https://wiki.openstack.org/wiki/ThirdPartySystems/DellEMC_PowerFlex_CI","accounts_in_message":[],"_revision_number":6},{"id":"0e0aad5eb399b02a67275b2d16b133cb5070f125","author":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"date":"2021-03-12 06:23:34.000000000","message":"Patch Set 6:\n\nBuild succeeded. Test completed on IBM PowerKVM platform. For rechecking only on the IBM PowerKVM CI, add a review comment with pkvm- recheck. For contact and more information, see https://wiki.openstack.org/wiki/PowerKVM\n\n- tempest-dsvm-full-focal-py3 https://oplab9.parqtec.unicamp.br/pub/ppc64el/openstack/nova/34/773834/6/check/tempest-dsvm-full-focal-py3/32b948d/ : SUCCESS in 2h 02m 09s","accounts_in_message":[],"_revision_number":6},{"id":"a7aa278372fd65e164549402621f25d7a79d38b8","author":{"_account_id":32291,"name":"wushiming","email":"wushiming@yovole.com","username":"wushiming"},"date":"2021-03-17 02:32:33.000000000","message":"Patch Set 6: Code-Review+1","accounts_in_message":[],"_revision_number":6},{"id":"86190f1fe8606f985a104a1841f34111fa108224","author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"date":"2021-03-23 11:05:13.000000000","message":"Patch Set 6: Code-Review+2 Workflow+1\n\n(1 comment)\n\nLGTM, an awesome commit message really helped me understand the problem here thanks!\n\nI\u0027ve got a quick comment nit in the functional test but it\u0027s not worth a respin.\n\nThanks Mel!","accounts_in_message":[],"_revision_number":6},{"id":"6ea9db20deeea3521265a15a2c1449436b719210","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-23 11:06:36.000000000","message":"Patch Set 6: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":6},{"id":"a3ef887bffa2223f8c19bb8e411e8526bd3e2ce9","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-23 13:19:36.000000000","message":"Patch Set 6: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/f89460b27bd34076b45b58daf848553f : SUCCESS in 1h 13m 51s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/aa262c616a4041f29f30589e0aa08650 : SUCCESS in 13m 50s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4cb43b0dba48487d827fd09c6d6f0fe6 : SUCCESS in 8m 43s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/b9e4e49b05ac48f88071a48bdbb14662 : SUCCESS in 12m 45s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/0594e021203e478d8aa95e782c3afc74 : SUCCESS in 13m 32s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fce07e57dd624585b944927cc7962707 : SUCCESS in 10m 18s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/4b7546bcfdf94bf3952ee9edd9044338 : SUCCESS in 1h 13m 19s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/423e4229ee054053bb2fd4e50f6318e8 : SUCCESS in 49m 55s\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/e641e90b470b446ebb30b10ebf24cc55 : SUCCESS in 18m 41s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/ba91d013f727443cb42e8792d1831ed2 : SUCCESS in 1h 33m 25s\n- nova-next https://zuul.opendev.org/t/openstack/build/f6342b0a0959463686081cd52eeadc69 : SUCCESS in 1h 43m 01s\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/b19a2ecd708c4246a62fc0b12cb3939e : SUCCESS in 1h 10m 11s\n- grenade https://zuul.opendev.org/t/openstack/build/fc5a91be5b7b4720a8def0f7226cfe77 : SUCCESS in 1h 04m 08s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/ddaa2b239b654f7997cc3b16ac6bfce9 : SUCCESS in 1h 00m 38s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/02142889eb634412bd7abfbf994a55ca : SUCCESS in 59m 32s","accounts_in_message":[],"_revision_number":6},{"id":"cabb87f0ba65ea073f75abf94bfc3edf0495af23","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-23 13:19:38.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":6},{"id":"83886c61e875b50c982096fc46eec4a3378c9ca4","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-23 13:22:42.000000000","message":"Patch Set 6:\n\nBuild succeeded (promote pipeline).\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/dec0815576e64b8083b474c89515e9d2 : SUCCESS in 1m 21s","accounts_in_message":[],"_revision_number":6},{"id":"d192dc2c4a318612dae3a42c3e7c39ca18059021","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-03-23 20:42:22.000000000","message":"Patch Set 6:\n\n(1 comment)","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"becb94ae643ab4863daa564783646921b4a2b372","revisions":{"150d46c2ede74cb8025486866042f53861f64401":{"kind":"REWORK","_number":1,"created":"2021-02-03 05:56:18.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/34/773834/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/34/773834/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/34/773834/1"}}},"commit":{"parents":[{"commit":"94d4d9197bec01a514bfa9ca6a3fc4cb1e829948","subject":"Centralize sqlite FK constraint enforcement","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/94d4d9197bec01a514bfa9ca6a3fc4cb1e829948"}]}],"author":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-01-27 22:49:19.000000000","tz":0},"committer":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-02-03 05:55:56.000000000","tz":0},"subject":"WIP Dynamically archive FK related records in archive_deleted_rows","message":"WIP Dynamically archive FK related records in archive_deleted_rows\n\nCurrently, it is possible to \"partially archive\" the database by\nrunning \u0027nova-manage db archive_deleted_rows\u0027 with --max_rows or by\ninterrupting the archive process in any way. When this happens, it is\npossible to have archived a record with a foreign key relationship to a\nparent record (example: \u0027instance_extra\u0027 table record is archived while\nthe \u0027instances\u0027 table record remains).\n\nWhen an instance\u0027s records become \"split\" in this way, any API request\nthat can (1) access the deleted instance and (2) tries to access data\nthat should be in a child table (example: the embedded flavor for an\ninstance) will fail with an OrphanedObjectError and HTTP 500 to the\nuser. Examples of APIs that are affected by this are the tenant usage\nAPIs and listing of deleted instances as admin.\n\nIn the tenant usage example, the API looks at deleted instances to\ncalculate usage over a time period. It pulls deleted and non-deleted\ninstances and does instance.get_flavor() to calculate their usage. The\nflavor data is expected to be present because\nexpecteds_attrs\u003d[\u0027flavor\u0027] is used to do a join with the\n\u0027instance_extra\u0027 table and populate the instance object\u0027s flavor data.\nWhen get_flavor() is called, it tries to access the instance.flavor\nattribute (which hasn\u0027t been populated because the \u0027instance_extra\u0027\nrecord is gone). That triggers a lazy-load of the flavor which loads\nthe instance from the database again with expected_attrs\u003d[\u0027flavor\u0027]\nagain which doesn\u0027t populate instance.flavor (again) because the\n\u0027instance_extra\u0027 record is gone. Then the Instance._load_flavor code\nintentionally orphans the instance record to avoid triggering\nlazy-loads while it attempts to populate instance.flavor,\ninstance.new_flavor, and instance.old_flavor and then another lazy-load\nis triggered (because instance.flavor is still not populateds) and\nfails with OrphanedObjectError.\n\nOne way to solve this problem is to make it impossible for\narchive_deleted_records to orphan records that are related by foreign\nkey relationships. The approach is to process parent tables first\n(opposite of today where we process child tables first) and find all of\nthe tables that refer to it by foreign keys, create and collect\ninsert/delete statements for those child records, and then put them all\ntogether in a single database transaction to archive all related\nrecords \"atomically\". The idea is that if anything were to interrupt\nthe transaction (errors or other) it would roll back and keep all the\nrelated records together. Either all or archived or none are archived.\n\nThis changes the logic of the per table archive to discover tables that\nrefer to the table by foreign keys and generates insert/delete query\nstatements to execute in the same database transaction as the table\narchive itself. The extra records archived along with the table are\nadded to the rows_archived result. The existing code for \"archiving\nrecords if instance is deleted\" also has to be removed along with this\nbecause the new logic does the same thing dynamically and makes it\nobsolete. Finally, some assertions in the unit tests needs to be\nchanged or removed because it was assuming certain types of archiving\nfailures due to foreign key constraint violations that can no longer\noccur with the new dynamic logic for archiving child records.\n\nTODO: add functional test under this change to assert the\nOrphanedObjectError behavior and have this patch assert the fixed\nbehavior\n\nCloses-Bug: #1837995\n\nChange-Id: Ie653e5ec69d16ae469f1f8171fee85aea754edff\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/150d46c2ede74cb8025486866042f53861f64401"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/150d46c2ede74cb8025486866042f53861f64401"}]},"branch":"refs/heads/master"},"af9970858cc675399aff0dc342457d6ded540a1a":{"kind":"REWORK","_number":2,"created":"2021-02-12 21:51:02.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/34/773834/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/34/773834/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/34/773834/2"}}},"commit":{"parents":[{"commit":"cd99f480ce8b6fa9272b0dad81b5de0fdaa58422","subject":"Add functional test for bug 1837995","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/cd99f480ce8b6fa9272b0dad81b5de0fdaa58422"}]}],"author":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-01-27 22:49:19.000000000","tz":0},"committer":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-02-12 21:50:19.000000000","tz":0},"subject":"Dynamically archive FK related records in archive_deleted_rows","message":"Dynamically archive FK related records in archive_deleted_rows\n\nCurrently, it is possible to \"partially archive\" the database by\nrunning \u0027nova-manage db archive_deleted_rows\u0027 with --max_rows or by\ninterrupting the archive process in any way. When this happens, it is\npossible to have archived a record with a foreign key relationship to a\nparent record (example: \u0027instance_extra\u0027 table record is archived while\nthe \u0027instances\u0027 table record remains).\n\nWhen an instance\u0027s records become \"split\" in this way, any API request\nthat can (1) access the deleted instance and (2) tries to access data\nthat should be in a child table (example: the embedded flavor for an\ninstance) will fail with an OrphanedObjectError and HTTP 500 to the\nuser. Examples of APIs that are affected by this are the tenant usage\nAPIs and listing of deleted instances as admin.\n\nIn the tenant usage example, the API looks at deleted instances to\ncalculate usage over a time period. It pulls deleted and non-deleted\ninstances and does instance.get_flavor() to calculate their usage. The\nflavor data is expected to be present because\nexpecteds_attrs\u003d[\u0027flavor\u0027] is used to do a join with the\n\u0027instance_extra\u0027 table and populate the instance object\u0027s flavor data.\nWhen get_flavor() is called, it tries to access the instance.flavor\nattribute (which hasn\u0027t been populated because the \u0027instance_extra\u0027\nrecord is gone). That triggers a lazy-load of the flavor which loads\nthe instance from the database again with expected_attrs\u003d[\u0027flavor\u0027]\nagain which doesn\u0027t populate instance.flavor (again) because the\n\u0027instance_extra\u0027 record is gone. Then the Instance._load_flavor code\nintentionally orphans the instance record to avoid triggering\nlazy-loads while it attempts to populate instance.flavor,\ninstance.new_flavor, and instance.old_flavor and then another lazy-load\nis triggered (because instance.flavor is still not populateds) and\nfails with OrphanedObjectError.\n\nOne way to solve this problem is to make it impossible for\narchive_deleted_records to orphan records that are related by foreign\nkey relationships. The approach is to process parent tables first\n(opposite of today where we process child tables first) and find all of\nthe tables that refer to it by foreign keys, create and collect\ninsert/delete statements for those child records, and then put them all\ntogether in a single database transaction to archive all related\nrecords \"atomically\". The idea is that if anything were to interrupt\nthe transaction (errors or other) it would roll back and keep all the\nrelated records together. Either all or archived or none are archived.\n\nThis changes the logic of the per table archive to discover tables that\nrefer to the table by foreign keys and generates insert/delete query\nstatements to execute in the same database transaction as the table\narchive itself. The extra records archived along with the table are\nadded to the rows_archived result. The existing code for \"archiving\nrecords if instance is deleted\" also has to be removed along with this\nbecause the new logic does the same thing dynamically and makes it\nobsolete. Finally, some assertions in the unit tests needs to be\nchanged or removed because it was assuming certain types of archiving\nfailures due to foreign key constraint violations that can no longer\noccur with the new dynamic logic for archiving child records.\n\nTODO: add functional test under this change to assert the\nOrphanedObjectError behavior and have this patch assert the fixed\nbehavior\n\nCloses-Bug: #1837995\n\nChange-Id: Ie653e5ec69d16ae469f1f8171fee85aea754edff\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/af9970858cc675399aff0dc342457d6ded540a1a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/af9970858cc675399aff0dc342457d6ded540a1a"}]},"branch":"refs/heads/master"},"4b863d1d275859b9e8344a9af8418a453a8eacbc":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2021-02-12 21:51:53.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/34/773834/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/34/773834/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/34/773834/3"}}},"commit":{"parents":[{"commit":"cd99f480ce8b6fa9272b0dad81b5de0fdaa58422","subject":"Add functional test for bug 1837995","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/cd99f480ce8b6fa9272b0dad81b5de0fdaa58422"}]}],"author":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-01-27 22:49:19.000000000","tz":0},"committer":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-02-12 21:51:34.000000000","tz":0},"subject":"Dynamically archive FK related records in archive_deleted_rows","message":"Dynamically archive FK related records in archive_deleted_rows\n\nCurrently, it is possible to \"partially archive\" the database by\nrunning \u0027nova-manage db archive_deleted_rows\u0027 with --max_rows or by\ninterrupting the archive process in any way. When this happens, it is\npossible to have archived a record with a foreign key relationship to a\nparent record (example: \u0027instance_extra\u0027 table record is archived while\nthe \u0027instances\u0027 table record remains).\n\nWhen an instance\u0027s records become \"split\" in this way, any API request\nthat can (1) access the deleted instance and (2) tries to access data\nthat should be in a child table (example: the embedded flavor for an\ninstance) will fail with an OrphanedObjectError and HTTP 500 to the\nuser. Examples of APIs that are affected by this are the tenant usage\nAPIs and listing of deleted instances as admin.\n\nIn the tenant usage example, the API looks at deleted instances to\ncalculate usage over a time period. It pulls deleted and non-deleted\ninstances and does instance.get_flavor() to calculate their usage. The\nflavor data is expected to be present because\nexpecteds_attrs\u003d[\u0027flavor\u0027] is used to do a join with the\n\u0027instance_extra\u0027 table and populate the instance object\u0027s flavor data.\nWhen get_flavor() is called, it tries to access the instance.flavor\nattribute (which hasn\u0027t been populated because the \u0027instance_extra\u0027\nrecord is gone). That triggers a lazy-load of the flavor which loads\nthe instance from the database again with expected_attrs\u003d[\u0027flavor\u0027]\nagain which doesn\u0027t populate instance.flavor (again) because the\n\u0027instance_extra\u0027 record is gone. Then the Instance._load_flavor code\nintentionally orphans the instance record to avoid triggering\nlazy-loads while it attempts to populate instance.flavor,\ninstance.new_flavor, and instance.old_flavor and then another lazy-load\nis triggered (because instance.flavor is still not populateds) and\nfails with OrphanedObjectError.\n\nOne way to solve this problem is to make it impossible for\narchive_deleted_records to orphan records that are related by foreign\nkey relationships. The approach is to process parent tables first\n(opposite of today where we process child tables first) and find all of\nthe tables that refer to it by foreign keys, create and collect\ninsert/delete statements for those child records, and then put them all\ntogether in a single database transaction to archive all related\nrecords \"atomically\". The idea is that if anything were to interrupt\nthe transaction (errors or other) it would roll back and keep all the\nrelated records together. Either all or archived or none are archived.\n\nThis changes the logic of the per table archive to discover tables that\nrefer to the table by foreign keys and generates insert/delete query\nstatements to execute in the same database transaction as the table\narchive itself. The extra records archived along with the table are\nadded to the rows_archived result. The existing code for \"archiving\nrecords if instance is deleted\" also has to be removed along with this\nbecause the new logic does the same thing dynamically and makes it\nobsolete. Finally, some assertions in the unit tests needs to be\nchanged or removed because it was assuming certain types of archiving\nfailures due to foreign key constraint violations that can no longer\noccur with the new dynamic logic for archiving child records.\n\nCloses-Bug: #1837995\n\nChange-Id: Ie653e5ec69d16ae469f1f8171fee85aea754edff\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/4b863d1d275859b9e8344a9af8418a453a8eacbc"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/4b863d1d275859b9e8344a9af8418a453a8eacbc"}]},"branch":"refs/heads/master"},"eea366e39593598f01858c7d3802a4e9ea3f247c":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2021-03-04 23:51:45.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/34/773834/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/34/773834/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/34/773834/4"}}},"commit":{"parents":[{"commit":"3d4e53f832792cc49001f1588164e28b84c16d7a","subject":"Add functional test for bug 1837995","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/3d4e53f832792cc49001f1588164e28b84c16d7a"}]}],"author":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-01-27 22:49:19.000000000","tz":0},"committer":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-03-04 23:51:31.000000000","tz":0},"subject":"Dynamically archive FK related records in archive_deleted_rows","message":"Dynamically archive FK related records in archive_deleted_rows\n\nCurrently, it is possible to \"partially archive\" the database by\nrunning \u0027nova-manage db archive_deleted_rows\u0027 with --max_rows or by\ninterrupting the archive process in any way. When this happens, it is\npossible to have archived a record with a foreign key relationship to a\nparent record (example: \u0027instance_extra\u0027 table record is archived while\nthe \u0027instances\u0027 table record remains).\n\nWhen an instance\u0027s records become \"split\" in this way, any API request\nthat can (1) access the deleted instance and (2) tries to access data\nthat should be in a child table (example: the embedded flavor for an\ninstance) will fail with an OrphanedObjectError and HTTP 500 to the\nuser. Examples of APIs that are affected by this are the tenant usage\nAPIs and listing of deleted instances as admin.\n\nIn the tenant usage example, the API looks at deleted instances to\ncalculate usage over a time period. It pulls deleted and non-deleted\ninstances and does instance.get_flavor() to calculate their usage. The\nflavor data is expected to be present because\nexpecteds_attrs\u003d[\u0027flavor\u0027] is used to do a join with the\n\u0027instance_extra\u0027 table and populate the instance object\u0027s flavor data.\nWhen get_flavor() is called, it tries to access the instance.flavor\nattribute (which hasn\u0027t been populated because the \u0027instance_extra\u0027\nrecord is gone). That triggers a lazy-load of the flavor which loads\nthe instance from the database again with expected_attrs\u003d[\u0027flavor\u0027]\nagain which doesn\u0027t populate instance.flavor (again) because the\n\u0027instance_extra\u0027 record is gone. Then the Instance._load_flavor code\nintentionally orphans the instance record to avoid triggering\nlazy-loads while it attempts to populate instance.flavor,\ninstance.new_flavor, and instance.old_flavor and then another lazy-load\nis triggered (because instance.flavor is still not populateds) and\nfails with OrphanedObjectError.\n\nOne way to solve this problem is to make it impossible for\narchive_deleted_records to orphan records that are related by foreign\nkey relationships. The approach is to process parent tables first\n(opposite of today where we process child tables first) and find all of\nthe tables that refer to it by foreign keys, create and collect\ninsert/delete statements for those child records, and then put them all\ntogether in a single database transaction to archive all related\nrecords \"atomically\". The idea is that if anything were to interrupt\nthe transaction (errors or other) it would roll back and keep all the\nrelated records together. Either all or archived or none are archived.\n\nThis changes the logic of the per table archive to discover tables that\nrefer to the table by foreign keys and generates insert/delete query\nstatements to execute in the same database transaction as the table\narchive itself. The extra records archived along with the table are\nadded to the rows_archived result. The existing code for \"archiving\nrecords if instance is deleted\" also has to be removed along with this\nbecause the new logic does the same thing dynamically and makes it\nobsolete. Finally, some assertions in the unit tests needs to be\nchanged or removed because it was assuming certain types of archiving\nfailures due to foreign key constraint violations that can no longer\noccur with the new dynamic logic for archiving child records.\n\nCloses-Bug: #1837995\n\nChange-Id: Ie653e5ec69d16ae469f1f8171fee85aea754edff\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/eea366e39593598f01858c7d3802a4e9ea3f247c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/eea366e39593598f01858c7d3802a4e9ea3f247c"}]},"branch":"refs/heads/master"},"6d6093420e36fc85fd45f3cd73d6ef7f1eca64ac":{"kind":"REWORK","_number":5,"created":"2021-03-11 04:31:23.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/34/773834/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/34/773834/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/34/773834/5"}}},"commit":{"parents":[{"commit":"c5f2f71b2f13384e65a5edd2cff8046b0ed374e9","subject":"Merge \"libvirt: Add missing type hints\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/c5f2f71b2f13384e65a5edd2cff8046b0ed374e9"}]}],"author":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-01-27 22:49:19.000000000","tz":0},"committer":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-03-11 04:30:22.000000000","tz":0},"subject":"Dynamically archive FK related records in archive_deleted_rows","message":"Dynamically archive FK related records in archive_deleted_rows\n\nCurrently, it is possible to \"partially archive\" the database by\nrunning \u0027nova-manage db archive_deleted_rows\u0027 with --max_rows or by\ninterrupting the archive process in any way. When this happens, it is\npossible to have archived a record with a foreign key relationship to a\nparent record (example: \u0027instance_extra\u0027 table record is archived while\nthe \u0027instances\u0027 table record remains).\n\nWhen an instance\u0027s records become \"split\" in this way, any API request\nthat can (1) access the deleted instance and (2) tries to access data\nthat should be in a child table (example: the embedded flavor for an\ninstance) will fail with an OrphanedObjectError and HTTP 500 to the\nuser. Examples of APIs that are affected by this are the tenant usage\nAPIs and listing of deleted instances as admin.\n\nIn the tenant usage example, the API looks at deleted instances to\ncalculate usage over a time period. It pulls deleted and non-deleted\ninstances and does instance.get_flavor() to calculate their usage. The\nflavor data is expected to be present because\nexpecteds_attrs\u003d[\u0027flavor\u0027] is used to do a join with the\n\u0027instance_extra\u0027 table and populate the instance object\u0027s flavor data.\nWhen get_flavor() is called, it tries to access the instance.flavor\nattribute (which hasn\u0027t been populated because the \u0027instance_extra\u0027\nrecord is gone). That triggers a lazy-load of the flavor which loads\nthe instance from the database again with expected_attrs\u003d[\u0027flavor\u0027]\nagain which doesn\u0027t populate instance.flavor (again) because the\n\u0027instance_extra\u0027 record is gone. Then the Instance._load_flavor code\nintentionally orphans the instance record to avoid triggering\nlazy-loads while it attempts to populate instance.flavor,\ninstance.new_flavor, and instance.old_flavor. Finally, another\nlazy-load is triggered (because instance.flavor is still not populated)\nand fails with OrphanedObjectError.\n\nOne way to solve this problem is to make it impossible for\narchive_deleted_records to orphan records that are related by foreign\nkey relationships. The approach is to process parent tables first\n(opposite of today where we process child tables first) and find all of\nthe tables that refer to it by foreign keys, create and collect\ninsert/delete statements for those child records, and then put them all\ntogether in a single database transaction to archive all related\nrecords \"atomically\". The idea is that if anything were to interrupt\nthe transaction (errors or other) it would roll back and keep all the\nrelated records together. Either all or archived or none are archived.\n\nThis changes the logic of the per table archive to discover tables that\nrefer to the table by foreign keys and generates insert/delete query\nstatements to execute in the same database transaction as the table\narchive itself. The extra records archived along with the table are\nadded to the rows_archived result. The existing code for \"archiving\nrecords if instance is deleted\" also has to be removed along with this\nbecause the new logic does the same thing dynamically and makes it\nobsolete. Finally, some assertions in the unit tests need to be changed\nor removed because they were assuming certain types of archiving\nfailures due to foreign key constraint violations that can no longer\noccur with the new dynamic logic for archiving child records.\n\nCloses-Bug: #1837995\n\nChange-Id: Ie653e5ec69d16ae469f1f8171fee85aea754edff\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/6d6093420e36fc85fd45f3cd73d6ef7f1eca64ac"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/6d6093420e36fc85fd45f3cd73d6ef7f1eca64ac"}]},"branch":"refs/heads/master"},"becb94ae643ab4863daa564783646921b4a2b372":{"kind":"REWORK","_number":6,"created":"2021-03-11 20:06:08.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/34/773834/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/34/773834/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/34/773834/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/34/773834/6"}}},"commit":{"parents":[{"commit":"c5f2f71b2f13384e65a5edd2cff8046b0ed374e9","subject":"Merge \"libvirt: Add missing type hints\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/c5f2f71b2f13384e65a5edd2cff8046b0ed374e9"}]}],"author":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-01-27 22:49:19.000000000","tz":0},"committer":{"name":"melanie witt","email":"melwittt@gmail.com","date":"2021-03-11 20:05:44.000000000","tz":0},"subject":"Dynamically archive FK related records in archive_deleted_rows","message":"Dynamically archive FK related records in archive_deleted_rows\n\nCurrently, it is possible to \"partially archive\" the database by\nrunning \u0027nova-manage db archive_deleted_rows\u0027 with --max_rows or by\ninterrupting the archive process in any way. When this happens, it is\npossible to have archived a record with a foreign key relationship to a\nparent record (example: \u0027instance_extra\u0027 table record is archived while\nthe \u0027instances\u0027 table record remains).\n\nWhen an instance\u0027s records become \"split\" in this way, any API request\nthat can (1) access the deleted instance and (2) tries to access data\nthat should be in a child table (example: the embedded flavor for an\ninstance) will fail with an OrphanedObjectError and HTTP 500 to the\nuser. Examples of APIs that are affected by this are the tenant usage\nAPIs and listing of deleted instances as admin.\n\nIn the tenant usage example, the API looks at deleted instances to\ncalculate usage over a time period. It pulls deleted and non-deleted\ninstances and does instance.get_flavor() to calculate their usage. The\nflavor data is expected to be present because\nexpecteds_attrs\u003d[\u0027flavor\u0027] is used to do a join with the\n\u0027instance_extra\u0027 table and populate the instance object\u0027s flavor data.\nWhen get_flavor() is called, it tries to access the instance.flavor\nattribute (which hasn\u0027t been populated because the \u0027instance_extra\u0027\nrecord is gone). That triggers a lazy-load of the flavor which loads\nthe instance from the database again with expected_attrs\u003d[\u0027flavor\u0027]\nagain which doesn\u0027t populate instance.flavor (again) because the\n\u0027instance_extra\u0027 record is gone. Then the Instance._load_flavor code\nintentionally orphans the instance record to avoid triggering\nlazy-loads while it attempts to populate instance.flavor,\ninstance.new_flavor, and instance.old_flavor. Finally, another\nlazy-load is triggered (because instance.flavor is still not populated)\nand fails with OrphanedObjectError.\n\nOne way to solve this problem is to make it impossible for\narchive_deleted_records to orphan records that are related by foreign\nkey relationships. The approach is to process parent tables first\n(opposite of today where we process child tables first) and find all of\nthe tables that refer to it by foreign keys, create and collect\ninsert/delete statements for those child records, and then put them all\ntogether in a single database transaction to archive all related\nrecords \"atomically\". The idea is that if anything were to interrupt\nthe transaction (errors or other) it would roll back and keep all the\nrelated records together. Either all or archived or none are archived.\n\nThis changes the logic of the per table archive to discover tables that\nrefer to the table by foreign keys and generates insert/delete query\nstatements to execute in the same database transaction as the table\narchive itself. The extra records archived along with the table are\nadded to the rows_archived result. The existing code for \"archiving\nrecords if instance is deleted\" also has to be removed along with this\nbecause the new logic does the same thing dynamically and makes it\nobsolete. Finally, some assertions in the unit tests need to be changed\nor removed because they were assuming certain types of archiving\nfailures due to foreign key constraint violations that can no longer\noccur with the new dynamic logic for archiving child records.\n\nCloses-Bug: #1837995\n\nChange-Id: Ie653e5ec69d16ae469f1f8171fee85aea754edff\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/becb94ae643ab4863daa564783646921b4a2b372"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/becb94ae643ab4863daa564783646921b4a2b372"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"status":"CLOSED","labels":[{"label":"Verified","status":"OK","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"}},{"label":"Workflow","status":"OK","applied_by":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"}}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Workflow\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}}]}
