)]}'
{"id":"openstack%2Fnova~785069","triplet_id":"openstack%2Fnova~stable%2Fvictoria~Ie653e5ec69d16ae469f1f8171fee85aea754edff","project":"openstack/nova","branch":"stable/victoria","topic":"bug/1837995","hashtags":[],"change_id":"Ie653e5ec69d16ae469f1f8171fee85aea754edff","subject":"Dynamically archive FK related records in archive_deleted_rows","status":"MERGED","created":"2021-04-06 22:49:20.000000000","updated":"2021-04-27 18:25:13.000000000","submitted":"2021-04-27 18:23:29.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":1,"unresolved_comment_count":1,"has_review_started":true,"submission_id":"785069-bug/1837995","meta_rev_id":"990d2ccd0420a66de5f0708032c9adfb8d6e378e","_number":785069,"virtual_id_number":785069,"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":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},{"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-04-27 18:23:28.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":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"all":[{"value":2,"date":"2021-04-27 16:32:01.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},{"value":1,"date":"2021-04-27 16:45:42.000000000","permitted_voting_range":{"min":1,"max":2},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":2,"date":"2021-04-08 19:33:49.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":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"all":[{"value":1,"date":"2021-04-27 16:32:01.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},{"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":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},{"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":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","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":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2021-04-06 23:24: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-04-07 00:39:34.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-04-07 01:35:19.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-04-08 19:33:49.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"},{"updated":"2021-04-27 16:32:01.000000000","updated_by":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"reviewer":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"state":"REVIEWER"},{"updated":"2021-04-27 16:45:42.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"}],"messages":[{"id":"82ce1121a7fc5342309a2c3fdf1893a0002c32f2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-04-06 22:49:20.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"d2e6d5a4eb705f700f38284c6707a5f8394c9e01","author":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"date":"2021-04-06 23:24: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 tempest-dsvm-full-focal-py3 : NODE_FAILURE in 0s","accounts_in_message":[],"_revision_number":1},{"id":"320b250a37655bad1253b3a10350eb9b4bc64b94","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-04-07 00:39:34.000000000","message":"Patch Set 1: Verified-1\n\n(2 comments)\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/ec4d14e71aa94f88b25cbac80b43f5f5 : SUCCESS in 1h 43m 12s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/cedff86ed50940b89b917dc62926dd00 : FAILURE in 15m 14s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/dbe5d8d42ba749efad185fd88d00f042 : FAILURE in 13m 40s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2eb380a7be2748eea8c6f1fc29a12417 : FAILURE in 8m 39s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/55534ac10df34fa49454e194c2c0b278 : FAILURE in 11m 31s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/97f7277cf4ad437ab4a33f8f34aadc74 : FAILURE in 12m 54s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6ba86e0d0c39438bb5ab16100814ffec : SUCCESS in 10m 55s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://zuul.opendev.org/t/openstack/build/33dd7425ca5947b5b79a3ff6fd16efe4 : SUCCESS in 1h 29m 20s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/85ae8c2f61494c568becda2f3fcde046 : SUCCESS in 1h 17m 13s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/438c447e787a4a9184a3acb0ed8c32be : SUCCESS in 1h 22m 16s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/185d4408c0dd4ad2905d601ff1a0722d : FAILURE in 59m 44s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/b6d22f8b7b2a41d5b7f8c9e8e9487f46 : SUCCESS in 1h 43m 52s\n- nova-next https://zuul.opendev.org/t/openstack/build/2e65cd7fe1344ab4874f8dbcf8f79fcd : POST_FAILURE in 32m 34s\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/a806182dcb074b77b18e83037433a8d6 : FAILURE in 13m 49s\n- grenade https://zuul.opendev.org/t/openstack/build/cf99c3890367485bbebb596952b8a186 : SUCCESS in 59m 09s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/a6af2eae1d334381af5cdbf11966a58c : SUCCESS in 54m 33s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/9f60e70dd55844718cd779c4b007c7f2 : SUCCESS in 52m 35s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/16b51d4057a245f980d2aa355948f90b : FAILURE in 26m 27s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/a1a6daef10774905b14793b38b8c62e2 : SUCCESS in 40m 53s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"e1e06605fb80c9349a71ec4ee9297996d883e251","author":{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},"date":"2021-04-07 01:35:19.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/785069/1/iscsi : SUCCESS in 2h 38m 08s","accounts_in_message":[],"_revision_number":1},{"id":"dcc72804ebe5fa748f72d44efbde2c329327660f","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-04-07 15:13:18.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"5f496b64bfb08a6a361b6b2f50eb6531edd25dce","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-04-07 15:56:03.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"d58bd1ecf6ba085268fb1fbc510f46d065a70202","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2021-04-07 15:57:33.000000000","message":"Uploaded patch set 3: Commit message was updated.","accounts_in_message":[],"_revision_number":3},{"id":"0f28be10b8803feaed915e718ca8e0dbb6b6922c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-04-07 18:07:26.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/e532f7e6f57b478e85917b87b787d80b : SUCCESS in 1h 28m 21s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/710a3e58d1ed4b249b6ed83038d96df8 : SUCCESS in 25m 18s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/5649140be15245d197a1671a58fc6924 : SUCCESS in 15m 44s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d0757c1cc8bd4970ade7653936be8b78 : SUCCESS in 12m 52s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/a1467f609d7b4830a9edfccc36072b95 : SUCCESS in 13m 41s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/b93f4698c9d8454da16bfbe9fa76c19c : SUCCESS in 13m 31s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bbf832f73d144caabf76b08807b5dba3 : SUCCESS in 13m 10s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://zuul.opendev.org/t/openstack/build/be72ac4a66e84135858f5873175b6910 : SUCCESS in 1h 16m 08s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/e0148ba0e0ed4c58abc6419a5dbdd2d3 : SUCCESS in 1h 22m 32s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/ec612ac40b3e4c2b9918a898ad870c9b : SUCCESS in 1h 17m 47s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/7ecfcb8c7e7d4fe8b57723f00cb1c532 : SUCCESS in 53m 12s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/cb58e1e6645e49e1b89b0aa9fe90daf7 : SUCCESS in 1h 54m 54s\n- nova-next https://zuul.opendev.org/t/openstack/build/de3fa1f2065f49f4a5e533ddab06b295 : SUCCESS in 1h 46m 49s\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/d718925b90a249cd94ac75695788032f : SUCCESS in 20m 40s\n- grenade https://zuul.opendev.org/t/openstack/build/c22afaebc36144c4a62fefc2386e6611 : SUCCESS in 1h 06m 48s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/d36246b85e594752a73232ed3c3ad903 : SUCCESS in 1h 03m 57s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/c5ab3c937c704771b1b5fc1ad1b43dca : SUCCESS in 1h 07m 37s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/09ef7ed1c471464fae0db71781a43387 : SUCCESS in 42m 51s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/97934319b13040a383441a84be56c6d5 : SUCCESS in 46m 09s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"88b21b1fc8ee2bb4d9f912a5e5dd866ed3937012","author":{"_account_id":26515,"name":"Cloudbase Nova Hyper-V CI","email":"nova_hyperv_ci@cloudbasesolutions.com","username":"nova_hyperv_ci"},"date":"2021-04-07 18:50:35.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/785069/3/iscsi : SUCCESS in 2h 49m 58s","accounts_in_message":[],"_revision_number":3},{"id":"852a6b718edb245d9803dab8928f7a06be9ce4f9","author":{"_account_id":10118,"name":"IBM PowerKVM CI","email":"kvmpower@linux.vnet.ibm.com","username":"powerkvm","tags":["SERVICE_USER"]},"date":"2021-04-07 19:28:29.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 finger://zuul-v3-executor.novalocal/dfe0cec30c954919a869efe1565f5d1b : RETRY_LIMIT in 51s","accounts_in_message":[],"_revision_number":3},{"id":"005acf6d7cb76aae46e1986621982c0321ae9a81","author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"date":"2021-04-08 19:33:49.000000000","message":"Patch Set 3: Code-Review+2\n\nLGTM","accounts_in_message":[],"_revision_number":3},{"id":"51b55ce59dfb71942ab310e0cf3ca4b203120303","author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"date":"2021-04-27 16:32:01.000000000","message":"Patch Set 3: Code-Review+2 Workflow+1\n\nI was hesitant with this patch (as it feels a bit like a feature to me :)), but seems correct, and with the two parent (test-only) patch the testing looks complete. Plus it\u0027s there on master for a month now (stable/wallaby was cut 2 weeks ago, so this is part of Wallaby, too). Conflict is noted. LGTM.","accounts_in_message":[],"_revision_number":3},{"id":"4ab605ab125ecc5e8281cd4355de9c068bd41faa","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-04-27 16:36:44.000000000","message":"Patch Set 3: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":3},{"id":"0606c7fc7051cd4dc8ddd7bac8f29627dbdbee85","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2021-04-27 16:45:42.000000000","message":"Patch Set 3: Code-Review+1\n\nAgree that this is a viable backport. The previous behavior was broken by design. Change itself is good too. Minimal conflicts with those that exist documented.","accounts_in_message":[],"_revision_number":3},{"id":"b8929ec070fe16ae54390d8e416bc5dd8e9e6bfc","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-04-27 18:23:28.000000000","message":"Patch Set 3: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/5e72584c910b444883e49f91ebb47748 : SUCCESS in 1h 27m 18s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/59d5b0d29abf43f09d780bc8bcd83bc1 : SUCCESS in 16m 51s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a0afe408d6b94c19bbee1b1e7b6ef0b9 : SUCCESS in 8m 45s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/eefb0bd2a2d44a8287f1ef55b159a277 : SUCCESS in 11m 41s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/98d3432561fe4c9ca11966927c8a7398 : SUCCESS in 12m 51s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8a99cc87ed6c41d4802d484b8ff3bb15 : SUCCESS in 11m 19s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/f6ed432de3264ba68841402126b0613e : SUCCESS in 1h 13m 21s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/ff56f0cc89fc450c98ce2a7c9a305841 : SUCCESS in 54m 34s\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/685c92f1aa9e4d1abb9288370e2b941d : SUCCESS in 20m 38s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/846d59f3f2e948faa0b1ceb09417df97 : SUCCESS in 1h 34m 54s\n- nova-next https://zuul.opendev.org/t/openstack/build/a5a03ecaed324e3aa53907ac591a26ae : SUCCESS in 1h 33m 41s\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/5c8c652a35f544d59d5bc93dc8705f94 : SUCCESS in 1h 23m 36s\n- grenade https://zuul.opendev.org/t/openstack/build/ef03d757bc194011a944f5a0bc556a4c : SUCCESS in 1h 05m 38s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/ebef11017bf948c4998563fefe065dae : SUCCESS in 1h 04m 59s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/43071af7a9c34770a76c9bdfc107922d : SUCCESS in 54m 24s","accounts_in_message":[],"_revision_number":3},{"id":"a2cc528f348109646af8508ed313f1d639aaf8fa","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-04-27 18:23:29.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":3},{"id":"990d2ccd0420a66de5f0708032c9adfb8d6e378e","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-04-27 18:25:13.000000000","message":"Patch Set 3:\n\nBuild succeeded (promote pipeline).\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4e950edc33ba4e6e9d33413fe3e40b94 : SUCCESS in 1m 10s","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"7b4f4796478941eafa9c0997f7ef03293c442d94","revisions":{"513ed1dd3c60954dc467a64fdfd849a989cae56c":{"kind":"REWORK","_number":1,"created":"2021-04-06 22:49:20.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/69/785069/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/69/785069/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/69/785069/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/69/785069/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/69/785069/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/69/785069/1"}}},"commit":{"parents":[{"commit":"21241b38dd4bc2c74a69aed489ada5c611395920","subject":"Add functional test for bug 1837995","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/21241b38dd4bc2c74a69aed489ada5c611395920"}]}],"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-04-06 22:47:05.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\nConflicts:\n    nova/db/sqlalchemy/api.py\n\nNOTE(melwitt): The conflict is because change\nI23bb9e539d08f5c6202909054c2dd49b6c7a7a0e (Remove six.text_type (1/2))\nis not in Victoria.\n\nChange-Id: Ie653e5ec69d16ae469f1f8171fee85aea754edff\n(cherry picked from commit becb94ae643ab4863daa564783646921b4a2b372)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/513ed1dd3c60954dc467a64fdfd849a989cae56c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/513ed1dd3c60954dc467a64fdfd849a989cae56c"}]},"branch":"refs/heads/stable/victoria"},"a25ff8d271d3eb3860e6e808924d24048c2a66f2":{"kind":"REWORK","_number":2,"created":"2021-04-07 15:56:03.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/69/785069/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/69/785069/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/69/785069/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/69/785069/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/69/785069/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/69/785069/2"}}},"commit":{"parents":[{"commit":"21241b38dd4bc2c74a69aed489ada5c611395920","subject":"Add functional test for bug 1837995","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/21241b38dd4bc2c74a69aed489ada5c611395920"}]}],"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-04-07 15:54:53.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\nConflicts:\n    nova/db/sqlalchemy/api.py\n\nNOTE(melwitt): The conflict is because change\nI23bb9e539d08f5c6202909054c2dd49b6c7a7a0e (Remove six.text_type (1/2))\n\nChange-Id: Ie653e5ec69d16ae469f1f8171fee85aea754edff\n(cherry picked from commit becb94ae643ab4863daa564783646921b4a2b372)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/a25ff8d271d3eb3860e6e808924d24048c2a66f2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/a25ff8d271d3eb3860e6e808924d24048c2a66f2"}]},"branch":"refs/heads/stable/victoria"},"7b4f4796478941eafa9c0997f7ef03293c442d94":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2021-04-07 15:57:33.000000000","uploader":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"ref":"refs/changes/69/785069/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/69/785069/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/69/785069/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/69/785069/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/69/785069/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/69/785069/3"}}},"commit":{"parents":[{"commit":"21241b38dd4bc2c74a69aed489ada5c611395920","subject":"Add functional test for bug 1837995","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/21241b38dd4bc2c74a69aed489ada5c611395920"}]}],"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-04-07 15:57:13.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\nConflicts:\n    nova/db/sqlalchemy/api.py\n\nNOTE(melwitt): The conflict is because change\nI23bb9e539d08f5c6202909054c2dd49b6c7a7a0e (Remove six.text_type (1/2))\nis not in Victoria.\n\nChange-Id: Ie653e5ec69d16ae469f1f8171fee85aea754edff\n(cherry picked from commit becb94ae643ab4863daa564783646921b4a2b372)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/7b4f4796478941eafa9c0997f7ef03293c442d94"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/7b4f4796478941eafa9c0997f7ef03293c442d94"}]},"branch":"refs/heads/stable/victoria"}},"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":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"}},{"label":"Workflow","status":"OK","applied_by":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"}}]}],"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":{}}}]}
