Stefan Berger
2007-Jun-20 18:22 UTC
[Xen-devel] Problem after destroying domain when xm is configured to use Xen-API
Domain with ID ''12'' is destroyed. When VM.get_all_records() is called, the XendDomainInfo object of that domain seems to still be around. It fails when calling xc.sched_credit_domain_get(12). [2007-06-20 13:12:08 7786] INFO (XendDomainInfo:2186) self.getDomid()= 0 [2007-06-20 13:12:08 7786] INFO (XendDomainInfo:2186) self.getDomid()= 12 [2007-06-20 13:12:15 7786] DEBUG (XendDomainInfo:1674) XendDomainInfo.destroy: domid=12 [2007-06-20 13:12:15 7786] DEBUG (XendDomainInfo:1692) XendDomainInfo.destroyDomain(12) [2007-06-20 13:12:15 7786] DEBUG (XendDomainInfo:1342) Removing vbd/51713 [2007-06-20 13:12:15 7786] DEBUG (XendDomainInfo:559) dev = 51713 [2007-06-20 13:12:15 7786] DEBUG (XendDomainInfo:1342) Removing console/0 [2007-06-20 13:12:15 7786] DEBUG (XendDomainInfo:559) dev = 0 [2007-06-20 13:12:18 7786] INFO (XendDomainInfo:2186) self.getDomid()= 0 [2007-06-20 13:12:18 7786] INFO (XendDomainInfo:2186) self.getDomid()= 12 [2007-06-20 13:12:18 7786] ERROR (xmlrpclib2:166) Internal error handling VM.get_all_records Traceback (most recent call last): File "//usr/lib64/python/xen/util/xmlrpclib2.py", line 131, in _marshaled_dispatch response = self._dispatch(method, params) File "/usr/lib64/python2.4/SimpleXMLRPCServer.py", line 406, in _dispatch return func(*params) File "//usr/lib64/python/xen/xend/XendAPI.py", line 221, in f return func(self, *args, **kwargs) File "//usr/lib64/python/xen/xend/XendAPI.py", line 256, in check_session return func(self, session, *args, **kwargs) File "//usr/lib64/python/xen/xend/XendAPI.py", line 561, in <lambda> return lambda s, session: \ File "//usr/lib64/python/xen/xend/XendAPI.py", line 221, in f return func(self, *args, **kwargs) File "//usr/lib64/python/xen/xend/XendAPI.py", line 256, in check_session return func(self, session, *args, **kwargs) File "//usr/lib64/python/xen/xend/XendAPI.py", line 312, in <lambda> ''VM'', func, *args, **kwargs) File "//usr/lib64/python/xen/xend/XendAPI.py", line 268, in _check_ref return func(api, session, ref, *args, **kwargs) File "//usr/lib64/python/xen/xend/XendAPI.py", line 1643, in VM_get_record record = { File "//usr/lib64/python/xen/xend/XendDomainInfo.py", line 2187, in get_vcpus_params retval = xc.sched_credit_domain_get(self.getDomid()) Error: (3, ''No such process'') My fix for this problem is to reset the domid in cleanupDomain() so later on it does not call xc.sched_credit_domain_get() in get_vcpus_params, though I don''t see that the same line was removed through some patch. diff -r 739d698986e9 tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Wed Jun 20 10:55:37 2007 +0100 +++ b/tools/python/xen/xend/XendDomainInfo.py Wed Jun 20 14:18:45 2007 -0400 @@ -1572,6 +1581,7 @@ class XendDomainInfo: log.exception("Removing domain path failed.") self._stateSet(DOM_STATE_HALTED) + self.domid = None finally: self.refresh_shutdown_lock.release() Stefan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel