summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2012-05-25 12:25:23 -0400
committerDan Prince <dprince@redhat.com>2012-05-30 12:41:19 -0400
commitd26ed3aee130646be0e042f29f3af64f1d73608e (patch)
treefd4b103d490f70d30554c287ea476f4b02d160ec
parentf06624ef9415dfb3343a357c156f035c29fa01ef (diff)
downloadnova-d26ed3aee130646be0e042f29f3af64f1d73608e.tar.gz
nova-d26ed3aee130646be0e042f29f3af64f1d73608e.tar.xz
nova-d26ed3aee130646be0e042f29f3af64f1d73608e.zip
Fix reservation_commit so it works w/ PostgreSQL.
Update the Reservation model so that the 'usage' relationship is explicitly forced to use an inner join. This fixes an issue on PostgreSQL which doesn't support 'SELECT FOR UPDATE' on outer joined queries. Fixes LP Bug #1003756. Change-Id: I3c40bd8481855a18391e12d7411762e91b1ef8b0
-rw-r--r--nova/db/sqlalchemy/models.py2
1 files changed, 2 insertions, 0 deletions
diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py
index fa10356a6..b956ea606 100644
--- a/nova/db/sqlalchemy/models.py
+++ b/nova/db/sqlalchemy/models.py
@@ -465,9 +465,11 @@ class Reservation(BASE, NovaBase):
uuid = Column(String(36), nullable=False)
usage_id = Column(Integer, ForeignKey('quota_usages.id'), nullable=False)
+ # NOTE(dprince): Force innerjoin below for lockmode update on PostgreSQL
usage = relationship(QuotaUsage,
backref=backref('reservations'),
foreign_keys=usage_id,
+ innerjoin=True,
primaryjoin='and_('
'Reservation.usage_id == QuotaUsage.id,'
'Reservation.deleted == False)')