)]}'
{"id":"openstack%2Fkeystone~783399","triplet_id":"openstack%2Fkeystone~stable%2Fvictoria~I75590c20e90170ed862f46f0de7d61c7810b5c90","project":"openstack/keystone","branch":"stable/victoria","topic":"bug/1885753","hashtags":[],"change_id":"I75590c20e90170ed862f46f0de7d61c7810b5c90","subject":"Retry update_user when sqlalchemy raises StaleDataErrors","status":"MERGED","created":"2021-03-26 17:42:24.000000000","updated":"2021-04-14 23:18:55.000000000","submitted":"2021-04-14 23:17:09.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"783399-bug/1885753","meta_rev_id":"2508a9dad5a7f5ac9cdebdc2975e81af1d1ab97d","_number":783399,"virtual_id_number":783399,"owner":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},{"value":0,"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2021-04-14 23:17:08.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":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"recommended":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"all":[{"value":1,"date":"2021-04-14 14:51:53.000000000","permitted_voting_range":{"min":1,"max":2},"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},{"value":2,"date":"2021-04-01 14:11:40.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"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":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"all":[{"value":0,"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},{"value":1,"date":"2021-04-14 15:03:36.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"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}},"removable_reviewers":[{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"}],"reviewers":{"REVIEWER":[{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2021-03-26 19:22:55.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-03-29 19:35:01.000000000","updated_by":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"reviewer":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"state":"REVIEWER"},{"updated":"2021-03-29 19:35:01.000000000","updated_by":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"reviewer":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"state":"REVIEWER"}],"messages":[{"id":"fcf854f16ab435349fd47efc1cff3b127491d87b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-26 17:42:24.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"34511bb27bb0160d79dae0e975ffb099311c5bae","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-26 17:46:15.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"b8b4d2fa0b3de0865b29889aee9fe332958a2deb","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-26 19:22:55.000000000","message":"Patch Set 2: 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- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/da51b395376744aaba94f056739bdc5f : FAILURE in 16m 10s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/fc688dc705db47a8bd83a83de74b1b36 : SUCCESS in 6m 43s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/0584a608664d4809a9255f88457b51d3 : FAILURE in 12m 52s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/2fa47640d72a4a56b50e2584face67b0 : TIMED_OUT in 40m 59s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b452e308d8994e489436fb19683f8474 : SUCCESS in 13m 21s\n- grenade https://zuul.opendev.org/t/openstack/build/b0f9a4a78f764b888acf836ef2bf0bd6 : SUCCESS in 58m 22s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/6eb6aee3e17f4b83ad6174ed7d888e08 : SUCCESS in 1h 35m 30s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/7cea208423214e9cabc2c7498bde49ad : SUCCESS in 6m 08s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/5f0e71b86806460992b3b8e0e74ad5c4 : SUCCESS in 34m 44s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal https://zuul.opendev.org/t/openstack/build/95ceaf1b4f724cf48f15ac1bb2a64a1b : SUCCESS in 38m 05s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/3266811c62234bee952c37d23f61000d : SUCCESS in 36m 25s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/7a19b58f075f4af4b3528a531ec5ce3a : FAILURE in 14m 30s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/4316ff13d07d40a58f95493906488ebc : FAILURE in 18m 06s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/94a4c75c135344e5a8e8be43e668a2b5 : SUCCESS in 1h 03m 53s\n- keystone-tox-protection https://zuul.opendev.org/t/openstack/build/9c4288a9728842d6949cecdcee5cfbad : SUCCESS in 34m 21s","accounts_in_message":[],"_revision_number":2},{"id":"64b0ca55359603a2274edca717b5a3731bb7ff72","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-29 19:21:24.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"5a20964f77e816fe9b125364b51aba3036ad1e0c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-29 20:29:54.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/a046affe5a364235951e7419d63c7e8e : SUCCESS in 16m 20s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d0b44be76252478787c2d9d74c782283 : SUCCESS in 5m 30s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/daefbe5f13c74eb7b78ffa0bb3b02f20 : SUCCESS in 13m 30s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/965d491efb7f4935a2c34db94c55c412 : SUCCESS in 14m 08s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/ab3526438ca54ef58034befdf25ddae5 : SUCCESS in 12m 37s\n- grenade https://zuul.opendev.org/t/openstack/build/34fe5ab137424d5298f396cc619e3e38 : SUCCESS in 59m 26s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/c197e5a3f42b478496da1ef1fc047fc8 : SUCCESS in 1h 06m 00s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/62fb19ad53324d43a9eff8ea6cf8316e : SUCCESS in 7m 56s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/ba16344aa35b45b08119210e803212e5 : SUCCESS in 25m 39s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal https://zuul.opendev.org/t/openstack/build/66fcb9f4ba4947fa876d575501cf3402 : SUCCESS in 38m 20s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/a7f9cded78da4d3fb5f7e8f7853149c6 : SUCCESS in 32m 10s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/cf46945058224e58a406ad2a5452e5c7 : SUCCESS in 12m 30s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/21c01ea18fd644ccb99c9c2ce8f4eee6 : FAILURE in 12m 49s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/306b1921423b4fa4856779f5c62e9091 : SUCCESS in 46m 21s\n- keystone-tox-protection https://zuul.opendev.org/t/openstack/build/c05bc98d0c484b4e8acae74bc9f1d82f : SUCCESS in 48m 27s","accounts_in_message":[],"_revision_number":3},{"id":"4c8011c0d40344c242095b284d174200d3b63176","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-04-01 14:11:40.000000000","message":"Patch Set 3: Code-Review+2\n\nThe stable/wallaby patch landed. Waiting on a +1 from Kristi and a review from Sean if he has bandwidth.","accounts_in_message":[],"_revision_number":3},{"id":"691ff16aff19bc89c27b6eac8994587df9e192c7","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-04-08 18:34:34.000000000","message":"Patch Set 3:\n\nBump","accounts_in_message":[],"_revision_number":3},{"id":"b7be981dc3666c2931543d1a6a23485e2fd33c4d","author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"date":"2021-04-14 14:51:53.000000000","message":"Patch Set 3: Code-Review+1","accounts_in_message":[],"_revision_number":3},{"id":"7aecb8c2e30f1b509319beecd0710838fe6bb0be","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-04-14 15:03:36.000000000","message":"Patch Set 3: Workflow+1","accounts_in_message":[],"_revision_number":3},{"id":"aa9ee925810317b55da7eb2a7508ef86f572ca6f","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-04-14 15:04:06.000000000","message":"Patch Set 3: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":3},{"id":"1de3c899d63943ac3e85f094f97f7df547ff4bca","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-04-14 23:17:08.000000000","message":"Patch Set 3: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b7d81e4c2c414d239c818ee2ef4d7568 : SUCCESS in 6m 26s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/9b8f3ada7f684c39a982539471e7b14b : SUCCESS in 14m 44s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/1596650442794c11a38a0bef294c727c : SUCCESS in 16m 13s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/08f4f14b93734fddab56eaa63431ae0a : SUCCESS in 14m 15s\n- grenade https://zuul.opendev.org/t/openstack/build/19eb7499276144479653b54de36867d4 : SUCCESS in 1h 05m 53s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/724d8251ab744cd5943c0306870f56d0 : SUCCESS in 1h 44m 55s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/4466b910e97c4155a5b4da9f8e1679e4 : SUCCESS in 8m 21s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/4546e56aa25b422d8292fc79e5dc933c : SUCCESS in 35m 07s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/b7f40d6dfe8a4b8d8eb3b849eb210fcf : SUCCESS in 36m 38s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/77a9d8b9afb542f7bda21ba265e7cf9f : SUCCESS in 1h 15m 49s\n- keystone-tox-protection https://zuul.opendev.org/t/openstack/build/f34caba28c6f4c00accfb05149576250 : SUCCESS in 39m 45s","accounts_in_message":[],"_revision_number":3},{"id":"7570f2f1dd7001f55d3a2e830b7ef89820b973a0","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-04-14 23:17:09.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":3},{"id":"2508a9dad5a7f5ac9cdebdc2975e81af1d1ab97d","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-04-14 23:18:55.000000000","message":"Patch Set 3:\n\nBuild succeeded (promote pipeline).\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/76215bc2ff2048b9aadc6412b68a1c38 : SUCCESS in 1m 10s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/efe64d82e2ee4b539c416f6bec654d2b : SUCCESS in 53s","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"5b7d4c80d484262018f937083050844648f07a11","revisions":{"cdf9c4d099b83d41966d36fb173ded1c929a9217":{"kind":"REWORK","_number":1,"created":"2021-03-26 17:42:24.000000000","uploader":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"ref":"refs/changes/99/783399/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/99/783399/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/99/783399/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/99/783399/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/99/783399/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/99/783399/1"}}},"commit":{"parents":[{"commit":"5b860e0b3b4e318b91325996156bae3f99abd6c7","subject":"Support bytes type in generate_public_ID()","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/5b860e0b3b4e318b91325996156bae3f99abd6c7"}]}],"author":{"name":"Lance Bragstad","email":"lbragstad@gmail.com","date":"2020-06-30 16:50:41.000000000","tz":-300},"committer":{"name":"Lance Bragstad","email":"lbragstad@gmail.com","date":"2021-03-26 17:40:50.000000000","tz":0},"subject":"Wrap update_user in wrap_db_retry","message":"Wrap update_user in wrap_db_retry\n\nKeystone\u0027s update_user() method in the SQL driver processes a lot of\ninformation about how to update users. This includes evaluating password\nlogic and authentication attempts for PSI-DSS. This logic is evaluated\nafter keystone pulls the user record from SQL and before it exits the\ncontext manager, which performs the write.\n\nWhen multiple clients are all updating the same user reference, it\u0027s\nmore likely they will see an HTTP 500 because of race conditions exiting\nthe context manager. The HTTP 500 is due to stale data when updating\npassword expiration for old passwords, which happens when setting a new\npassword for a user.\n\nThis commit attempts to handle that case more gracefully than throwing a\n500 by detecting StaleDataErrors from sqlalchemy and retrying.  The\nidentity sql backend will retry the request for clients that have\nstale data change from underneath them.\n\nChange-Id: I75590c20e90170ed862f46f0de7d61c7810b5c90\nCloses-Bug: 1885753\n(cherry picked from commit 19b0f22c506f92edfa19e02b4a940888c91ff3c3)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/cdf9c4d099b83d41966d36fb173ded1c929a9217"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/cdf9c4d099b83d41966d36fb173ded1c929a9217"}]},"branch":"refs/heads/stable/victoria"},"22119176d612d4441d9cf25e76adde52ec4f88e2":{"kind":"REWORK","_number":2,"created":"2021-03-26 17:46:15.000000000","uploader":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"ref":"refs/changes/99/783399/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/99/783399/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/99/783399/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/99/783399/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/99/783399/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/99/783399/2"}}},"commit":{"parents":[{"commit":"5b860e0b3b4e318b91325996156bae3f99abd6c7","subject":"Support bytes type in generate_public_ID()","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/5b860e0b3b4e318b91325996156bae3f99abd6c7"}]}],"author":{"name":"Lance Bragstad","email":"lbragstad@gmail.com","date":"2020-06-30 16:50:41.000000000","tz":-300},"committer":{"name":"Lance Bragstad","email":"lbragstad@gmail.com","date":"2021-03-26 17:44:02.000000000","tz":0},"subject":"Retry update_user when sqlalchemy raises StaleDataErrors","message":"Retry update_user when sqlalchemy raises StaleDataErrors\n\nKeystone\u0027s update_user() method in the SQL driver processes a lot of\ninformation about how to update users. This includes evaluating password\nlogic and authentication attempts for PSI-DSS. This logic is evaluated\nafter keystone pulls the user record from SQL and before it exits the\ncontext manager, which performs the write.\n\nWhen multiple clients are all updating the same user reference, it\u0027s\nmore likely they will see an HTTP 500 because of race conditions exiting\nthe context manager. The HTTP 500 is due to stale data when updating\npassword expiration for old passwords, which happens when setting a new\npassword for a user.\n\nThis commit attempts to handle that case more gracefully than throwing a\n500 by detecting StaleDataErrors from sqlalchemy and retrying.  The\nidentity sql backend will retry the request for clients that have\nstale data change from underneath them.\n\nChange-Id: I75590c20e90170ed862f46f0de7d61c7810b5c90\nCloses-Bug: 1885753\n(cherry picked from commit 6b581bfe43811379e9ceea2770242f05f0c9fa66)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/22119176d612d4441d9cf25e76adde52ec4f88e2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/22119176d612d4441d9cf25e76adde52ec4f88e2"}]},"branch":"refs/heads/stable/victoria"},"5b7d4c80d484262018f937083050844648f07a11":{"kind":"REWORK","_number":3,"created":"2021-03-29 19:21:24.000000000","uploader":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"ref":"refs/changes/99/783399/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/99/783399/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/99/783399/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/99/783399/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/99/783399/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/99/783399/3"}}},"commit":{"parents":[{"commit":"5b860e0b3b4e318b91325996156bae3f99abd6c7","subject":"Support bytes type in generate_public_ID()","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/5b860e0b3b4e318b91325996156bae3f99abd6c7"}]}],"author":{"name":"Lance Bragstad","email":"lbragstad@gmail.com","date":"2020-06-30 16:50:41.000000000","tz":-300},"committer":{"name":"Lance Bragstad","email":"lbragstad@gmail.com","date":"2021-03-29 19:19:42.000000000","tz":0},"subject":"Retry update_user when sqlalchemy raises StaleDataErrors","message":"Retry update_user when sqlalchemy raises StaleDataErrors\n\nKeystone\u0027s update_user() method in the SQL driver processes a lot of\ninformation about how to update users. This includes evaluating password\nlogic and authentication attempts for PSI-DSS. This logic is evaluated\nafter keystone pulls the user record from SQL and before it exits the\ncontext manager, which performs the write.\n\nWhen multiple clients are all updating the same user reference, it\u0027s\nmore likely they will see an HTTP 500 because of race conditions exiting\nthe context manager. The HTTP 500 is due to stale data when updating\npassword expiration for old passwords, which happens when setting a new\npassword for a user.\n\nThis commit attempts to handle that case more gracefully than throwing a\n500 by detecting StaleDataErrors from sqlalchemy and retrying.  The\nidentity sql backend will retry the request for clients that have\nstale data change from underneath them.\n\nChange-Id: I75590c20e90170ed862f46f0de7d61c7810b5c90\nCloses-Bug: 1885753\n(cherry picked from commit ceae3566e83b26fd6a1679154eae9b0cef29da64)\n(cherry picked from commit f47e635b8041542faa05e64606e66d2fbbc5f284)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/5b7d4c80d484262018f937083050844648f07a11"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/5b7d4c80d484262018f937083050844648f07a11"}]},"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":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"}},{"label":"Workflow","status":"OK","applied_by":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"}}]}],"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":{}}}]}
