Comment 2 for bug 907125

Revision history for this message
Vish Ishaya (vishvananda) wrote :

This was seen by a few people in diablo. There is an odd workaround which we could put in to diablo that was discovered by HP:

diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py
index b5f30a1..034e0b4 100644
--- a/nova/db/sqlalchemy/models.py
+++ b/nova/db/sqlalchemy/models.py
@@ -669,7 +669,7 @@ class FixedIp(BASE, NovaBase):
     id = Column(Integer, primary_key=True)
     address = Column(String(255))
     network_id = Column(Integer, ForeignKey('networks.id'), nullable=True)
- network = relationship(Network, backref=backref('fixed_ips'))
+ network = relationship(Network, backref=backref('fixed_ips'), lazy='joined')
     virtual_interface_id = Column(Integer, ForeignKey('virtual_interfaces.id'),
                                                                  nullable=True)
     virtual_interface = relationship(VirtualInterface,

Unfortunately, we could never figure out exactly why this fixes it, as it is very hard to reproduce consistently except under load. The offending relationship has been removed in essex so it no longer applies.