]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Eager load columns in volume_get_active_by_window
authorMichał Dulko <michal.dulko@intel.com>
Fri, 20 Nov 2015 11:36:22 +0000 (12:36 +0100)
committerMichał Dulko <michal.dulko@intel.com>
Sat, 21 Nov 2015 16:17:01 +0000 (17:17 +0100)
All other volume-related methods in db.sqlalchemy.api are eager loading
volume_metadata, volume_admin_metadata (if admin), volume_type,
volume_attachment and consistencygroup. volume_get_active_by_window
wasn't, causing fails because of SQLAlchemy Session being closed when
trying to lazy load volume_metadata. This commit adds missing
options(joinedload()) to this query.

Change-Id: I33ec89d7f1f43aae6010aaa6e12951b7c522b8f0
Closes-Bug: 1517763
Related-Bug: 1501838

cinder/db/sqlalchemy/api.py

index b3869e0aef2dae8a4b0fad1ab4707bbb4ad1d601..3830df61695e75579bca8fef8c576579c33078d1 100644 (file)
@@ -2769,6 +2769,14 @@ def volume_get_active_by_window(context,
     if project_id:
         query = query.filter_by(project_id=project_id)
 
+    query = (query.options(joinedload('volume_metadata')).
+             options(joinedload('volume_type')).
+             options(joinedload('volume_attachment')).
+             options(joinedload('consistencygroup')))
+
+    if is_admin_context(context):
+        query = query.options(joinedload('volume_admin_metadata'))
+
     return query.all()