)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"d2a52e5b4884b86b95766f7a252a6f40afce1441","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Now, when get the volume without limit, cinder will get all volume"},{"line_number":10,"context_line":"information from db first. Then get the max limit from CONF and filter it."},{"line_number":11,"context_line":"It will waste much time to do it if there are mass volumes information in db."},{"line_number":12,"context_line":"So A better way is to get volume directly from db with default limit if"},{"line_number":13,"context_line":"there is no limit passed in."},{"line_number":14,"context_line":"This patch also passed offset to db layer and process with index together."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a4dcd0f_50516761","line":12,"updated":"2015-08-10 11:36:19.000000000","message":"s/A/a","commit_id":"8f024b1564104937dbcb900b18e5ea391b4cde3b"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d293e7cd7007d413fa847d46f56844ade9a1af0b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Now, when get the volume without limit, cinder will get all volume"},{"line_number":10,"context_line":"information from db first. Then get the max limit from CONF and filter it."},{"line_number":11,"context_line":"It will waste much time to do it if there are mass volumes information in"},{"line_number":12,"context_line":"db."},{"line_number":13,"context_line":"So a better way is to get volume directly from db with default limit and"},{"line_number":14,"context_line":"offset if there is no limit passed in."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a4dcd0f_6400fc02","line":12,"updated":"2015-08-12 06:54:15.000000000","message":"I think it will also take many memory, do you have some test data about this?","commit_id":"db117fcc3d6181010840fddb99a5cb3dbe9ee4ee"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"50cdb117b39b90dd28d203852411a81e15c29e8a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improve the efficiency of volume index"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now, when get the volume without limit, cinder will get all volume"},{"line_number":10,"context_line":"information from db first. Then get the max limit from CONF and filter it."},{"line_number":11,"context_line":"It will waste many memory to do it if there are mass volumes information"},{"line_number":12,"context_line":"in db. So a better way is to get volume directly from db with default limit"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a4dcd0f_800aaf77","line":9,"updated":"2015-08-12 19:27:13.000000000","message":"Suggestion: \"As it stands right now, when retrieving the volume without limit, Cinder ...\".","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"a316d876c92b88e9f7ee58d086a524ec42988636","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improve the efficiency of volume index"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now, when get the volume without limit, cinder will get all volume"},{"line_number":10,"context_line":"information from db first. Then get the max limit from CONF and filter it."},{"line_number":11,"context_line":"It will waste many memory to do it if there are mass volumes information"},{"line_number":12,"context_line":"in db. So a better way is to get volume directly from db with default limit"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a4dcd0f_41c81fa8","line":9,"in_reply_to":"1a4dcd0f_800aaf77","updated":"2015-08-13 01:13:52.000000000","message":"Thanks very much.","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"50cdb117b39b90dd28d203852411a81e15c29e8a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now, when get the volume without limit, cinder will get all volume"},{"line_number":10,"context_line":"information from db first. Then get the max limit from CONF and filter it."},{"line_number":11,"context_line":"It will waste many memory to do it if there are mass volumes information"},{"line_number":12,"context_line":"in db. So a better way is to get volume directly from db with default limit"},{"line_number":13,"context_line":"and offset if there is no limit passed in."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a4dcd0f_40d4a7ea","line":11,"updated":"2015-08-12 19:27:13.000000000","message":"Suggestion: \"It will waste a lot of memory to do this if ...\".","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"a316d876c92b88e9f7ee58d086a524ec42988636","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now, when get the volume without limit, cinder will get all volume"},{"line_number":10,"context_line":"information from db first. Then get the max limit from CONF and filter it."},{"line_number":11,"context_line":"It will waste many memory to do it if there are mass volumes information"},{"line_number":12,"context_line":"in db. So a better way is to get volume directly from db with default limit"},{"line_number":13,"context_line":"and offset if there is no limit passed in."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a4dcd0f_61cbdba4","line":11,"in_reply_to":"1a4dcd0f_40d4a7ea","updated":"2015-08-13 01:13:52.000000000","message":"Done","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"50cdb117b39b90dd28d203852411a81e15c29e8a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"in db. So a better way is to get volume directly from db with default limit"},{"line_number":13,"context_line":"and offset if there is no limit passed in."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Here are some test data:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Env: There are 60,000 volumes items, 370,000 volume_metadata items and"},{"line_number":18,"context_line":"240,000 volume_glance_metadata items in cinder db."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a4dcd0f_5b001634","line":15,"updated":"2015-08-12 19:27:13.000000000","message":"Suggestion: \"Here is some of the test data:\"","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"a316d876c92b88e9f7ee58d086a524ec42988636","unresolved":false,"context_lines":[{"line_number":12,"context_line":"in db. So a better way is to get volume directly from db with default limit"},{"line_number":13,"context_line":"and offset if there is no limit passed in."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Here are some test data:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Env: There are 60,000 volumes items, 370,000 volume_metadata items and"},{"line_number":18,"context_line":"240,000 volume_glance_metadata items in cinder db."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a4dcd0f_01c77796","line":15,"in_reply_to":"1a4dcd0f_5b001634","updated":"2015-08-13 01:13:52.000000000","message":"Done","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"50cdb117b39b90dd28d203852411a81e15c29e8a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"240,000 volume_glance_metadata items in cinder db."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Old volume index will use nearly 10G memory."},{"line_number":21,"context_line":"The new one just use about 500M memory."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I1423c574a820a54d5bd7a5468f98ac5092c5f40e"},{"line_number":24,"context_line":"Closes-bug:#1483165"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a4dcd0f_80338f61","line":21,"updated":"2015-08-12 19:27:13.000000000","message":"Suggestion: \"The new volume index will just use about ...\".","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"a316d876c92b88e9f7ee58d086a524ec42988636","unresolved":false,"context_lines":[{"line_number":18,"context_line":"240,000 volume_glance_metadata items in cinder db."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Old volume index will use nearly 10G memory."},{"line_number":21,"context_line":"The new one just use about 500M memory."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I1423c574a820a54d5bd7a5468f98ac5092c5f40e"},{"line_number":24,"context_line":"Closes-bug:#1483165"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a4dcd0f_21c2b385","line":21,"in_reply_to":"1a4dcd0f_80338f61","updated":"2015-08-13 01:13:52.000000000","message":"Done","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"}],"cinder/api/common.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"920bd8696bade9f57d6b310dac9c593380c84fb0","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def get_limit_and_offset(request, max_limit\u003dCONF.osapi_max_limit):"},{"line_number":112,"context_line":"    \"\"\"get limited parameter from request.\"\"\""},{"line_number":113,"context_line":"    try:"},{"line_number":114,"context_line":"        limit \u003d int(request.params.get(\u0027limit\u0027, max_limit))"},{"line_number":115,"context_line":"    except ValueError:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_f7dee0d8","line":112,"updated":"2015-08-12 16:01:26.000000000","message":"docstring should have :param for request and max_limit","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"a316d876c92b88e9f7ee58d086a524ec42988636","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def get_limit_and_offset(request, max_limit\u003dCONF.osapi_max_limit):"},{"line_number":112,"context_line":"    \"\"\"get limited parameter from request.\"\"\""},{"line_number":113,"context_line":"    try:"},{"line_number":114,"context_line":"        limit \u003d int(request.params.get(\u0027limit\u0027, max_limit))"},{"line_number":115,"context_line":"    except ValueError:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_fe0ea639","line":112,"in_reply_to":"1a4dcd0f_f7dee0d8","updated":"2015-08-13 01:13:52.000000000","message":"Done, I\u0027ll update later.","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"920bd8696bade9f57d6b310dac9c593380c84fb0","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    except ValueError:"},{"line_number":116,"context_line":"        msg \u003d _(\u0027Limit param must be an integer.\u0027)"},{"line_number":117,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":118,"context_line":"    if limit \u003c 0:"},{"line_number":119,"context_line":"        msg \u003d _(\u0027Limit param must be positive.\u0027)"},{"line_number":120,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_f78ca0d8","line":118,"updated":"2015-08-12 16:01:26.000000000","message":"Sorry, I don\u0027t know the answer to this, but what if limit \u003d\u003d 0? Will that value work?","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"4e8230abd87f2c8ea77933f64bbd7f1cf6938ba3","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    except ValueError:"},{"line_number":116,"context_line":"        msg \u003d _(\u0027Limit param must be an integer.\u0027)"},{"line_number":117,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":118,"context_line":"    if limit \u003c 0:"},{"line_number":119,"context_line":"        msg \u003d _(\u0027Limit param must be positive.\u0027)"},{"line_number":120,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_1e0a7226","line":118,"in_reply_to":"1a4dcd0f_f78ca0d8","updated":"2015-08-13 01:03:33.000000000","message":"If limit \u003d\u003d 0, empty volume list will be returned to user. It\u0027s a valid value.","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"a316d876c92b88e9f7ee58d086a524ec42988636","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    except ValueError:"},{"line_number":116,"context_line":"        msg \u003d _(\u0027Limit param must be an integer.\u0027)"},{"line_number":117,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":118,"context_line":"    if limit \u003c 0:"},{"line_number":119,"context_line":"        msg \u003d _(\u0027Limit param must be positive.\u0027)"},{"line_number":120,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_5e131a65","line":118,"in_reply_to":"1a4dcd0f_f78ca0d8","updated":"2015-08-13 01:13:52.000000000","message":"if limit\u003d0, it will return a dict without volume. The old volume index did the same too.","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"920bd8696bade9f57d6b310dac9c593380c84fb0","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        msg \u003d _(\u0027Offset param must be an integer.\u0027)"},{"line_number":128,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    if offset \u003c 0:"},{"line_number":131,"context_line":"        msg \u003d _(\u0027Offset param must be positive.\u0027)"},{"line_number":132,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_97be7c63","line":130,"updated":"2015-08-12 16:01:26.000000000","message":"Sorry, I don\u0027t know the answer to this, but what if limit \u003d\u003d 0? Will that value work?","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"a316d876c92b88e9f7ee58d086a524ec42988636","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        msg \u003d _(\u0027Offset param must be an integer.\u0027)"},{"line_number":128,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    if offset \u003c 0:"},{"line_number":131,"context_line":"        msg \u003d _(\u0027Offset param must be positive.\u0027)"},{"line_number":132,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_c11bcf71","line":130,"in_reply_to":"1a4dcd0f_97be7c63","updated":"2015-08-13 01:13:52.000000000","message":"if offset\u003d0, the result will get the original index data, no offset any more.","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"}],"cinder/api/v2/volumes.py":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d293e7cd7007d413fa847d46f56844ade9a1af0b","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        for volume in volumes:"},{"line_number":265,"context_line":"            utils.add_visible_admin_metadata(volume)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        if len(volumes) \u003c CONF.osapi_max_limit:"},{"line_number":268,"context_line":"            volume_count \u003d len(volumes)"},{"line_number":269,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_a4528465","line":266,"updated":"2015-08-12 06:54:15.000000000","message":"Please add some annotations to explain this logic.","commit_id":"db117fcc3d6181010840fddb99a5cb3dbe9ee4ee"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"4cfab4e0e16f2e625b89ade17f0374e296a8c1d8","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        params.pop(\u0027limit\u0027, None)"},{"line_number":233,"context_line":"        params.pop(\u0027offset\u0027, None)"},{"line_number":234,"context_line":"        filters \u003d params"},{"line_number":235,"context_line":"        limit, offset \u003d common.get_limit_and_offset(req)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        utils.remove_invalid_filter_options(context,"},{"line_number":238,"context_line":"                                            filters,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_2383b757","line":235,"updated":"2015-08-12 13:27:32.000000000","message":"Nitpicking: If the \u0027limit\u0027 variable is not used later in the code, I\u0027d suggest changing its name. I know we cannot use \u0027_\u0027, but maybe something like \u0027_limit\u0027 or even \u0027unused\u0027. WDYT ?","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"a316d876c92b88e9f7ee58d086a524ec42988636","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        params.pop(\u0027limit\u0027, None)"},{"line_number":233,"context_line":"        params.pop(\u0027offset\u0027, None)"},{"line_number":234,"context_line":"        filters \u003d params"},{"line_number":235,"context_line":"        limit, offset \u003d common.get_limit_and_offset(req)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        utils.remove_invalid_filter_options(context,"},{"line_number":238,"context_line":"                                            filters,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_a1a003f5","line":235,"in_reply_to":"1a4dcd0f_2383b757","updated":"2015-08-13 01:13:52.000000000","message":"Hi, Cyril, the default value of limit is CONF.osapi_max_limit. It means that limit will always be used. It will be passed to self.volume_api.get_all(). See L255. Thanks.","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"920bd8696bade9f57d6b310dac9c593380c84fb0","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            utils.add_visible_admin_metadata(volume)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        # If the number of volumes equals the max, the volume count should"},{"line_number":268,"context_line":"        # plus 1 to let the index result contain the next link."},{"line_number":269,"context_line":"        if len(volumes) \u003d\u003d CONF.osapi_max_limit:"},{"line_number":270,"context_line":"            volume_count \u003d len(volumes) + 1"},{"line_number":271,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_370a0827","line":268,"updated":"2015-08-12 16:01:26.000000000","message":"\"should plus 1\" -\u003e \"should be 1 greater\"","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"a316d876c92b88e9f7ee58d086a524ec42988636","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            utils.add_visible_admin_metadata(volume)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        # If the number of volumes equals the max, the volume count should"},{"line_number":268,"context_line":"        # plus 1 to let the index result contain the next link."},{"line_number":269,"context_line":"        if len(volumes) \u003d\u003d CONF.osapi_max_limit:"},{"line_number":270,"context_line":"            volume_count \u003d len(volumes) + 1"},{"line_number":271,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_e1160b48","line":268,"in_reply_to":"1a4dcd0f_370a0827","updated":"2015-08-13 01:13:52.000000000","message":"Done","commit_id":"3dc21dbf6b40bcdadc3630dce612c812062cad7d"}]}
