From 3c68b9f850181802d3cbed359cc08352399f9116 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Thu, 2 Jan 2014 15:41:31 -0800 Subject: [PATCH] CLOUDSTACK-4540: Set execute.in.sequence.network.element.commands=true by default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The things is, VR would take time to execute the commands, say it would need time t1(which is greater than 0). And the interval between parallel deployment is t2(which can be almost 0). In any case, VR need to handle commands in sequence internally, so if t1 > t2, then the new task in the VR would wait longer and longer to execute, then some commands result in timeout ultimately. No matter how long the timeout is, if there are enough big number of queued task for VR, the last ones can timeout. Currently VR has a robust mechanism to sequence the jobs internal and I confirmed in this case, it works well. But there is no way to fix this issue if VR is already 100% load at all time. Probably we can improve the speed of VR internal executing, but seems the ultimate answer is: set execute.in.sequence.network.element.commands to true. VR doesn’t know how long it would take for mgmt. server to timeout, only mgmt. server knows that. By setting sequence execution in VR to "true", mgmt server would handle the commands in a queue, make sure that VR won't be overload and report unexpected failure just because it's overload. --- server/src/com/cloud/configuration/Config.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java index 0c581415f07..f6d83414ea4 100755 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -1878,9 +1878,9 @@ public enum Config { NetworkOrchestrationService.class, Boolean.class, "execute.in.sequence.network.element.commands", - "false", + "true", "If set to true, DhcpEntryCommand, SavePasswordCommand, UserDataCommand, VmDataCommand will be synchronized on the agent side." - + " If set to false, these commands become asynchronous. Default value is false.", + + " If set to false, these commands become asynchronous. Default value is true.", null), UCSSyncBladeInterval(