)]}'
{"id":"openstack%2Fpython-keystoneclient~221738","triplet_id":"openstack%2Fpython-keystoneclient~master~Ib6487de7de638abc69660c851bd048a8ec177109","project":"openstack/python-keystoneclient","branch":"master","topic":"bug/1493835","hashtags":[],"change_id":"Ib6487de7de638abc69660c851bd048a8ec177109","subject":"Identity plugin thread safety","status":"MERGED","created":"2015-09-09 12:39:29.000000000","updated":"2015-09-30 11:04:08.000000000","submitted":"2015-09-15 21:01:26.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":7,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"67b019f65b7a08cc3f4463588712891905f32713","_number":221738,"virtual_id_number":221738,"owner":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},{"value":2,"date":"2015-09-15 21:01:26.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},{"value":0,"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},{"value":0,"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},{"value":0,"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},{"value":0,"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"}],"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":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"recommended":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"all":[{"value":1,"date":"2015-09-15 00:48:22.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":2,"date":"2015-09-15 09:17:26.000000000","_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},{"value":0,"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},{"value":2,"date":"2015-09-15 19:43:40.000000000","_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},{"value":0,"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},{"value":1,"date":"2015-09-14 03:14:04.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"}],"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":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"all":[{"value":0,"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},{"value":0,"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},{"value":1,"date":"2015-09-15 19:43:40.000000000","_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},{"value":0,"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},{"value":0,"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-09-09 12:58:15.000000000","updated_by":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"reviewer":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"state":"REVIEWER"},{"updated":"2015-09-14 03:14:04.000000000","updated_by":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"reviewer":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"state":"REVIEWER"},{"updated":"2015-09-15 00:48:22.000000000","updated_by":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"reviewer":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"state":"REVIEWER"},{"updated":"2015-09-15 09:17:26.000000000","updated_by":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"reviewer":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"state":"REVIEWER"},{"updated":"2015-09-15 19:43:40.000000000","updated_by":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"reviewer":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"state":"REVIEWER"},{"updated":"2015-09-15 21:01:26.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"74d2ae8683758cc4c3a57086baae61c610f8e4c2","author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"date":"2015-09-09 12:39:29.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"569471717a92c0f20565bfcdefcbfc9d2f976f06","author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"date":"2015-09-09 12:58:15.000000000","message":"Patch Set 1: Code-Review+1\n\n+1 Nova needs it! for Nova\u003c-\u003eNeutron handshake 401 handling","accounts_in_message":[],"_revision_number":1},{"id":"103a001ff97840192005547fdee3d257af3d4afd","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-09-09 14:01:03.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-keystoneclient-python26 http://logs.openstack.org/38/221738/1/check/gate-python-keystoneclient-python26/4fe918b/ : SUCCESS in 2m 24s\n- gate-python-keystoneclient-pep8 http://logs.openstack.org/38/221738/1/check/gate-python-keystoneclient-pep8/90b1aca/ : SUCCESS in 3m 21s\n- gate-python-keystoneclient-docs http://docs-draft.openstack.org/38/221738/1/check/gate-python-keystoneclient-docs/3373b7d//doc/build/html/ : SUCCESS in 2m 59s\n- gate-python-keystoneclient-python27 http://logs.openstack.org/38/221738/1/check/gate-python-keystoneclient-python27/3d44c1e/ : SUCCESS in 2m 55s\n- gate-python-keystoneclient-python34 http://logs.openstack.org/38/221738/1/check/gate-python-keystoneclient-python34/6f57e98/ : SUCCESS in 8m 52s\n- gate-tempest-dsvm-neutron-src-python-keystoneclient http://logs.openstack.org/38/221738/1/check/gate-tempest-dsvm-neutron-src-python-keystoneclient/9102e65/ : SUCCESS in 1h 16m 17s\n- gate-keystoneclient-dsvm-functional http://logs.openstack.org/38/221738/1/check/gate-keystoneclient-dsvm-functional/c690b5b/ : SUCCESS in 30m 04s\n- gate-python-keystoneclient-tox-bandit http://logs.openstack.org/38/221738/1/check/gate-python-keystoneclient-tox-bandit/def3c81/ : SUCCESS in 2m 28s","accounts_in_message":[],"_revision_number":1},{"id":"c039e1785f80e1f08f0bc8bb68ed45ca20aede12","author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"date":"2015-09-09 22:53:17.000000000","message":"Patch Set 1: Code-Review-1\n\n(4 comments)","accounts_in_message":[],"_revision_number":1},{"id":"07bdbfdf914f97ed232c967e394dd6bcd2b65b33","author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"date":"2015-09-10 00:18:58.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"fb0a826b2dc1f2e9c9f8c88d28e8e953da05d848","author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"date":"2015-09-10 00:19:24.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"c2e624366a37945e80ebc28115162a68551302d5","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-09-10 01:25:03.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-keystoneclient-python26 http://logs.openstack.org/38/221738/2/check/gate-python-keystoneclient-python26/9a48f08/ : SUCCESS in 2m 23s\n- gate-python-keystoneclient-pep8 http://logs.openstack.org/38/221738/2/check/gate-python-keystoneclient-pep8/6873edb/ : SUCCESS in 3m 25s\n- gate-python-keystoneclient-docs http://docs-draft.openstack.org/38/221738/2/check/gate-python-keystoneclient-docs/54cb752//doc/build/html/ : SUCCESS in 2m 02s\n- gate-python-keystoneclient-python27 http://logs.openstack.org/38/221738/2/check/gate-python-keystoneclient-python27/61dccea/ : SUCCESS in 2m 07s\n- gate-python-keystoneclient-python34 http://logs.openstack.org/38/221738/2/check/gate-python-keystoneclient-python34/b8cf84b/ : SUCCESS in 2m 37s\n- gate-tempest-dsvm-neutron-src-python-keystoneclient http://logs.openstack.org/38/221738/2/check/gate-tempest-dsvm-neutron-src-python-keystoneclient/7153782/ : SUCCESS in 1h 05m 56s\n- gate-keystoneclient-dsvm-functional http://logs.openstack.org/38/221738/2/check/gate-keystoneclient-dsvm-functional/cdc0c94/ : SUCCESS in 27m 55s\n- gate-python-keystoneclient-tox-bandit http://logs.openstack.org/38/221738/2/check/gate-python-keystoneclient-tox-bandit/092f5a5/ : SUCCESS in 7m 02s","accounts_in_message":[],"_revision_number":2},{"id":"0fa6902b2d7e5233c142d93052172d5e71708deb","author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"date":"2015-09-14 03:14:04.000000000","message":"Patch Set 2: Code-Review+1","accounts_in_message":[],"_revision_number":2},{"id":"73ed4f33368119db57c53645d5267cf043fa2c49","author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"date":"2015-09-15 00:48:22.000000000","message":"Patch Set 2: Code-Review+1","accounts_in_message":[],"_revision_number":2},{"id":"3e74457d3c100050558d90bafd61a5f8ffe6535a","author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"date":"2015-09-15 09:17:26.000000000","message":"Patch Set 2: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"6b79255233abb9938d7ada13eb14cca16f98c997","author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"date":"2015-09-15 19:43:40.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1\n\n(1 comment)\n\nI don\u0027t think this will break anything.","accounts_in_message":[],"_revision_number":2},{"id":"97dfb4c57585ccbb355be9cd8a9112156d0fa352","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-09-15 19:43:48.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":2},{"id":"807bc2d704e297773806cc69fdc6b10f40ffd7d3","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-09-15 21:01:26.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-python-keystoneclient-python26 http://logs.openstack.org/38/221738/2/gate/gate-python-keystoneclient-python26/4f99188/ : SUCCESS in 2m 08s\n- gate-python-keystoneclient-docs http://docs-draft.openstack.org/38/221738/2/gate/gate-python-keystoneclient-docs/e7f6da5//doc/build/html/ : SUCCESS in 3m 20s\n- gate-python-keystoneclient-pep8 http://logs.openstack.org/38/221738/2/gate/gate-python-keystoneclient-pep8/b5b8727/ : SUCCESS in 2m 26s\n- gate-python-keystoneclient-python27 http://logs.openstack.org/38/221738/2/gate/gate-python-keystoneclient-python27/ca6f79d/ : SUCCESS in 2m 52s\n- gate-python-keystoneclient-python34 http://logs.openstack.org/38/221738/2/gate/gate-python-keystoneclient-python34/c8eb1a5/ : SUCCESS in 3m 26s\n- gate-tempest-dsvm-neutron-src-python-keystoneclient http://logs.openstack.org/38/221738/2/gate/gate-tempest-dsvm-neutron-src-python-keystoneclient/e9ba3e6/ : SUCCESS in 56m 29s\n- gate-keystoneclient-dsvm-functional http://logs.openstack.org/38/221738/2/gate/gate-keystoneclient-dsvm-functional/90bb9c1/ : SUCCESS in 20m 23s\n- gate-python-keystoneclient-tox-bandit http://logs.openstack.org/38/221738/2/gate/gate-python-keystoneclient-tox-bandit/5be2b38/ : SUCCESS in 2m 36s","accounts_in_message":[],"_revision_number":2},{"id":"d0a87d015c0cc0404338070c88b6401a1dd8428f","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-09-15 21:01:27.000000000","message":"Change has been successfully merged into the git repository.","accounts_in_message":[],"_revision_number":2},{"id":"c39e9f1ce9cf1e8d648c98fe38c0ce4d79ffb93b","author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"date":"2015-09-30 11:04:08.000000000","message":"Patch Set 2: Cherry Picked\n\nThis patchset was cherry picked to branch stable/liberty as commit 536a9c8cea3ad0f5ae22480d25631e01cfb66481","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"556c1a6633931207370106478fa2d155fbffb126","revisions":{"f6772a991b4e3a9e66ffb476b8195b12694149c8":{"kind":"REWORK","_number":1,"created":"2015-09-09 12:39:29.000000000","uploader":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"ref":"refs/changes/38/221738/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-keystoneclient","ref":"refs/changes/38/221738/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-keystoneclient refs/changes/38/221738/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-keystoneclient refs/changes/38/221738/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-keystoneclient refs/changes/38/221738/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-keystoneclient refs/changes/38/221738/1"}}},"commit":{"parents":[{"commit":"28138b588224c6b0503620ac2e24bd37dad25370","subject":"Merge \"Adding back exception mapping for ConnectionError\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-keystoneclient/commit/28138b588224c6b0503620ac2e24bd37dad25370"}]}],"author":{"name":"Jamie Lennox","email":"jamielennox@redhat.com","date":"2015-09-09 12:38:04.000000000","tz":600},"committer":{"name":"Jamie Lennox","email":"jamielennox@redhat.com","date":"2015-09-09 12:38:04.000000000","tz":600},"subject":"Identity plugin thread safety","message":"Identity plugin thread safety\n\nA common case is for Nova (or other service) to create an admin\nauthentication from a CONF file and then have many greenlet threads that\nwant to reuse that authentication. If a token expires then many threads\nall try and fetch a new token to use and can step over each other.\n\nI was hoping for a way to put a lock in so that all plugins were thread\nsafe however fixing it for identity plugins solves almost all real world\nsituations and anyone doing non-identity plugins will have to manage\nthreads themselves.\n\nChange-Id: Ib6487de7de638abc69660c851bd048a8ec177109\nCloses-Bug: #1493835\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-keystoneclient/commit/f6772a991b4e3a9e66ffb476b8195b12694149c8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-keystoneclient/commit/f6772a991b4e3a9e66ffb476b8195b12694149c8"}]},"branch":"refs/heads/master"},"556c1a6633931207370106478fa2d155fbffb126":{"kind":"REWORK","_number":2,"created":"2015-09-10 00:18:58.000000000","uploader":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"ref":"refs/changes/38/221738/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-keystoneclient","ref":"refs/changes/38/221738/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-keystoneclient refs/changes/38/221738/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-keystoneclient refs/changes/38/221738/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-keystoneclient refs/changes/38/221738/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-keystoneclient refs/changes/38/221738/2"}}},"commit":{"parents":[{"commit":"28138b588224c6b0503620ac2e24bd37dad25370","subject":"Merge \"Adding back exception mapping for ConnectionError\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-keystoneclient/commit/28138b588224c6b0503620ac2e24bd37dad25370"}]}],"author":{"name":"Jamie Lennox","email":"jamielennox@redhat.com","date":"2015-09-09 12:38:04.000000000","tz":600},"committer":{"name":"Jamie Lennox","email":"jamielennox@redhat.com","date":"2015-09-10 00:18:36.000000000","tz":600},"subject":"Identity plugin thread safety","message":"Identity plugin thread safety\n\nA common case is for Nova (or other service) to create a service\nauthentication plugin from a configuration file and then have many\ngreenlet threads that want to reuse that authentication. If a token\nexpires then many threads all try and fetch a new token to use and can\nstep over each other.\n\nI was hoping for a way to put a lock in so that all plugins were thread\nsafe however fixing it for identity plugins solves almost all real world\nsituations and anyone doing non-identity plugins will have to manage\nthreads themselves.\n\nChange-Id: Ib6487de7de638abc69660c851bd048a8ec177109\nCloses-Bug: #1493835\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-keystoneclient/commit/556c1a6633931207370106478fa2d155fbffb126"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-keystoneclient/commit/556c1a6633931207370106478fa2d155fbffb126"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
