From ab6e2237bf464ec0c4c432ec6047a98cb30db6c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dulko?= Date: Fri, 23 Oct 2015 11:59:48 +0200 Subject: [PATCH] Eager load snapshot_metadata in *snapshot_get_all All methods returning snapshot lists in db.sqlalchemy.api are eager loading snapshot_metadata - besides snapshot_get_all_by_project and snapshot_get_active_by_window. In case of the latter that fact caused unit tests to randomly fail because of SQLAlchemy Session sometimes getting closed before the metadata got lazy loaded. This commit adds missing options(joinedload('snapshot_metadata')) to these queries. Change-Id: I72557ebc7af9f3044046965ca79c9fe7c15520fc Closes-Bug: 1501838 --- cinder/db/sqlalchemy/api.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cinder/db/sqlalchemy/api.py b/cinder/db/sqlalchemy/api.py index a7bdceedc45..5ed047e59fe 100644 --- a/cinder/db/sqlalchemy/api.py +++ b/cinder/db/sqlalchemy/api.py @@ -2263,6 +2263,8 @@ def snapshot_get_all_by_project(context, project_id, filters=None, marker=None, # No snapshots would match, return empty list if not query: return [] + + query = query.options(joinedload('snapshot_metadata')) return query.all() @@ -2299,6 +2301,7 @@ def snapshot_get_active_by_window(context, begin, end=None, project_id=None): query = query.filter(or_(models.Snapshot.deleted_at == None, # noqa models.Snapshot.deleted_at > begin)) query = query.options(joinedload(models.Snapshot.volume)) + query = query.options(joinedload('snapshot_metadata')) if end: query = query.filter(models.Snapshot.created_at < end) if project_id: