summaryrefslogtreecommitdiff
path: root/gate
diff options
context:
space:
mode:
authormelanie witt <melwittt@gmail.com>2019-10-11 21:08:33 +0000
committermelanie witt <melwittt@gmail.com>2019-10-14 18:54:43 +0000
commit6ea945e3b126879a86fe78d9c0537f5d258cf91a (patch)
tree6522c62d324564cc58830e8fb77f35c4c924c22a /gate
parent7c41365f193fd5b08d0174b6cd8e349ac95b7907 (diff)
downloadnova-6ea945e3b126879a86fe78d9c0537f5d258cf91a.tar.gz
Remove redundant call to get/create default security group
In the instance_create DB API method, it ensures the (legacy) default security group gets created for the specified project_id if it does not already exist. If the security group does not exist, it is created in a separate transaction. Later in the instance_create method, it reads the default security group back that it wrote earlier (via the same ensure default security group code). But since it was written in a separate transaction, the current transaction will not be able to see it and will get back 0 rows. So, it creates a duplicate default security group record if project_id=NULL (which it will be, if running nova-manage db online_data_migrations, which uses an anonymous RequestContext with project_id=NULL). This succeeds despite the unique constraint on project_id because in MySQL, unique constraints are only enforced on non-NULL values [1]. To avoid creation of a duplicate default security group for project_id=NULL, we can use the default security group object that was returned from the first security_group_ensure_default call earlier in instance_create method and remove the second, redundant call. This also breaks out the security groups setup code from a nested method as it was causing confusion during code review and is not being used for any particular purpose. Inspection of the original commit where it was added in 2012 [2] did not contain any comments about the nested method and it appeared to either be a way to organize the code or a way to reuse the 'models' module name as a local variable name. Closes-Bug: #1824435 [1] https://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-unique [2] https://review.opendev.org/#/c/8973/2/nova/db/sqlalchemy/api.py@1339 Change-Id: Idb205ab5b16bbf96965418cd544016fa9cc92de9
Diffstat (limited to 'gate')
-rwxr-xr-xgate/post_test_hook.sh7
1 files changed, 1 insertions, 6 deletions
diff --git a/gate/post_test_hook.sh b/gate/post_test_hook.sh
index cf2645574c..28ad9b939e 100755
--- a/gate/post_test_hook.sh
+++ b/gate/post_test_hook.sh
@@ -266,13 +266,8 @@ $MANAGE db online_data_migrations
# creation of a new deleted marker instance.
set +e
archive_deleted_rows
+set -e
# Verify whether online data migrations run after archiving will succeed.
# See for more details: https://bugs.launchpad.net/nova/+bug/1824435
$MANAGE db online_data_migrations
-rc=$?
-set -e
-if [[ $rc -ne 2 ]]; then
- echo "Expected return code 2 from online_data_migrations until bug 1824435 is fixed"
- exit 2
-fi