From 59a48ce59dc8e623d732dd7a8005b76b1ea48c98 Mon Sep 17 00:00:00 2001 From: Abhinandan Prateek Date: Tue, 29 Nov 2011 11:35:11 +0530 Subject: [PATCH] bug 11910: no need to do full sync as first thing after connect --- api/src/com/cloud/agent/api/ClusterSyncAnswer.java | 10 ---------- api/src/com/cloud/agent/api/ClusterSyncCommand.java | 6 +++--- .../hypervisor/xen/resource/CitrixResourceBase.java | 3 +-- .../src/com/cloud/vm/VirtualMachineManagerImpl.java | 13 +++++-------- 4 files changed, 9 insertions(+), 23 deletions(-) diff --git a/api/src/com/cloud/agent/api/ClusterSyncAnswer.java b/api/src/com/cloud/agent/api/ClusterSyncAnswer.java index d82701edcda..6da1aff460c 100644 --- a/api/src/com/cloud/agent/api/ClusterSyncAnswer.java +++ b/api/src/com/cloud/agent/api/ClusterSyncAnswer.java @@ -27,8 +27,6 @@ public class ClusterSyncAnswer extends Answer { private HashMap> _newStates; private HashMap> _allStates; private int _type = -1; // 0 for full, 1 for delta - private boolean isExecuted=false; // this is to avoid double execution first time, due to framework ??? - public static final int FULL_SYNC=0; public static final int DELTA_SYNC=1; @@ -75,12 +73,4 @@ public class ClusterSyncAnswer extends Answer { public boolean isDelta(){ return _type==1; } - - public boolean execute(){ - return !isExecuted; - } - - public void setExecuted(){ - isExecuted = true; - } } \ No newline at end of file diff --git a/api/src/com/cloud/agent/api/ClusterSyncCommand.java b/api/src/com/cloud/agent/api/ClusterSyncCommand.java index 9a674af647c..46490ac6908 100644 --- a/api/src/com/cloud/agent/api/ClusterSyncCommand.java +++ b/api/src/com/cloud/agent/api/ClusterSyncCommand.java @@ -46,11 +46,11 @@ public class ClusterSyncCommand extends Command implements CronCommand { public void incrStep(){ _steps++; - if (_steps>=_skipSteps)_steps=0; + if (_steps>_skipSteps)_steps=0; } - public boolean isRightStep(){ - return (_steps==0); + public boolean isRightStep(){ + return (_steps==_skipSteps); } public long getClusterId() { diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index 18e837564ec..620f7587376 100755 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -6469,14 +6469,13 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe return new ClusterSyncAnswer(cmd.getClusterId()); } HashMap> newStates = deltaClusterSync(conn); + cmd.incrStep(); if (cmd.isRightStep()){ // do full sync HashMap> allStates=fullClusterSync(conn); - cmd.incrStep(); return new ClusterSyncAnswer(cmd.getClusterId(), newStates, allStates); } else { - cmd.incrStep(); return new ClusterSyncAnswer(cmd.getClusterId(), newStates); } } diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 0d8f9e77275..789b0d19687 100755 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -1958,15 +1958,12 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene for (final Answer answer : answers) { if (answer instanceof ClusterSyncAnswer) { ClusterSyncAnswer hs = (ClusterSyncAnswer) answer; - if (hs.execute()){ - if (hs.isFull()) { - deltaSync(hs.getNewStates()); - fullSync(hs.getClusterId(), hs.getAllStates()); - } else if (hs.isDelta()) { - deltaSync(hs.getNewStates()); - } + if (hs.isFull()) { + deltaSync(hs.getNewStates()); + fullSync(hs.getClusterId(), hs.getAllStates()); + } else if (hs.isDelta()) { + deltaSync(hs.getNewStates()); } - hs.setExecuted(); } else if (!answer.getResult()) { s_logger.warn("Cleanup failed due to " + answer.getDetails() + " for " + answer.getClass().getName()); } else {