diff options
| author | Dan Prince <dprince@redhat.com> | 2012-05-25 12:25:23 -0400 |
|---|---|---|
| committer | Dan Prince <dprince@redhat.com> | 2012-05-30 12:41:19 -0400 |
| commit | d26ed3aee130646be0e042f29f3af64f1d73608e (patch) | |
| tree | fd4b103d490f70d30554c287ea476f4b02d160ec | |
| parent | f06624ef9415dfb3343a357c156f035c29fa01ef (diff) | |
| download | nova-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.py | 2 |
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)') |
