diff --git a/manila/db/sqlalchemy/models.py b/manila/db/sqlalchemy/models.py index f739a1849a..718dcbe3be 100644 --- a/manila/db/sqlalchemy/models.py +++ b/manila/db/sqlalchemy/models.py @@ -590,7 +590,7 @@ def state(self): instance_mappings = orm.relationship( "ShareInstanceAccessMapping", - lazy='immediate', + lazy='selectin', primaryjoin=( 'and_(' 'ShareAccessMapping.id == ' @@ -621,7 +621,7 @@ class ShareAccessRulesMetadata(BASE, ManilaBase): access = orm.relationship( ShareAccessMapping, backref="share_access_rules_metadata", foreign_keys=access_id, - lazy='immediate', + lazy='selectin', primaryjoin='and_(' 'ShareAccessRulesMetadata.access_id == ShareAccessMapping.id,' 'ShareAccessRulesMetadata.deleted == "False")') @@ -646,7 +646,7 @@ def set_share_access_data(self, share_access): instance = orm.relationship( "ShareInstance", - lazy='immediate', + lazy='selectin', primaryjoin=( 'and_(' 'ShareInstanceAccessMapping.share_instance_id == ' @@ -856,7 +856,7 @@ def size(self): export_locations = orm.relationship( "ShareSnapshotInstanceExportLocation", - lazy='immediate', + lazy='selectin', primaryjoin=( 'and_(' 'ShareSnapshotInstance.id == ' @@ -866,7 +866,7 @@ def size(self): ) share_instance = orm.relationship( ShareInstance, backref="snapshot_instances", - lazy='immediate', + lazy='selectin', primaryjoin=( 'and_(' 'ShareSnapshotInstance.share_instance_id == ShareInstance.id,' @@ -874,7 +874,7 @@ def size(self): ) snapshot = orm.relationship( "ShareSnapshot", - lazy="immediate", + lazy='selectin', foreign_keys=snapshot_id, backref="instances", primaryjoin=( @@ -888,7 +888,7 @@ def size(self): ) share_group_snapshot = orm.relationship( "ShareGroupSnapshot", - lazy="immediate", + lazy='selectin', foreign_keys=share_group_snapshot_id, backref="share_group_snapshot_members", primaryjoin=('ShareGroupSnapshot.id == ' @@ -921,7 +921,7 @@ def state(self): instance_mappings = orm.relationship( "ShareSnapshotInstanceAccessMapping", - lazy='immediate', + lazy='selectin', primaryjoin=( 'and_(' 'ShareSnapshotAccessMapping.id == ' @@ -952,7 +952,7 @@ def set_snapshot_access_data(self, snapshot_access): instance = orm.relationship( "ShareSnapshotInstance", - lazy='immediate', + lazy='selectin', primaryjoin=( 'and_(' 'ShareSnapshotInstanceAccessMapping.share_snapshot_instance_id == ' diff --git a/releasenotes/notes/bug-1859785-share-snapshot-and-access-list-speed-improvement-a7a0c4019de1164d.yaml b/releasenotes/notes/bug-1859785-share-snapshot-and-access-list-speed-improvement-a7a0c4019de1164d.yaml new file mode 100644 index 0000000000..730f40d6ee --- /dev/null +++ b/releasenotes/notes/bug-1859785-share-snapshot-and-access-list-speed-improvement-a7a0c4019de1164d.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + Improved share snapshot and access list speed using lazy='selectin'. The + sqlalchemy models of share snapshot and access rule relationships previously + had lazy='immediate'. This resulted in extra queries when querying for all + share snapshot and access rule details.