)]}'
{"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"a04da37bf28080b0b8ffd77ccde5889d2d183101","unresolved":false,"context_lines":[{"line_number":590,"context_line":""},{"line_number":591,"context_line":"@require_context"},{"line_number":592,"context_line":"def quota_usage_get(context, project_id, resource):"},{"line_number":593,"context_line":"    result \u003d model_query(context, models.QuotaUsage, read_deleted\u003d\"no\").\\"},{"line_number":594,"context_line":"        filter_by(project_id\u003dproject_id).\\"},{"line_number":595,"context_line":"        filter_by(resource\u003dresource).\\"},{"line_number":596,"context_line":"        first()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUHc%3D","line":593,"updated":"2013-07-04 08:16:22.000000000","message":"Can you guarantee that no session here is OK? This is one place where session is removed. In other places, session\u003dget_session is used to get the session. Why some sessions are retained, some are removed?","commit_id":"414e07776ac080ca565ff4c39a21f7fa7a7ca3fe"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"83fa9706a8b9b4b83b22bee2713cae1e50d2b79a","unresolved":false,"context_lines":[{"line_number":590,"context_line":""},{"line_number":591,"context_line":"@require_context"},{"line_number":592,"context_line":"def quota_usage_get(context, project_id, resource):"},{"line_number":593,"context_line":"    result \u003d model_query(context, models.QuotaUsage, read_deleted\u003d\"no\").\\"},{"line_number":594,"context_line":"        filter_by(project_id\u003dproject_id).\\"},{"line_number":595,"context_line":"        filter_by(resource\u003dresource).\\"},{"line_number":596,"context_line":"        first()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUFU%3D","line":593,"in_reply_to":"AAAAPn%2F%2FUHc%3D","updated":"2013-07-04 08:41:24.000000000","message":"Hey, Vincent! Thanks for reviewing this!\n\nquota_usage_get() and other similar methods (\u0027getters\u0027) do a single SELECT query. There is no need to create a session explicitly - you can simply use model_query() helper function, which creates one automatically (if session argument isn\u0027t passed).\n\nSome \u0027getters\u0027 are called from other DP API methods. In the case the transcational context (session argument) must be passed by the caller to the callee. So a caller method creates a session explicitly using get_session() function and calls the private version of a \u0027getter\u0027 (its name starts with an underscore) passing it the created session instance.\n\nThis guarantees that public DB API methods are executed in a single transaction and private ones can participate in existing transactions (so private methods are no more than helpers to prevent code duplication).","commit_id":"414e07776ac080ca565ff4c39a21f7fa7a7ca3fe"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"a04da37bf28080b0b8ffd77ccde5889d2d183101","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"    result \u003d model_query(context,"},{"line_number":1014,"context_line":"                         func.count(models.Volume.id),"},{"line_number":1015,"context_line":"                         func.sum(models.Volume.size),"},{"line_number":1016,"context_line":"                         read_deleted\u003d\"no\").\\"},{"line_number":1017,"context_line":"        filter_by(host\u003dhost).\\"},{"line_number":1018,"context_line":"        first()"},{"line_number":1019,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUHY%3D","line":1016,"updated":"2013-07-04 08:16:22.000000000","message":"Can you guarantee that no session here is OK? This is one place where session is removed.","commit_id":"414e07776ac080ca565ff4c39a21f7fa7a7ca3fe"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"83fa9706a8b9b4b83b22bee2713cae1e50d2b79a","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"    result \u003d model_query(context,"},{"line_number":1014,"context_line":"                         func.count(models.Volume.id),"},{"line_number":1015,"context_line":"                         func.sum(models.Volume.size),"},{"line_number":1016,"context_line":"                         read_deleted\u003d\"no\").\\"},{"line_number":1017,"context_line":"        filter_by(host\u003dhost).\\"},{"line_number":1018,"context_line":"        first()"},{"line_number":1019,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUEY%3D","line":1016,"in_reply_to":"AAAAPn%2F%2FUHY%3D","updated":"2013-07-04 08:41:24.000000000","message":"This method does a single SELECT query, so model_query() helper will create one automatically. volume_data_get_for_host() (being a public DB API method) should not accept a session argument.\n\nThis method is not used by any other DB API methods, so no private version accepting a session instance is needed.","commit_id":"414e07776ac080ca565ff4c39a21f7fa7a7ca3fe"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"a04da37bf28080b0b8ffd77ccde5889d2d183101","unresolved":false,"context_lines":[{"line_number":2061,"context_line":""},{"line_number":2062,"context_line":"@require_context"},{"line_number":2063,"context_line":"def backup_get(context, backup_id):"},{"line_number":2064,"context_line":"    result \u003d model_query(context, models.Backup, project_only\u003dTrue).\\"},{"line_number":2065,"context_line":"        filter_by(id\u003dbackup_id).\\"},{"line_number":2066,"context_line":"        first()"},{"line_number":2067,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUHs%3D","line":2064,"updated":"2013-07-04 08:16:22.000000000","message":"Can you guarantee that no session here is OK? This is one place where session is removed.","commit_id":"414e07776ac080ca565ff4c39a21f7fa7a7ca3fe"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"83fa9706a8b9b4b83b22bee2713cae1e50d2b79a","unresolved":false,"context_lines":[{"line_number":2061,"context_line":""},{"line_number":2062,"context_line":"@require_context"},{"line_number":2063,"context_line":"def backup_get(context, backup_id):"},{"line_number":2064,"context_line":"    result \u003d model_query(context, models.Backup, project_only\u003dTrue).\\"},{"line_number":2065,"context_line":"        filter_by(id\u003dbackup_id).\\"},{"line_number":2066,"context_line":"        first()"},{"line_number":2067,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUEo%3D","line":2064,"in_reply_to":"AAAAPn%2F%2FUHs%3D","updated":"2013-07-04 08:41:24.000000000","message":"ditto","commit_id":"414e07776ac080ca565ff4c39a21f7fa7a7ca3fe"}]}
