)]}'
{"id":"openstack%2Fkeystone~738677","triplet_id":"openstack%2Fkeystone~master~I75590c20e90170ed862f46f0de7d61c7810b5c90","project":"openstack/keystone","branch":"master","topic":"bug/1885753","hashtags":[],"change_id":"I75590c20e90170ed862f46f0de7d61c7810b5c90","subject":"Retry update_user when sqlalchemy raises StaleDataErrors","status":"MERGED","created":"2020-06-30 16:57:27.000000000","updated":"2021-03-31 08:34:33.000000000","submitted":"2021-03-31 08:31:53.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":7,"unresolved_comment_count":1,"has_review_started":true,"submission_id":"738677-bug/1885753","meta_rev_id":"91a3a9e6762f1c6b2dff6b30efe2df983673f128","_number":738677,"virtual_id_number":738677,"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":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},{"value":0,"_account_id":9954,"name":"Lance Bragstad","username":"lbragstad","inactive":true},{"value":0,"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},{"value":0,"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"value":0,"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},{"value":0,"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2021-03-31 08:31:52.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":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"recommended":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"all":[{"value":1,"date":"2021-03-29 19:34:47.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":2,"date":"2021-03-29 20:34:00.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},{"value":0,"_account_id":9954,"name":"Lance Bragstad","username":"lbragstad","inactive":true},{"value":0,"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},{"value":2,"date":"2021-03-30 19:44:24.000000000","_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"value":1,"date":"2021-03-30 23:00:24.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},{"value":2,"date":"2021-03-29 20:37:02.000000000","_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},{"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":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"all":[{"value":0,"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},{"value":0,"_account_id":9954,"name":"Lance Bragstad","username":"lbragstad","inactive":true},{"value":0,"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},{"value":0,"date":"2021-03-30 19:44:43.000000000","_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"value":0,"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},{"value":1,"date":"2021-03-30 23:10:17.000000000","_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},{"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":[],"reviewers":{"REVIEWER":[{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},{"_account_id":9954,"name":"Lance Bragstad","username":"lbragstad","inactive":true},{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},{"_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":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2020-06-30 16:57:27.000000000","updated_by":{"_account_id":9954,"name":"Lance Bragstad","username":"lbragstad","inactive":true},"reviewer":{"_account_id":9954,"name":"Lance Bragstad","username":"lbragstad","inactive":true},"state":"REVIEWER"},{"updated":"2020-08-28 18:15:13.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":"2020-10-21 21:24:27.000000000","updated_by":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"reviewer":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"state":"REVIEWER"},{"updated":"2020-10-21 21:59:45.000000000","updated_by":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"reviewer":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"state":"REVIEWER"},{"updated":"2021-03-29 19:32:37.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"},{"updated":"2021-03-29 19:34:47.000000000","updated_by":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"reviewer":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"state":"REVIEWER"},{"updated":"2021-03-29 19:35:51.000000000","updated_by":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"reviewer":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"state":"REVIEWER"}],"messages":[{"id":"c6f04908418e3b803acf54dbff51cef5117d370a","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2020-06-30 16:57:27.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"3ec196392fdc7afcc5197ddecb73ca7f7ad717a5","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-06-30 19:20:49.000000000","message":"Patch Set 1: 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/743609969a8848098cc1082e3907967a : FAILURE in 23m 34s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/c32d18cde715463eb94955adf171ecf5 : SUCCESS in 19m 08s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/68791532480c44f4b61a72dff2149096 : SUCCESS in 8m 33s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/42a7140fa7994e9eb16501f6f528a108 : FAILURE in 20m 21s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/cd0c8767765741b8b649fbf02fdac1c2 : FAILURE in 19m 38s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9e2b52f7330c4b85ab7b5ea4ae380b60 : SUCCESS in 19m 25s\n- grenade https://zuul.opendev.org/t/openstack/build/cb1365b922e4415682f88c86422e7c84 : SUCCESS in 1h 04m 04s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/1eca548a8bec414aad8ae93f8fdef6bc : FAILURE in 1h 08m 52s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/af3e8592fc674e9782bdf0873b4f0550 : SUCCESS in 6m 55s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/377e93e9503f41949ed4005ef5dc8bcd : SUCCESS in 38m 38s\n- keystone-dsvm-py3-functional-federation-opensuse15 https://zuul.opendev.org/t/openstack/build/66d5b2748fd44067a698feb04f6d25cb : SUCCESS in 35m 57s (non-voting)\n- keystone-dsvm-py3-functional-federation-opensuse15-k2k https://zuul.opendev.org/t/openstack/build/9d76563563a448b995d1a300ec259e05 : SUCCESS in 27m 17s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/b4a63e1739ba4c3bb429c3d1f9b8a1bb : FAILURE in 23m 29s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/214b1ccd75a44440ac0120cddc5dfe8a : SUCCESS in 38m 48s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/10c2fd3c76eb4ec18faea95701062460 : SUCCESS in 1h 09m 22s\n- keystone-tox-protection https://zuul.opendev.org/t/openstack/build/2ca1d9d444f84cb4afb2248f5b9849e9 : SUCCESS in 40m 01s","accounts_in_message":[],"_revision_number":1},{"id":"a977b18c6769cc96ace50296997ef67c6d6ff180","author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"date":"2020-07-08 17:02:12.000000000","message":"Patch Set 2: Patch Set 1 was rebased","accounts_in_message":[],"_revision_number":2},{"id":"2cc4604bc1abf43ca8e8a32a4ef251ab9df1659b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-07-08 23:46:01.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/5c96cbd6c248401885c3607abeedb56a : FAILURE in 15m 44s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/80955d886d624bf7b7de570559807668 : SUCCESS in 15m 31s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/5d95068b1f0647bea223cd335232b49d : SUCCESS in 7m 00s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/1a9b6112b93342b8a7ffbae64cbeed66 : FAILURE in 16m 15s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/bd4597b430a84a458a89ae4da2207c4d : FAILURE in 18m 14s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bc724c680822465ca40fb45c5011381e : SUCCESS in 17m 47s\n- grenade https://zuul.opendev.org/t/openstack/build/1127970157854cbf9ce790d14ffde634 : SUCCESS in 1h 10m 09s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/5fc565b0aa504a4d94e58a2d1ece1e8c : FAILURE in 1h 22m 25s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/d4b297e6cc624072aadbab2c1707beab : SUCCESS in 8m 36s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/2eeea4ec979142a590d953ab6606c9fb : SUCCESS in 25m 24s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal https://zuul.opendev.org/t/openstack/build/b61ed6c9505d4e1ba04863f9556dcad2 : SUCCESS in 25m 01s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/fb1cd770be894d7184a5109c1343fbe9 : SUCCESS in 34m 30s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/8c48bb03a8404ddcab480bb3a69ed631 : FAILURE in 17m 54s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/fe9e09c2a78c43f4a04ce8fac378fef1 : SUCCESS in 41m 11s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/916ba45483094e98b9607740d739bfb3 : SUCCESS in 56m 57s\n- keystone-tox-protection https://zuul.opendev.org/t/openstack/build/948bc8e272c2426fa5cacd2d30ad7635 : SUCCESS in 45m 25s","accounts_in_message":[],"_revision_number":2},{"id":"b4b5a9b2870dc8f5169a2946b16929196f9b849f","author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"date":"2020-07-09 01:53:07.000000000","message":"Patch Set 2:\n\n(1 comment)\n\nsince someone added me, here is my comment on this.","accounts_in_message":[],"_revision_number":2},{"id":"ffe9e467e96b5a23127a59023ed54ff9fa01ef46","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2020-08-27 21:20:58.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"668140c15383bdc630b93bf578404f38ddd2cf8c","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2020-08-27 21:21:19.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"afa6b6ad2470304d3aeee747c32fe0abf00835bf","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-08-27 22:23:27.000000000","message":"Patch Set 3: 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/061f4543d6544fcb88432a4b2dcce7e2 : SUCCESS in 34m 50s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/1ace9579374b49478b6a477ca32b423c : SUCCESS in 34m 24s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/83cc6137dad547cb8cea3ecbd0109082 : SUCCESS in 6m 29s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/83e06d7195fe4a468d91ec6eae9dac26 : SUCCESS in 15m 59s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/3919c5e61753482b82de95dc6ef21af7 : SUCCESS in 35m 37s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/be640f7e2d4447a38915e655d9894019 : SUCCESS in 21m 19s\n- grenade https://zuul.opendev.org/t/openstack/build/2fa7a941a7434278b4f749d44ea1c419 : SUCCESS in 59m 30s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/f3903a004a5540b4919d36bf36788b39 : FAILURE in 8m 57s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/8549b04e5c1942de90216054fead98a5 : SUCCESS in 5m 19s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/081ad3ea1f174a3386ada79dd1399bb0 : FAILURE in 9m 53s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal https://zuul.opendev.org/t/openstack/build/ea52f0eb2fac40b3aa2f18090417f5bc : SUCCESS in 24m 41s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/5a8fe0f7f69648d8815c57121b748117 : SUCCESS in 37m 19s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/5136d141177540a4af57fb99fdbe740d : SUCCESS in 11m 33s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/2f275ef6bf064a378b8a349e0d4e3b6a : FAILURE in 10m 52s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/6de3141303054f029ca02dc737b5582b : FAILURE in 11m 00s\n- keystone-tox-protection https://zuul.opendev.org/t/openstack/build/deda1c5a7930488ba7c5fc2660e17090 : SUCCESS in 33m 48s","accounts_in_message":[],"_revision_number":3},{"id":"35415c5615261407688d26e5b1ff8dd7f4f76652","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2020-08-28 13:50:55.000000000","message":"Patch Set 3:\n\nrecheck","accounts_in_message":[],"_revision_number":3},{"id":"c65849eecce9f42c1405582b889507333bc999ef","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-08-28 18:15:13.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/76a5ba52b16940bfaec38304838a8d7a : SUCCESS in 18m 10s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/928658b41d98413fba233a8b097563ae : SUCCESS in 16m 46s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/784593ab9f404480936dde19ad594ef1 : SUCCESS in 5m 23s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/3d65b41d87b5446397b5961fb35b512d : SUCCESS in 12m 58s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/562d48fba0874045a5a754357e692e0e : SUCCESS in 13m 38s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e74df6191a864551b0ad6d31d62cbd87 : SUCCESS in 14m 51s\n- grenade https://zuul.opendev.org/t/openstack/build/6d86c69278e3410a859b154768c5241f : SUCCESS in 1h 01m 18s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/fe3c2c46a5c347ef9d6d85039d3109d3 : SUCCESS in 1h 33m 22s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/0ebeab4ff28542e1ae955b33bc449696 : SUCCESS in 6m 18s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/4bab70fb81904add913424494b3ca248 : SUCCESS in 36m 36s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal https://zuul.opendev.org/t/openstack/build/7b3ad8cfb1c94a6cb9f905d56e8b7c4e : SUCCESS in 33m 58s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/59962c5f8258451f96e1909affa97a14 : SUCCESS in 34m 33s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/0a7f5e0e2d0542568ea45c1713b28283 : SUCCESS in 11m 31s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/6b0efea6c8674e07a68ae502758c368d : SUCCESS in 44m 34s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/57737c14c1f941288c6638503eda0848 : SUCCESS in 53m 00s\n- keystone-tox-protection https://zuul.opendev.org/t/openstack/build/cb9e3f76bb06428988cec78d1dfa29e0 : SUCCESS in 35m 53s","accounts_in_message":[],"_revision_number":3},{"id":"8ce78f5134f117530874ce65f57387066eee2e4e","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2020-09-09 22:07:35.000000000","message":"Patch Set 3:\n\nHi Michael,\n\nI\u0027m curious if you think this is a better approach than what we were using in previous patches. This isn\u0027t more selective in the update statement, like what Jay suggested, but it does attempt to retry if the update fails due to deadlock.","accounts_in_message":[],"_revision_number":3},{"id":"89c938c655e6885e0892f299dd584ef3b4aad035","author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"date":"2020-09-10 13:39:38.000000000","message":"Patch Set 3:\n\n(1 comment)\n\n\u003e Hi Michael,\n \u003e \n \u003e I\u0027m curious if you think this is a better approach than what we\n \u003e were using in previous patches. This isn\u0027t more selective in the\n \u003e update statement, like what Jay suggested, but it does attempt to\n \u003e retry if the update fails due to deadlock.\n\nit\u0027s OK but I\u0027m wondering here what would produce the deadlock, unless you\u0027re referring to a galera write-set conflict which is not quite the same thing even though that\u0027s the error it raises.  IIUC this would emit an UPDATE statement on a row that did not already have an exclusive write lock on it, so InnoDB would just let the update proceed regardless of the previous state of the row.   InnoDB is actually not intuitive at all in how it does repeatable read and for writes it tends to act more like read-committed, https://blog.pythian.com/understanding-mysql-isolation-levels-repeatable-read/ is a good post on this.   full disclosure I never really know what a particular MySQL interaction is going to do unless I sit down and test it like he is doing in this blog post.\n\nthe compare-and-swap idea is actually using a specially crafted UPDATE statement that includes what we expect to be updating against, and then looking at the number of rows matched to confirm we hit those rows.","accounts_in_message":[],"_revision_number":3},{"id":"a2a306f72828e467416c57432050b3d950506657","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2020-10-21 20:28:14.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"9422e91589b741b51b17b491b6e55cadac25d1bb","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2020-10-21 20:48:38.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"d0406e90aebf043287c095d10a14912ff957866b","author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"date":"2020-10-21 21:59:45.000000000","message":"Patch Set 3:\n\n(1 comment)\n\nI took a look at the error at https://bugs.launchpad.net/keystone/+bug/1885753 and this doesn\u0027t look like a retry situation, it looks like a row is being deleted from \"password\".    These mappings aren\u0027t using the version_id_col feature, and have plain surrogate int primary keys, but it looks like the way the password gets changed is that a new instance of Password() is created, but then it\u0027s appending them to a collection, is that right?  it seems like the delete would be part of this step \"truncate extra passwords\" that\u0027s shortening the list:\n\n        # truncate extra passwords\n        if self.local_user.passwords:\n            unique_cnt \u003d CONF.security_compliance.unique_last_password_count\n            unique_cnt \u003d unique_cnt + 1 if unique_cnt \u003d\u003d 0 else unique_cnt\n            self.local_user.passwords \u003d self.local_user.passwords[-unique_cnt:]\n\nwhat\u0027s not clear is why it\u0027s trying to emit an UPDATE on the password table, since it looks like a row in password is only created, is that right?","accounts_in_message":[],"_revision_number":3},{"id":"ded3edf047924aa710ba3a9aa088fc754f2bd3e5","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-24 21:17:07.000000000","message":"Patch Set 3:\n\n\u003e Patch Set 3:\n\u003e \n\u003e (1 comment)\n\u003e \n\u003e I took a look at the error at https://bugs.launchpad.net/keystone/+bug/1885753 and this doesn\u0027t look like a retry situation, it looks like a row is being deleted from \"password\".    These mappings aren\u0027t using the version_id_col feature, and have plain surrogate int primary keys, but it looks like the way the password gets changed is that a new instance of Password() is created, but then it\u0027s appending them to a collection, is that right?\n\nYes - depending on keystone\u0027s configuration it keeps a list of passwords for PCI-DSS compliance.\n\n  it seems like the delete would be part of this step \"truncate extra passwords\" that\u0027s shortening the list:\n\u003e \n\u003e         # truncate extra passwords\n\u003e         if self.local_user.passwords:\n\u003e             unique_cnt \u003d CONF.security_compliance.unique_last_password_count\n\u003e             unique_cnt \u003d unique_cnt + 1 if unique_cnt \u003d\u003d 0 else unique_cnt\n\u003e             self.local_user.passwords \u003d self.local_user.passwords[-unique_cnt:]\n\u003e \n\u003e what\u0027s not clear is why it\u0027s trying to emit an UPDATE on the password table, since it looks like a row in password is only created, is that right?\n\nI think the updates is coming from the bit of code just below what you\u0027re referencing:\n\nhttps://opendev.org/openstack/keystone/src/branch/master/keystone/identity/backends/sql_model.py#L151-L154\n\nI think the race happens when thread one pulls X passwords from the Password table, sets the new password, appends it to the list of current passwords for the user (handling the truncate), and before it can commit those changes thread two has truncated on of the passwords that thread one is trying to update the expiration for.","accounts_in_message":[],"_revision_number":3},{"id":"f26bdb0fe9b4a39c9469aa4f0d1d6398b10ae155","author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"date":"2021-03-24 21:25:30.000000000","message":"Patch Set 3:\n\nOK, to prevent this kind of race if you have SELECTed the row already, two options are:\n\n1. SELECT..FOR UPDATE.  This won\u0027t protect you on a galera multi-master configuration as the lock does not travel to other nodes.\n\n2. use query.update() for a compare-and-swap approach.  check the number of rows affected and if you get 0, then figure out what it is you\u0027re supposed to do with the current data, if anything.","accounts_in_message":[],"_revision_number":3},{"id":"06d1a81676c38cafc6a8949822cf5a332e435c84","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-24 22:59:32.000000000","message":"Patch Set 3:\n\n\u003e Patch Set 3:\n\u003e \n\u003e OK, to prevent this kind of race if you have SELECTed the row already, two options are:\n\u003e \n\u003e 1. SELECT..FOR UPDATE.  This won\u0027t protect you on a galera multi-master configuration as the lock does not travel to other nodes.\n\u003e \n\u003e 2. use query.update() for a compare-and-swap approach.  check the number of rows affected and if you get 0, then figure out what it is you\u0027re supposed to do with the current data, if anything.\n\nOk, that helps.\n\nIf we were to use approach #2, would it make sense to keep the update at the user-level, or is there any advantage to using a separate transaction for passwords (this doesn\u0027t feel like a good idea, but I figured I\u0027d ask anyway).\n\nAlso, if we get 0 rows affected from the database, is the most sensible thing to return a 4XX to the user (right now we\u0027re returning a 500)? Or should we just assume the password has already been removed and prune it from the list of passwords for the next update?","accounts_in_message":[],"_revision_number":3},{"id":"6f7486c26e6e88c55da08f76603df0324303e7f7","author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"date":"2021-03-24 23:10:50.000000000","message":"Patch Set 3:\n\n\u003e Patch Set 3:\n\u003e \n\u003e \u003e Patch Set 3:\n\u003e \u003e \n\u003e \u003e OK, to prevent this kind of race if you have SELECTed the row already, two options are:\n\u003e \u003e \n\u003e \u003e 1. SELECT..FOR UPDATE.  This won\u0027t protect you on a galera multi-master configuration as the lock does not travel to other nodes.\n\u003e \u003e \n\u003e \u003e 2. use query.update() for a compare-and-swap approach.  check the number of rows affected and if you get 0, then figure out what it is you\u0027re supposed to do with the current data, if anything.\n\u003e \n\u003e Ok, that helps.\n\u003e \n\u003e If we were to use approach #2, would it make sense to keep the update at the user-level, or is there any advantage to using a separate transaction for passwords (this doesn\u0027t feel like a good idea, but I figured I\u0027d ask anyway).\n\nI don\u0027t totally understand the implications of \"the user level\" but overall I like to stick to a single transaction for an entire HTTP request in general unless you are trying to write out logging for the operation in progress separately.\n\n\u003e \n\u003e Also, if we get 0 rows affected from the database, is the most sensible thing to return a 4XX to the user (right now we\u0027re returning a 500)? Or should we just assume the password has already been removed and prune it from the list of passwords for the next update?\n\n\nSince I don\u0027t totally understand this datamodel / query as I havent looked at the whole thing, if the UPDATE is missing a row that the operation plans to DELETE, then that can be ignored, but if the UPDATE misses a row that the oepratino would assume still exists when the operation is complete then that\u0027s a 404.","accounts_in_message":[],"_revision_number":3},{"id":"7fbcccc0fa7e556408e122b2a661cc0921971195","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-25 01:51:42.000000000","message":"Patch Set 3:\n\n\u003e Patch Set 3:\n\u003e \n\u003e \u003e Patch Set 3:\n\u003e \u003e \n\u003e \u003e \u003e Patch Set 3:\n\u003e \u003e \u003e \n\u003e \u003e \u003e OK, to prevent this kind of race if you have SELECTed the row already, two options are:\n\u003e \u003e \u003e \n\u003e \u003e \u003e 1. SELECT..FOR UPDATE.  This won\u0027t protect you on a galera multi-master configuration as the lock does not travel to other nodes.\n\u003e \u003e \u003e \n\u003e \u003e \u003e 2. use query.update() for a compare-and-swap approach.  check the number of rows affected and if you get 0, then figure out what it is you\u0027re supposed to do with the current data, if anything.\n\u003e \u003e \n\u003e \u003e Ok, that helps.\n\u003e \u003e \n\u003e \u003e If we were to use approach #2, would it make sense to keep the update at the user-level, or is there any advantage to using a separate transaction for passwords (this doesn\u0027t feel like a good idea, but I figured I\u0027d ask anyway).\n\u003e \n\u003e I don\u0027t totally understand the implications of \"the user level\" but overall I like to stick to a single transaction for an entire HTTP request in general unless you are trying to write out logging for the operation in progress separately.\n\u003e \n\u003e \u003e \n\u003e \u003e Also, if we get 0 rows affected from the database, is the most sensible thing to return a 4XX to the user (right now we\u0027re returning a 500)? Or should we just assume the password has already been removed and prune it from the list of passwords for the next update?\n\u003e \n\u003e \n\u003e Since I don\u0027t totally understand this datamodel / query as I havent looked at the whole thing, if the UPDATE is missing a row that the operation plans to DELETE, then that can be ignored, but if the UPDATE misses a row that the oepratino would assume still exists when the operation is complete then that\u0027s a 404.\n\nPerfect, I\u0027ll give that a shot and see if I can do that in the next patch set.\n\nThank you for the help, Mike.","accounts_in_message":[],"_revision_number":3},{"id":"cf1a5d53ac68f17b1ee7f24aaac2a4bf119368da","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-25 17:38:33.000000000","message":"Patch Set 3:\n\n\u003e Patch Set 3:\n\u003e \n\u003e \u003e Patch Set 3:\n\u003e \u003e \n\u003e \u003e \u003e Patch Set 3:\n\u003e \u003e \u003e \n\u003e \u003e \u003e \u003e Patch Set 3:\n\u003e \u003e \u003e \u003e \n\u003e \u003e \u003e \u003e OK, to prevent this kind of race if you have SELECTed the row already, two options are:\n\u003e \u003e \u003e \u003e \n\u003e \u003e \u003e \u003e 1. SELECT..FOR UPDATE.  This won\u0027t protect you on a galera multi-master configuration as the lock does not travel to other nodes.\n\u003e \u003e \u003e \u003e \n\u003e \u003e \u003e \u003e 2. use query.update() for a compare-and-swap approach.  check the number of rows affected and if you get 0, then figure out what it is you\u0027re supposed to do with the current data, if anything.\n\u003e \u003e \u003e \n\u003e \u003e \u003e Ok, that helps.\n\u003e \u003e \u003e \n\u003e \u003e \u003e If we were to use approach #2, would it make sense to keep the update at the user-level, or is there any advantage to using a separate transaction for passwords (this doesn\u0027t feel like a good idea, but I figured I\u0027d ask anyway).\n\u003e \u003e \n\u003e \u003e I don\u0027t totally understand the implications of \"the user level\" but overall I like to stick to a single transaction for an entire HTTP request in general unless you are trying to write out logging for the operation in progress separately.\n\u003e \u003e \n\u003e \u003e \u003e \n\u003e \u003e \u003e Also, if we get 0 rows affected from the database, is the most sensible thing to return a 4XX to the user (right now we\u0027re returning a 500)? Or should we just assume the password has already been removed and prune it from the list of passwords for the next update?\n\u003e \u003e \n\u003e \u003e \n\u003e \u003e Since I don\u0027t totally understand this datamodel / query as I havent looked at the whole thing, if the UPDATE is missing a row that the operation plans to DELETE, then that can be ignored, but if the UPDATE misses a row that the oepratino would assume still exists when the operation is complete then that\u0027s a 404.\n\u003e \n\u003e Perfect, I\u0027ll give that a shot and see if I can do that in the next patch set.\n\u003e \n\u003e Thank you for the help, Mike.\n\nFollowing up on this again after more investigation:\n\nI can recreate the LP issue consistently on older environments (~stable/queens). I\u0027m unable to reproduce it using a devstack deployment with Wallaby. I tried to make the situation more likely to reproduce by 1.) increasing the number of clients making requests to update the same user and 2.) increase the number of processes serving keystone requests.\n\nStill, even with those adjustments, I\u0027m unable to recreate this issue. I diff\u0027d the changes and found [0], which has minimal changes to that area of code.\n\nHowever, if I revert that change on keystone\u0027s latest commit, I\u0027m able to reproduce this issue. I\u0027m still trying to figure out why that specific change may have fixed this issue, though.\n\n[0] https://review.opendev.org/c/openstack/keystone/+/593476","accounts_in_message":[],"_revision_number":3},{"id":"a72b94a4d334200a13316d3c4711fe18abaaccbe","author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"date":"2021-03-25 17:43:02.000000000","message":"Patch Set 3:\n\nnot sure either but the array slice operation in the linked change, which limits the entries being worked on, might have something to do with it.","accounts_in_message":[],"_revision_number":3},{"id":"7a0e15e9e61349f4377af72b6a9c42b3d405b8e1","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-25 22:17:35.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"1cf5eb1625ea1026ff6b1b91ecc14f55e7e3e8f4","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-25 23:02:15.000000000","message":"Patch Set 4:\n\nBuild succeeded (ARM64 pipeline).\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/a8307fc17b004d149980ecffc7353db6 : SUCCESS in 38m 52s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/faf8baa1db8847c49c07710c6a675b3c : SUCCESS in 40m 37s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"3455afced5dda22bfa575ac50f8bfb818419bf7c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-26 00:12:38.000000000","message":"Patch Set 4: Verified-1\n\n(1 comment)\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/39cef57471414377b9d5dd465b757124 : SUCCESS in 28m 56s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1e905f12c73542bf83227a3fccea973c : FAILURE in 8m 09s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/791c63926272452cac3949a37ea63ca4 : TIMED_OUT in 41m 13s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/2472f411133747d68722695e7383e0ad : SUCCESS in 37m 17s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2bb4aad26bdf49c592efa2d5fca3f10b : SUCCESS in 17m 15s\n- grenade https://zuul.opendev.org/t/openstack/build/ae83b2ac9275413a9dba5fcff6013455 : FAILURE in 1h 30m 11s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/b9a499b27cdf4ffab141e48fdbd2bf20 : SUCCESS in 1h 52m 41s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/162dd0aabc6546ffbdcb2829b1810157 : SUCCESS in 8m 34s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/8c6d9d2e8ac84dfba5ccb3154029b151 : SUCCESS in 55m 53s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal https://zuul.opendev.org/t/openstack/build/4f6c60cb0df94318b00505deac153906 : SUCCESS in 40m 52s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/3128f1cbc2c6461ca1b9ac5a238f3b71 : SUCCESS in 41m 03s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/551173ea48334b59b3d5eace186a319f : SUCCESS in 20m 30s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/23ceb9f8750f43279b4e10ca3a046444 : FAILURE in 29m 36s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/ca33245cc7b9458d8b2c2be6420b139d : SUCCESS in 1h 21m 14s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/2a1bb62806834cf28d491887c6e13562 : SUCCESS in 59m 12s","accounts_in_message":[],"_revision_number":4},{"id":"9c1803650e4269e7cc5bb07d07e1fba3658ad953","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-26 02:29:00.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"6258fad4de1444f91d4bcb0d7792bdf153138e87","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-26 03:11:00.000000000","message":"Patch Set 5:\n\nBuild succeeded (ARM64 pipeline).\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/a514ce0e58f642548750bfbc29b03f92 : SUCCESS in 37m 39s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/fb4d9fffd9bc4017bc9f506d39db505a : SUCCESS in 36m 30s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"1829f37f9bd6ee6357f9106a55628a03725f263a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-26 03:49:57.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/fd265f364ce6452b8cd2fe46b1dcc251 : SUCCESS in 17m 52s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9d0232b9b28248629d0b841bf3eb97db : SUCCESS in 6m 17s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/c86d5e1775fa4356a82fecfb1953409d : SUCCESS in 15m 24s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/1603af12110f43648f72606686700ed2 : SUCCESS in 13m 47s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3a2e2344269c40e89290837180cb892b : SUCCESS in 14m 38s\n- grenade https://zuul.opendev.org/t/openstack/build/b7e355aca03840e8a163b886282c6c13 : SUCCESS in 59m 03s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/d488f01d31c64c2598983962bd05d630 : SUCCESS in 1h 19m 28s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/51ea9ab034924f0daab316273aa4186e : SUCCESS in 6m 42s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/30c95a8ccd654fac9ff7870e88240aa7 : SUCCESS in 31m 51s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal https://zuul.opendev.org/t/openstack/build/f1b936775eac406fb47a33f0a51b43ae : SUCCESS in 35m 25s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/880e109b0b334985a66ad478b1be5d84 : SUCCESS in 31m 56s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/0586d7c2a2d2474a85c15088ed10d634 : SUCCESS in 18m 26s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/ba45907e70ee4aeb981b7a7088f867bd : FAILURE in 15m 26s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/749fea4cafe24668a8d7b5753e3c19df : SUCCESS in 59m 21s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/2178ce12acab4952a1fe142afbe55e81 : SUCCESS in 38m 31s","accounts_in_message":[],"_revision_number":5},{"id":"4b02e327de9dc5cc014d5ef80ae52cbf84b64a59","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-26 17:41:20.000000000","message":"Uploaded patch set 6.","accounts_in_message":[],"_revision_number":6},{"id":"acbf4a18435c69785b71e933465f6204023901a3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-26 17:45:10.000000000","message":"Uploaded patch set 7.","accounts_in_message":[],"_revision_number":7},{"id":"ac8811d057609f43cce13b2d2f6b16a50fa62fcd","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-26 18:39:26.000000000","message":"Patch Set 7:\n\nBuild succeeded (ARM64 pipeline).\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/e917e6eb0b8a4f5cbc4611073a0dcb89 : FAILURE in 46m 01s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/d33a959b8e844444874523fe4eb7af21 : FAILURE in 40m 24s (non-voting)","accounts_in_message":[],"_revision_number":7},{"id":"66a02f7913d6464b05c131bb66ff5ffd46d59c13","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-26 19:20:58.000000000","message":"Patch Set 7: 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/98e863d188534123bc6266a2dfddd443 : FAILURE in 41m 17s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/591cd7e37b5d4537a85d8e0521a98db9 : SUCCESS in 5m 56s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/926e2283765b40e980fbd59f739fd330 : FAILURE in 14m 08s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/affa4fa71e44413391a9ac1f153e01d9 : FAILURE in 22m 19s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/93e16be4dac843cdb73b9d60c2254594 : SUCCESS in 15m 17s\n- grenade https://zuul.opendev.org/t/openstack/build/5469699be1f843ebbfe4634aa6041ea9 : SUCCESS in 1h 32m 54s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/5d5b79e473c64dcc9dcef6ffc18eb4bc : SUCCESS in 1h 26m 34s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/cb50389cd85d46af90337b40067da127 : SUCCESS in 6m 01s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/eb3eaaefa9954a4ba3c6264081aedd2f : SUCCESS in 46m 02s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal https://zuul.opendev.org/t/openstack/build/608735a357f448caa4d60550f116eb8b : SUCCESS in 49m 05s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/b912ba23b1e14641a560f5ee8164dde1 : SUCCESS in 33m 31s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/84808dea1ee74e42be6f3a9458271087 : SUCCESS in 20m 42s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/5f5315f633ca4d43bb47df00b468f542 : FAILURE in 10m 27s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/8880524a603843519eb83b7a6a8b3b26 : SUCCESS in 1h 09m 31s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/d579b7c766b94465a5aa353f74f417ad : SUCCESS in 48m 00s","accounts_in_message":[],"_revision_number":7},{"id":"1413beebc82974b146488fe250e2a9c4425d8916","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-26 19:39:54.000000000","message":"Patch Set 7:\n\n(1 comment)","accounts_in_message":[],"_revision_number":7},{"id":"56e5dc617bb2dd6e9ccdb9717bc353edc2ab298e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-29 16:23:29.000000000","message":"Uploaded patch set 8.","accounts_in_message":[],"_revision_number":8},{"id":"1e7b363726c953f28bb240b41efc4794c5a499b9","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-29 19:01:37.000000000","message":"Patch Set 8: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/83e9f328835b4db88ce463c770441f4c : SUCCESS in 22m 42s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/227960cfbf0d4188ade6ebe2f51ad56c : SUCCESS in 6m 19s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/51d9c0ada8b04c4ba7fd1a41b6d4b936 : SUCCESS in 20m 31s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/459fc62248ab484a975d4af6aca2b3b9 : SUCCESS in 19m 29s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f8ed378044f34baab27d4e112bf0fa5f : SUCCESS in 15m 14s\n- grenade https://zuul.opendev.org/t/openstack/build/298e95d030184ebaabab81b245a8616d : SUCCESS in 1h 25m 13s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/16edb74807544cdda4ae254c722be9c3 : SUCCESS in 1h 28m 27s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/8c6d4316560249f0b1416add7c9a0c7d : SUCCESS in 10m 05s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/be5dd62bc058428aa5e950c2649e8b79 : SUCCESS in 32m 50s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal https://zuul.opendev.org/t/openstack/build/20814e638f484b80ac3e92783abda014 : SUCCESS in 39m 36s (non-voting)\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/16c425d3ec3b4a8385be553259e2ed67 : SUCCESS in 34m 51s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/76f0328b3c784a0fa28a8babaebc6c24 : SUCCESS in 19m 26s (non-voting)\n- keystone-dsvm-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/4688029b00674df1ac4050c4fa97a45a : FAILURE in 12m 01s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/a8a46294304e48e18d3efdda69a84feb : SUCCESS in 55m 23s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/e081d92da92e4c9086418a349e3339d9 : SUCCESS in 40m 46s","accounts_in_message":[],"_revision_number":8},{"id":"0e5d281c2ea629b326e2659dcfb0dca3308dd822","author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"date":"2021-03-29 19:34:47.000000000","message":"Patch Set 8: Code-Review+1","accounts_in_message":[],"_revision_number":8},{"id":"de824cc29ff586b4879f36154ddc40cd76166e3d","author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"date":"2021-03-29 20:34:00.000000000","message":"Patch Set 8: Code-Review+2","accounts_in_message":[],"_revision_number":8},{"id":"b7bdd4c4d2ebfa7bc21ad89bbf045a856e34e27a","author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"date":"2021-03-29 20:37:02.000000000","message":"Patch Set 8: Code-Review+2","accounts_in_message":[],"_revision_number":8},{"id":"e1386c985f7b98a20464ae7e859d304a0b417202","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-30 19:44:24.000000000","message":"Patch Set 8: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":8},{"id":"da0273fc841bf353d35adeb7a282712c46f45d61","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2021-03-30 19:44:43.000000000","message":"Patch Set 8: -Workflow\n\nWaiting for Mike to take another look if he has the time.","accounts_in_message":[],"_revision_number":8},{"id":"98b28e3de2d02e743cb85eb275fc94af9151ebac","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-30 21:35:28.000000000","message":"Patch Set 8:\n\nBuild succeeded (ARM64 pipeline).\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/c172d94238584c039a2b8102ffde0287 : SUCCESS in 56m 26s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/a921a23b451e4a60a037b1ae3694f8c8 : SUCCESS in 59m 26s (non-voting)","accounts_in_message":[],"_revision_number":8},{"id":"f6533b1288a718a84ba3a0d32561365fda2208ca","author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"date":"2021-03-30 23:00:24.000000000","message":"Patch Set 8: Code-Review+1\n\nlooks great","accounts_in_message":[],"_revision_number":8},{"id":"3ed42740ff96418af2d9df01bcb10fdcdd79ee41","author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"date":"2021-03-30 23:10:17.000000000","message":"Patch Set 8: Workflow+1","accounts_in_message":[],"_revision_number":8},{"id":"8d62c005cc7ded16c0406f88ce8253185860c8ef","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-31 01:26:05.000000000","message":"Patch Set 8: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":8},{"id":"3973fdcaf07e0c118d64c730a43ad610348a212f","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-31 08:31:52.000000000","message":"Patch Set 8: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/27c0e93a26d74e3ea7de380802b394ec : SUCCESS in 7m 27s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/a74cffa7264f4d1ebe7e934a24bec43c : SUCCESS in 14m 06s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/aca6d874d3f74aab9c33a9346c7d87a3 : SUCCESS in 26m 09s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c10b9eec015d4a7eba7ac24a2b0fca16 : SUCCESS in 28m 32s\n- grenade https://zuul.opendev.org/t/openstack/build/a0d70dcad0ab4cccaf1c27762130055f : SUCCESS in 1h 05m 18s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/4c1875157d4d496b8dff4ebbfcf41034 : SUCCESS in 1h 12m 02s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/796fc3dbf6154f2180ebfcdbc68e7679 : SUCCESS in 7m 43s\n- keystone-dsvm-py3-functional https://zuul.opendev.org/t/openstack/build/5598f3a4bbd94cf98bbdd66750908276 : SUCCESS in 35m 04s\n- keystone-dsvm-py3-functional-federation-ubuntu-focal-k2k https://zuul.opendev.org/t/openstack/build/e37faeb02a744df08da5f6cff153b53a : SUCCESS in 36m 10s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/380bbf6041194a08bc86dd0559104bc6 : SUCCESS in 1h 01m 54s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/3f6301abe3a4455b9490494a387ceecc : SUCCESS in 41m 08s","accounts_in_message":[],"_revision_number":8},{"id":"2911e281354e76d1b0d9f062696b79ae92ea5692","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-31 08:31:53.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":8},{"id":"91a3a9e6762f1c6b2dff6b30efe2df983673f128","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-31 08:34:33.000000000","message":"Patch Set 8:\n\nBuild succeeded (promote pipeline).\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4689a64be7fe4fe2a636ca6e2420e809 : SUCCESS in 1m 46s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/7dbadd1a109d486f9f18f52c715deeb0 : SUCCESS in 1m 31s","accounts_in_message":[],"_revision_number":8}],"current_revision_number":8,"current_revision":"ceae3566e83b26fd6a1679154eae9b0cef29da64","revisions":{"d19e6bb05d2b66f27afb9ac16506f630a9c24804":{"kind":"REWORK","_number":1,"created":"2020-06-30 16:57:27.000000000","uploader":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"ref":"refs/changes/77/738677/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/738677/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/738677/1"}}},"commit":{"parents":[{"commit":"00031689126b2a40461921ac4715ff595fde51ae","subject":"Merge \"Bump hacking min version to 3.0.1\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/00031689126b2a40461921ac4715ff595fde51ae"}]}],"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":"2020-06-30 16:50:41.000000000","tz":-300},"subject":"Leverage UPDATE FOR when updating users","message":"Leverage UPDATE FOR when updating users\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 times 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. In other words,\ntwo clients pull the user record when they enter update_user(), but the\nslower of the two clients will fail because its reference to the user\nis outdated when the first client updates the user as it exits the\nmethod.\n\nThis commit mitigates this issue by using sqlalchemy\u0027s with_update_for()\nmethod, which signals to SQL that the record we\u0027re selecting will be\nupdated. This helps the clients play nice together when they\u0027re updating\nthe same reference.\n\nChange-Id: I75590c20e90170ed862f46f0de7d61c7810b5c90\nCloses-Bug: 1885753\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/d19e6bb05d2b66f27afb9ac16506f630a9c24804"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/d19e6bb05d2b66f27afb9ac16506f630a9c24804"}]},"branch":"refs/heads/master"},"12b7291e53aff9e5acf367fefccb3af17df31042":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2020-07-08 17:02:12.000000000","uploader":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"ref":"refs/changes/77/738677/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/738677/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/738677/2"}}},"commit":{"parents":[{"commit":"05e9ac007ff6659d44497e7c6173249ad1be4d93","subject":"Merge \"Add an enhanced debug configuration technique to caching guide\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/05e9ac007ff6659d44497e7c6173249ad1be4d93"}]}],"author":{"name":"Lance Bragstad","email":"lbragstad@gmail.com","date":"2020-06-30 16:50:41.000000000","tz":-300},"committer":{"name":"Harry Rybacki","email":"hrybacki@redhat.com","date":"2020-07-08 17:02:12.000000000","tz":0},"subject":"Leverage UPDATE FOR when updating users","message":"Leverage UPDATE FOR when updating users\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 times 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. In other words,\ntwo clients pull the user record when they enter update_user(), but the\nslower of the two clients will fail because its reference to the user\nis outdated when the first client updates the user as it exits the\nmethod.\n\nThis commit mitigates this issue by using sqlalchemy\u0027s with_update_for()\nmethod, which signals to SQL that the record we\u0027re selecting will be\nupdated. This helps the clients play nice together when they\u0027re updating\nthe same reference.\n\nChange-Id: I75590c20e90170ed862f46f0de7d61c7810b5c90\nCloses-Bug: 1885753\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/12b7291e53aff9e5acf367fefccb3af17df31042"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/12b7291e53aff9e5acf367fefccb3af17df31042"}]},"branch":"refs/heads/master"},"c839f3e235b44868dc7b12f91549a81b67d80131":{"kind":"REWORK","_number":3,"created":"2020-08-27 21:21:19.000000000","uploader":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"ref":"refs/changes/77/738677/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/738677/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/738677/3"}}},"commit":{"parents":[{"commit":"45c263113ac64370214248644d062720c9a46dc8","subject":"Merge \"NIT: Spelling Fix\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/45c263113ac64370214248644d062720c9a46dc8"}]}],"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":"2020-08-27 21:15:48.000000000","tz":-300},"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 times 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. In other words,\ntwo clients pull the user record when they enter update_user(), but the\nslower of the two clients will fail because its reference to the user\nis outdated when the first client updates the user as it exits the\nmethod.\n\nThis commit mitigates the issue by using @wrap_db_retry so that the\nclient recieving the deadlock tries its request again.\n\nChange-Id: I75590c20e90170ed862f46f0de7d61c7810b5c90\nCloses-Bug: 1885753\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/c839f3e235b44868dc7b12f91549a81b67d80131"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/c839f3e235b44868dc7b12f91549a81b67d80131"}]},"branch":"refs/heads/master"},"394619eab2de9797c2f6c498883ff2b29ab0015b":{"kind":"REWORK","_number":4,"created":"2021-03-25 22:17:35.000000000","uploader":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"ref":"refs/changes/77/738677/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/738677/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/738677/4"}}},"commit":{"parents":[{"commit":"ef711cd0eb5fb6fb143783ad4096e3f1dbd9da99","subject":"Merge \"Add job for keystone functional protection tests\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/ef711cd0eb5fb6fb143783ad4096e3f1dbd9da99"}]}],"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-25 22:16:12.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 StaleData exceptions from sqlalchemy and issuring a\nretry. The identity sql backend will retry the request for client that\nhave stale data change from underneath them.\n\nChange-Id: I75590c20e90170ed862f46f0de7d61c7810b5c90\nCloses-Bug: 1885753\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/394619eab2de9797c2f6c498883ff2b29ab0015b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/394619eab2de9797c2f6c498883ff2b29ab0015b"}]},"branch":"refs/heads/master"},"d2159b35735d397b167e4960b17f12b9c8bfd797":{"kind":"REWORK","_number":5,"created":"2021-03-26 02:29:00.000000000","uploader":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"ref":"refs/changes/77/738677/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/738677/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/738677/5"}}},"commit":{"parents":[{"commit":"ef711cd0eb5fb6fb143783ad4096e3f1dbd9da99","subject":"Merge \"Add job for keystone functional protection tests\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/ef711cd0eb5fb6fb143783ad4096e3f1dbd9da99"}]}],"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 02:27:32.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 StaleData exceptions from sqlalchemy and issuring a\nretry. The identity sql backend will retry the request for client that\nhave stale data change from underneath them.\n\nChange-Id: I75590c20e90170ed862f46f0de7d61c7810b5c90\nCloses-Bug: 1885753\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/d2159b35735d397b167e4960b17f12b9c8bfd797"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/d2159b35735d397b167e4960b17f12b9c8bfd797"}]},"branch":"refs/heads/master"},"19b0f22c506f92edfa19e02b4a940888c91ff3c3":{"kind":"REWORK","_number":6,"created":"2021-03-26 17:41:20.000000000","uploader":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"ref":"refs/changes/77/738677/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/738677/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/738677/6"}}},"commit":{"parents":[{"commit":"ef711cd0eb5fb6fb143783ad4096e3f1dbd9da99","subject":"Merge \"Add job for keystone functional protection tests\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/ef711cd0eb5fb6fb143783ad4096e3f1dbd9da99"}]}],"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:38:18.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","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/19b0f22c506f92edfa19e02b4a940888c91ff3c3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/19b0f22c506f92edfa19e02b4a940888c91ff3c3"}]},"branch":"refs/heads/master"},"6b581bfe43811379e9ceea2770242f05f0c9fa66":{"kind":"REWORK","_number":7,"created":"2021-03-26 17:45:10.000000000","uploader":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"ref":"refs/changes/77/738677/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/738677/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/738677/7"}}},"commit":{"parents":[{"commit":"ef711cd0eb5fb6fb143783ad4096e3f1dbd9da99","subject":"Merge \"Add job for keystone functional protection tests\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/ef711cd0eb5fb6fb143783ad4096e3f1dbd9da99"}]}],"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:43:39.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","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/6b581bfe43811379e9ceea2770242f05f0c9fa66"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/6b581bfe43811379e9ceea2770242f05f0c9fa66"}]},"branch":"refs/heads/master"},"ceae3566e83b26fd6a1679154eae9b0cef29da64":{"kind":"REWORK","_number":8,"created":"2021-03-29 16:23:29.000000000","uploader":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"ref":"refs/changes/77/738677/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/738677/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/738677/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/738677/8"}}},"commit":{"parents":[{"commit":"ef711cd0eb5fb6fb143783ad4096e3f1dbd9da99","subject":"Merge \"Add job for keystone functional protection tests\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/ef711cd0eb5fb6fb143783ad4096e3f1dbd9da99"}]}],"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 16:21:47.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","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/ceae3566e83b26fd6a1679154eae9b0cef29da64"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/ceae3566e83b26fd6a1679154eae9b0cef29da64"}]},"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":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"}},{"label":"Workflow","status":"OK","applied_by":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"}}]}],"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":{}}}]}
