From 72d464188c4a6bb3d968bfd6fb26e272f00bae8a Mon Sep 17 00:00:00 2001 From: anthony Date: Wed, 2 May 2012 19:51:06 -0700 Subject: [PATCH] bug CS-14718: wait util xenserver join pool operation stablize. status CS-14718: resolved fixed --- .../xen/resource/CitrixResourceBase.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index 9dcc69c2539..ba1094d2c0d 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -3971,9 +3971,19 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe protected boolean getHostInfo(Connection conn) throws IllegalArgumentException{ try { Host myself = Host.getByUuid(conn, _host.uuid); + Set hcs = null; + for (int i = 0; i < 10; i++) { + hcs = myself.getHostCPUs(conn); + _host.cpus = hcs.size(); + if (_host.cpus > 0) { + break; + } + Thread.sleep(5000); + } + if (_host.cpus <= 0) { + throw new CloudRuntimeException("Cannot get the numbers of cpu from XenServer host " + _host.ip); + } - Set hcs = myself.getHostCPUs(conn); - _host.cpus = hcs.size(); for (final HostCpu hc : hcs) { _host.speed = hc.getSpeed(conn).intValue(); break; @@ -4047,7 +4057,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe } catch (XenAPIException e) { s_logger.warn("Unable to get host information for " + _host.ip, e); return false; - } catch (XmlRpcException e) { + } catch (Exception e) { s_logger.warn("Unable to get host information for " + _host.ip, e); return false; }