Comment 53 for bug 855030

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

We finally tracked down the cause of this. Complicated issue regarding the way that we return from rpc calls. If an rpc call was returning None, then it was closing the connection early on the receiving end. This is because we use None to signify the final return in a series of returned values via multicall.

Comstud is working on a fix for multicall so that None is a legal return. In the meantime I found the method that was erroneously returning None and will be submitting a merge (and backport request) right away.

If you want to try out the fix right away, it is pretty simple:

diff --git a/nova/network/manager.py b/nova/network/manager.py
index 96d6dee..955cca0 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -180,7 +180,7 @@ class RPCAllocateFixedIP(object):
         perform network lookup on the far side of rpc.
         """
         network = self.db.network_get(context, network_id)
- self.allocate_fixed_ip(context, instance_id, network, **kwargs)
+ return self.allocate_fixed_ip(context, instance_id, network, **kwargs)