)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"06a00b0c0ea3df2165b190a5ee2a3383ebcb35fd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Min Song \u003cmin.song@workday.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-05 11:17:48 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use single connection in get_all function for getting \"enabled\" values for all ldap users."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"LDAP being enabled, any keystone commands that use get_all takes a lot of time, especially if there are many LDAP users (like ~3000),"},{"line_number":10,"context_line":"due to the fact that _get_enabled makes a new connection for each user."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3acd31a7_bca16548","line":7,"updated":"2015-05-05 18:48:08.000000000","message":"Please see https://wiki.openstack.org/wiki/GitCommitMessages \n\nIn particular, please limit the line widths.","commit_id":"7ecae61c62e4ac0dd3efd4dfaae9b554e9c7b8f3"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0b99dc31abb7f8450ffecfc55001598b1bf65c93","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This code change was tested on a VM, and it actually speeded up"},{"line_number":25,"context_line":"many keystone commands (user-list, user-role-add, user-delete,"},{"line_number":26,"context_line":"user-get) from 50 seconds to 4 seconds."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Closes-Bug: #1451910"},{"line_number":29,"context_line":"Change-Id: I3f5131c9eefa066f0d8ee5127322d686e09308df"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1aca2d91_ee0643cd","line":26,"updated":"2015-05-08 01:30:54.000000000","message":"Nice! What was the scenario? How many users?","commit_id":"142133b3cb71ac06c462b1f4ec05e3dafe2f991c"},{"author":{"_account_id":16217,"name":"Min Song","email":"ms2597@cornell.edu","username":"ms2597"},"change_message_id":"88e9a0d011a19933b79ec80aa89d1b9b81652125","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This code change was tested on a VM, and it actually speeded up"},{"line_number":25,"context_line":"many keystone commands (user-list, user-role-add, user-delete,"},{"line_number":26,"context_line":"user-get) from 50 seconds to 4 seconds."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Closes-Bug: #1451910"},{"line_number":29,"context_line":"Change-Id: I3f5131c9eefa066f0d8ee5127322d686e09308df"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1aca2d91_3d5c5cec","line":26,"in_reply_to":"1aca2d91_ee0643cd","updated":"2015-05-08 15:13:18.000000000","message":"In my case, I have about 4200 users.","commit_id":"142133b3cb71ac06c462b1f4ec05e3dafe2f991c"}],"keystone/common/ldap/core.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"f43b95d7135ab512e88cb800458c894a8eb35be2","unresolved":false,"context_lines":[{"line_number":1803,"context_line":"    def _get_enabled(self, object_id, conn\u003dNone):"},{"line_number":1804,"context_line":"        dn \u003d self._id_to_dn(object_id)"},{"line_number":1805,"context_line":"        query \u003d \u0027(member\u003d%s)\u0027 % dn"},{"line_number":1806,"context_line":"        if conn is None:"},{"line_number":1807,"context_line":"            with self.get_connection() as conn:"},{"line_number":1808,"context_line":"                try:"},{"line_number":1809,"context_line":"                    enabled_value \u003d conn.search_s(self.enabled_emulation_dn,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_b1d3ced4","line":1806,"updated":"2015-05-05 18:12:21.000000000","message":"The code in this with statement below is duplicated from the code in the else statement at line 1816.\n\nPlease change it to be:\n\n    if conn is None:\n        conn \u003d self.get_connection()\n    try:\n        ...","commit_id":"25d77f7691792d496de8fdaf6e48f00c067b44f2"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"f43b95d7135ab512e88cb800458c894a8eb35be2","unresolved":false,"context_lines":[{"line_number":1873,"context_line":"            tenant_list \u003d [self._ldap_res_to_model(x)"},{"line_number":1874,"context_line":"                           for x in self._ldap_get_all(ldap_filter)"},{"line_number":1875,"context_line":"                           if x[0] !\u003d self.enabled_emulation_dn]"},{"line_number":1876,"context_line":"            with self.get_connection as conn:"},{"line_number":1877,"context_line":"                for tenant_ref in tenant_list:"},{"line_number":1878,"context_line":"                    tenant_ref[\u0027enabled\u0027] \u003d self._get_enabled(tenant_ref[\u0027id\u0027], conn)"},{"line_number":1879,"context_line":"            return tenant_list"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_11f04266","line":1876,"updated":"2015-05-05 18:12:21.000000000","message":"Use self.get_connection() instead of self.get_connection","commit_id":"25d77f7691792d496de8fdaf6e48f00c067b44f2"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"ea67967e4222ea7dbcbe6bef273f151d7ad7f6ed","unresolved":false,"context_lines":[{"line_number":1864,"context_line":"            tenant_list \u003d [self._ldap_res_to_model(x)"},{"line_number":1865,"context_line":"                           for x in self._ldap_get_all(ldap_filter)"},{"line_number":1866,"context_line":"                           if x[0] !\u003d self.enabled_emulation_dn]"},{"line_number":1867,"context_line":"            with self.get_connection as conn:"},{"line_number":1868,"context_line":"                for tenant_ref in tenant_list:"},{"line_number":1869,"context_line":"                    tenant_ref[\u0027enabled\u0027] \u003d self._get_enabled(tenant_ref[\u0027id\u0027], conn)"},{"line_number":1870,"context_line":"            return tenant_list"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_878956cd","line":1867,"updated":"2015-05-06 04:53:24.000000000","message":"Tests are failing, change \u0027self.get_connection\u0027 to \u0027self.get_connection()\u0027\n\nDon\u0027t forget the ()","commit_id":"46caca4b02c519ea344595233367d325c50251ed"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"ea67967e4222ea7dbcbe6bef273f151d7ad7f6ed","unresolved":false,"context_lines":[{"line_number":1866,"context_line":"                           if x[0] !\u003d self.enabled_emulation_dn]"},{"line_number":1867,"context_line":"            with self.get_connection as conn:"},{"line_number":1868,"context_line":"                for tenant_ref in tenant_list:"},{"line_number":1869,"context_line":"                    tenant_ref[\u0027enabled\u0027] \u003d self._get_enabled(tenant_ref[\u0027id\u0027], conn)"},{"line_number":1870,"context_line":"            return tenant_list"},{"line_number":1871,"context_line":"        else:"},{"line_number":1872,"context_line":"            return super(EnabledEmuMixIn, self).get_all(ldap_filter)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_c7e74eab","line":1869,"updated":"2015-05-06 04:53:24.000000000","message":"This line is too long, making pep8 to fail:\n\n./keystone/common/ldap/core.py:1869:80: E501 line too long (85 \u003e 79 characters)","commit_id":"46caca4b02c519ea344595233367d325c50251ed"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"6b648b08307d23cab3015a4ffe37a81a45168687","unresolved":false,"context_lines":[{"line_number":1804,"context_line":"        dn \u003d self._id_to_dn(object_id)"},{"line_number":1805,"context_line":"        query \u003d \u0027(member\u003d%s)\u0027 % dn"},{"line_number":1806,"context_line":"        if conn is None:"},{"line_number":1807,"context_line":"            conn \u003d self.get_connection()"},{"line_number":1808,"context_line":"        try:"},{"line_number":1809,"context_line":"            enabled_value \u003d conn.search_s(self.enabled_emulation_dn,"},{"line_number":1810,"context_line":"                                          ldap.SCOPE_BASE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a0c5dc1_a5aad917","line":1807,"updated":"2015-05-12 20:14:38.000000000","message":"You are no longer getting the benefit of the context manager for all of the other cases you don\u0027t explicitly pass in a connection. Under high load the connections may not be properly cleaned up. Were you able to test for this?","commit_id":"142133b3cb71ac06c462b1f4ec05e3dafe2f991c"},{"author":{"_account_id":16217,"name":"Min Song","email":"ms2597@cornell.edu","username":"ms2597"},"change_message_id":"cee5a679769e4979578f3fd4a01be9aa4cb699d2","unresolved":false,"context_lines":[{"line_number":1804,"context_line":"        dn \u003d self._id_to_dn(object_id)"},{"line_number":1805,"context_line":"        query \u003d \u0027(member\u003d%s)\u0027 % dn"},{"line_number":1806,"context_line":"        if conn is None:"},{"line_number":1807,"context_line":"            conn \u003d self.get_connection()"},{"line_number":1808,"context_line":"        try:"},{"line_number":1809,"context_line":"            enabled_value \u003d conn.search_s(self.enabled_emulation_dn,"},{"line_number":1810,"context_line":"                                          ldap.SCOPE_BASE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a0c5dc1_097897f1","line":1807,"in_reply_to":"9a0c5dc1_a5aad917","updated":"2015-05-13 00:26:59.000000000","message":"Thank for your comment. \n\nThen I think I just need to make this function like this....\n\nif conn is None:\n    with self.get_connection() as conn:\n        .... \n        try:\n        except\n        else:\nelse:\n    try:\n    except\n    else:\n\n\nLet me know if there\u0027s a better way!","commit_id":"142133b3cb71ac06c462b1f4ec05e3dafe2f991c"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c0ee0d5ca62accf932c36663981f2f609521136d","unresolved":false,"context_lines":[{"line_number":1804,"context_line":"        dn \u003d self._id_to_dn(object_id)"},{"line_number":1805,"context_line":"        query \u003d \u0027(member\u003d%s)\u0027 % dn"},{"line_number":1806,"context_line":"        if conn is None:"},{"line_number":1807,"context_line":"            conn \u003d self.get_connection()"},{"line_number":1808,"context_line":"        try:"},{"line_number":1809,"context_line":"            enabled_value \u003d conn.search_s(self.enabled_emulation_dn,"},{"line_number":1810,"context_line":"                                          ldap.SCOPE_BASE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a0c5dc1_de1233b4","line":1807,"in_reply_to":"9a0c5dc1_a5aad917","updated":"2015-05-12 23:33:40.000000000","message":"good catch!","commit_id":"142133b3cb71ac06c462b1f4ec05e3dafe2f991c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4b0f74a6bf0de13aa71ac1686357936ef465effa","unresolved":false,"context_lines":[{"line_number":1813,"context_line":"            return bool(enabled_value)"},{"line_number":1814,"context_line":""},{"line_number":1815,"context_line":"    def _add_enabled(self, object_id):"},{"line_number":1816,"context_line":"        with self.get_connection() as conn:"},{"line_number":1817,"context_line":"            if not self._get_enabled(object_id, conn):"},{"line_number":1818,"context_line":"                modlist \u003d [(ldap.MOD_ADD,"},{"line_number":1819,"context_line":"                            \u0027member\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a0c5dc1_f6d05c55","line":1816,"updated":"2015-05-13 17:24:16.000000000","message":"I haven\u0027t thought through all of the implications of this change, but the logic here is a little different. In the previous version the \u0027if\u0027 statement would prevent the code in the try-except from executing. In the new version this is no longer the case.\n\nI think a simple way to fix this would be change the \u0027if\u0027 to:\n\n    if self._get_enabled(object_id, conn):\n        return\n\nand outdent the \u0027modlist \u003d ...\u0027 statement once.","commit_id":"8a0f1a7293e2f730ef50b0664ce3ebedd66eb524"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"f8e0cc4671e11cb48833d8e2f489f35590b0972b","unresolved":false,"context_lines":[{"line_number":1855,"context_line":"            ref \u003d super(EnabledEmuMixIn, self).get(object_id, ldap_filter)"},{"line_number":1856,"context_line":"            if \u0027enabled\u0027 not in self.attribute_ignore and "},{"line_number":1857,"context_line":"                    self.enabled_emulation:"},{"line_number":1858,"context_line":"                ref[\u0027enabled\u0027] \u003d self._get_enabled(object_id, conn)"},{"line_number":1859,"context_line":"            return ref"},{"line_number":1860,"context_line":""},{"line_number":1861,"context_line":"    def get_all(self, ldap_filter\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_8308bf2e","line":1858,"updated":"2015-05-13 19:21:39.000000000","message":"There a problem with this indentation, you need to fix that.","commit_id":"4d4303eb2d621e47b01e986d8e6de0552f8c2f13"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"a020d4d206e479ba32c9b234a1442fd09390cf0a","unresolved":false,"context_lines":[{"line_number":1855,"context_line":"            ref \u003d super(EnabledEmuMixIn, self).get(object_id, ldap_filter)"},{"line_number":1856,"context_line":"            if \u0027enabled\u0027 not in self.attribute_ignore and "},{"line_number":1857,"context_line":"                    self.enabled_emulation:"},{"line_number":1858,"context_line":"                ref[\u0027enabled\u0027] \u003d self._get_enabled(object_id, conn)"},{"line_number":1859,"context_line":"            return ref"},{"line_number":1860,"context_line":""},{"line_number":1861,"context_line":"    def get_all(self, ldap_filter\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_1e2782b7","line":1858,"in_reply_to":"9a0c5dc1_8308bf2e","updated":"2015-05-13 19:22:37.000000000","message":"++ please run at least pep8 before submitting, but preferably the unit tests too","commit_id":"4d4303eb2d621e47b01e986d8e6de0552f8c2f13"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"fde89847dd46a7f3dcaf8b08b47d7f5530f8edd4","unresolved":false,"context_lines":[{"line_number":1853,"context_line":"    def get(self, object_id, ldap_filter\u003dNone):"},{"line_number":1854,"context_line":"        with self.get_connection() as conn:"},{"line_number":1855,"context_line":"            ref \u003d super(EnabledEmuMixIn, self).get(object_id, ldap_filter)"},{"line_number":1856,"context_line":"            if \u0027enabled\u0027 not in self.attribute_ignore and \\"},{"line_number":1857,"context_line":"               self.enabled_emulation:"},{"line_number":1858,"context_line":"                ref[\u0027enabled\u0027] \u003d self._get_enabled(object_id, conn)"},{"line_number":1859,"context_line":"            return ref"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_bae4b2df","line":1856,"updated":"2015-05-20 17:13:04.000000000","message":"(nit): use (  ) instead of \\","commit_id":"c4945a9bbcd58748d85b845273af6db6a1753f67"}]}
