)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e777df9e859b296212403d7ec973f9c54150b346","unresolved":false,"context_lines":[{"line_number":9,"context_line":"list_users has some excess looping that could be consolidated to gain"},{"line_number":10,"context_line":"some performance improvements. This change refactors a few of these"},{"line_number":11,"context_line":"loops for _set_domain_id_and_mapping as well as removing the conf"},{"line_number":12,"context_line":"object which does not need to be passed around."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Also added another federated user to the list_users test in"},{"line_number":15,"context_line":"test_backends for additional coverage to show that this change does not"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f7c97a3_807553fc","line":12,"updated":"2018-05-14 21:41:38.000000000","message":"Even if it\u0027s against a dev box, is it possible to document the performance improvements of this patch?","commit_id":"a9941d6e0497adb21f68d7516639f394dde80e0f"}],"keystone/identity/core.py":[{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"deb2f4252fc1e963b91d7cf4429ebf3ec4581d6e","unresolved":false,"context_lines":[{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":"        res \u003d driver.list_users(hints)"},{"line_number":1050,"context_line":"        if shadow_user:"},{"line_number":1051,"context_line":"            fed_hints \u003d copy.deepcopy(hints)"},{"line_number":1052,"context_line":"            res +\u003d PROVIDERS.shadow_users_api.get_federated_users(fed_hints)"},{"line_number":1053,"context_line":""},{"line_number":1054,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_6d0c6f94","line":1051,"range":{"start_line":1051,"start_character":0,"end_line":1051,"end_character":44},"updated":"2018-03-19 02:29:58.000000000","message":"deepcopy should be done before L1049, because \"driver.list_users(hints)\" will clean the filter in hints, then fed_hints here actually contains no fitlers.\nThe test \"tests.unit.identity.test_backends.IdentityTests.test_list_users_with_name\"[1] doesn\u0027t raise error due to there is only one federated user in the test, if rewrite it to[2], you can find the  test will fail with this patch.\n\n[1]: https://github.com/openstack/keystone/blob/master/keystone/tests/unit/identity/test_backends.py#L558-L579\n[2]: http://paste.openstack.org/show/703968/","commit_id":"dd94c8158c8f66f8196e234ea016e7f2b4d649fc"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"768a51400f12feff9b279977f5fbb2ed619e4ed0","unresolved":false,"context_lines":[{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":"        res \u003d driver.list_users(hints)"},{"line_number":1050,"context_line":"        if shadow_user:"},{"line_number":1051,"context_line":"            fed_hints \u003d copy.deepcopy(hints)"},{"line_number":1052,"context_line":"            res +\u003d PROVIDERS.shadow_users_api.get_federated_users(fed_hints)"},{"line_number":1053,"context_line":""},{"line_number":1054,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_b812b961","line":1051,"range":{"start_line":1051,"start_character":0,"end_line":1051,"end_character":44},"in_reply_to":"df7087c5_6d0c6f94","updated":"2018-03-19 14:44:46.000000000","message":"nice catch, will fix","commit_id":"dd94c8158c8f66f8196e234ea016e7f2b4d649fc"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"803b03db7d43601f7d0a38ba8630f527c36c5c27","unresolved":false,"context_lines":[{"line_number":669,"context_line":"            self._insert_domain_id_if_needed(r, driver, domain_id)"},{"line_number":670,"context_line":"            refs_map[(r[\u0027id\u0027], entity_type, r[\u0027domain_id\u0027])] \u003d r"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        if not self._is_mapping_needed(driver):"},{"line_number":673,"context_line":"            return ref_list"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"        # fetch all mappings for the domain, lookup the user at the map built"},{"line_number":676,"context_line":"        # at previous step and replace his id."}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_3b3fa3d7","line":673,"range":{"start_line":672,"start_character":8,"end_line":673,"end_character":27},"updated":"2018-03-23 16:57:37.000000000","message":"This check actually needs to be run before refs_map is created. Changing this actually decreases performance since now the map is created even if it\u0027s not needed.","commit_id":"5d349fc3658662d86355e7e3ba5a9b9fb0a3024f"}]}
