You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ed...@apache.org on 2014/11/07 01:00:42 UTC

[1/8] git commit: updated refs/heads/4.5 to f506f7c

Repository: cloudstack
Updated Branches:
  refs/heads/4.5 fda4b9ba2 -> f506f7c42


There are few cases that mgt server won't reponse agent's pingcommand timely, or in KVM's case, libvirt won't repsonse in few mintues, which will cause agent reconnect to mgt server, then all the on going tasks on host will fail


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/893eed98
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/893eed98
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/893eed98

Branch: refs/heads/4.5
Commit: 893eed9863c04bad62f0a0da27f61bd15394d9fb
Parents: fda4b9b
Author: Edison Su <su...@gmail.com>
Authored: Thu Oct 16 16:59:09 2014 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Thu Nov 6 15:27:24 2014 -0800

----------------------------------------------------------------------
 agent/src/com/cloud/agent/Agent.java | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/893eed98/agent/src/com/cloud/agent/Agent.java
----------------------------------------------------------------------
diff --git a/agent/src/com/cloud/agent/Agent.java b/agent/src/com/cloud/agent/Agent.java
index 8a34333..7d5f7b1 100755
--- a/agent/src/com/cloud/agent/Agent.java
+++ b/agent/src/com/cloud/agent/Agent.java
@@ -578,9 +578,7 @@ public class Agent implements HandlerFactory, IAgentControl {
         final Object obj = task.get();
         if (obj instanceof Response) {
             if ((System.currentTimeMillis() - _lastPingResponseTime) > _pingInterval * _shell.getPingRetries()) {
-                s_logger.error("Ping Interval has gone past " + _pingInterval * _shell.getPingRetries() + ".  Attempting to reconnect.");
-                final Link link = task.getLink();
-                reconnect(link);
+                s_logger.error("Ping Interval has gone past " + _pingInterval * _shell.getPingRetries() + ". Won't reconnect to mgt server, as connection is still alive");
                 return;
             }
 


[4/8] git commit: updated refs/heads/4.5 to f506f7c

Posted by ed...@apache.org.
fix kvm agent upgrade issue: kvm agent needs to use java 7 instead of java 6 after upgrade Reviewed-by: Sheng


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/77b71e11
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/77b71e11
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/77b71e11

Branch: refs/heads/4.5
Commit: 77b71e118b36b91d8fc8932248e6fddfbb55e8b4
Parents: 1fb28c2
Author: Edison Su <su...@gmail.com>
Authored: Mon Oct 27 17:24:52 2014 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Thu Nov 6 15:30:09 2014 -0800

----------------------------------------------------------------------
 agent/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-agent.in | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/77b71e11/agent/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-agent.in
----------------------------------------------------------------------
diff --git a/agent/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-agent.in b/agent/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-agent.in
index d1769cc..271d45d 100644
--- a/agent/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-agent.in
+++ b/agent/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-agent.in
@@ -44,14 +44,17 @@ unset OPTIONS
 [ -r @SYSCONFDIR@/sysconfig/"$SHORTNAME" ] && source @SYSCONFDIR@/sysconfig/"$SHORTNAME"
 
 # The first existing directory is used for JAVA_HOME (if JAVA_HOME is not defined in $DEFAULT)
-JDK_DIRS="/usr/lib/jvm/jre /usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-openjdk-i386 /usr/lib/jvm/java-6-openjdk-amd64 /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm"
+JDK_DIRS="/usr/lib/jvm/jre /usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-openjdk-i386 /usr/lib/jvm/java-6-openjdk-amd64 /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm /usr/lib/jvm/jre-1.7.0"
 
+jhome=""
 for jdir in $JDK_DIRS; do
     if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
-        JAVA_HOME="$jdir"
+        jhome="$jdir"
     fi
 done
-export JAVA_HOME
+if [ ! -z $jhome ];then
+export JAVA_HOME="$jhome"
+fi
 
 SCP="@SYSTEMCLASSPATH@"
 DCP="@DEPSCLASSPATH@"


[8/8] git commit: updated refs/heads/4.5 to f506f7c

Posted by ed...@apache.org.
system vm image build process, needs to build an old version of qemu image, otherwise, it won't work on RHEL 6


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f506f7c4
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f506f7c4
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f506f7c4

Branch: refs/heads/4.5
Commit: f506f7c427caf2796e9ef09f8fd394f557ba1ff2
Parents: 812b012
Author: Edison Su <su...@gmail.com>
Authored: Thu Nov 6 15:40:37 2014 -0800
Committer: Edison Su <su...@gmail.com>
Committed: Thu Nov 6 15:40:37 2014 -0800

----------------------------------------------------------------------
 tools/appliance/build.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f506f7c4/tools/appliance/build.sh
----------------------------------------------------------------------
diff --git a/tools/appliance/build.sh b/tools/appliance/build.sh
index 29d92ca..51abb38 100755
--- a/tools/appliance/build.sh
+++ b/tools/appliance/build.sh
@@ -90,7 +90,7 @@ set -e
 
 # Export for KVM
 vboxmanage internalcommands converttoraw -format vdi "$hdd_path" raw.img
-qemu-img convert -f raw -c -O qcow2 raw.img $appliance-$branch-kvm.qcow2
+qemu-img convert -o compat=0.10 -f raw -c -O qcow2 raw.img $appliance-$branch-kvm.qcow2
 rm raw.img
 bzip2 $appliance-$branch-kvm.qcow2
 echo "$appliance exported for KVM: dist/$appliance-$branch-kvm.qcow2.bz2"


[6/8] git commit: updated refs/heads/4.5 to f506f7c

Posted by ed...@apache.org.
should not duplicate vm instance id, during the volume migration

Conflicts:
	engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/885bba92
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/885bba92
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/885bba92

Branch: refs/heads/4.5
Commit: 885bba926cf1c21c8222a8a014445c0207878c96
Parents: ffdb38c
Author: Edison Su <su...@gmail.com>
Authored: Thu Oct 30 21:27:51 2014 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Thu Nov 6 15:36:58 2014 -0800

----------------------------------------------------------------------
 engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java        | 3 +++
 .../org/apache/cloudstack/storage/volume/VolumeServiceImpl.java   | 1 +
 2 files changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/885bba92/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java
index fb93610..4ad196c 100755
--- a/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java
@@ -594,8 +594,11 @@ public class VolumeDaoImpl extends GenericDaoBase<VolumeVO, Long> implements Vol
             VolumeVO srcVol = findById(srcVolId);
             VolumeVO destVol = findById(destVolId);
             String uuid = srcVol.getUuid();
+            Long instanceId = srcVol.getInstanceId();
             srcVol.setUuid(null);
+            srcVol.setInstanceId(null);
             destVol.setUuid(uuid);
+            destVol.setInstanceId(instanceId);
             update(srcVolId, srcVol);
             update(destVolId, destVol);
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/885bba92/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
index 1297da9..7e3239f 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
@@ -830,6 +830,7 @@ public class VolumeServiceImpl implements VolumeService {
         }
 
         VolumeVO newVol = new VolumeVO(volume);
+        newVol.setInstanceId(null);
         newVol.setPoolId(pool.getId());
         newVol.setFolder(folder);
         newVol.setPodId(pool.getPodId());


[2/8] git commit: updated refs/heads/4.5 to f506f7c

Posted by ed...@apache.org.
fix kvm issue, for windows sever 2008, it will crash without hyperv enlightment featre enabled


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9319a4e5
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9319a4e5
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9319a4e5

Branch: refs/heads/4.5
Commit: 9319a4e5f87820fa16da67d32ae39f86b73841a7
Parents: 893eed9
Author: Edison Su <su...@gmail.com>
Authored: Thu Oct 16 12:51:11 2014 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Thu Nov 6 15:29:00 2014 -0800

----------------------------------------------------------------------
 .../kvm/resource/LibvirtComputingResource.java  | 26 +++++++++++++++
 .../hypervisor/kvm/resource/LibvirtVMDef.java   | 35 ++++++++++++++++++++
 .../kvm/resource/LibvirtVMDefTest.java          | 22 ++++++++++++
 3 files changed, 83 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9319a4e5/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 9a4ae16..55b49c2 100755
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -454,6 +454,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
     protected boolean _noKvmClock;
     protected String _videoHw;
     protected int _videoRam;
+    protected Pair<Integer,Integer> hostOsVersion;
     private final Map <String, String> _pifs = new HashMap<String, String>();
     private final Map<String, VmStats> _vmStats = new ConcurrentHashMap<String, VmStats>();
 
@@ -965,6 +966,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         String[] kernelVersions = unameKernelVersion.split("[\\.\\-]");
         _kernelVersion = Integer.parseInt(kernelVersions[0]) * 1000 * 1000 + Integer.parseInt(kernelVersions[1]) * 1000 + Integer.parseInt(kernelVersions[2]);
 
+        getOsVersion();
         return true;
     }
 
@@ -3606,6 +3608,24 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         return uuid;
     }
 
+    private void getOsVersion() {
+        String version = Script.runSimpleBashScript("cat /etc/redhat-release | awk '{print $7}'");
+        if (version != null) {
+            String[] versions = version.split(".");
+            if (versions.length == 2) {
+                String major = versions[0];
+                String minor = versions[1];
+                try {
+                    Integer m = Integer.parseInt(major);
+                    Integer min = Integer.parseInt(minor);
+                    hostOsVersion = new Pair<>(m, min);
+                } catch(NumberFormatException e) {
+
+                }
+            }
+        }
+    }
+
     protected LibvirtVMDef createVMFromSpec(VirtualMachineTO vmTO) {
         LibvirtVMDef vm = new LibvirtVMDef();
         vm.setDomainName(vmTO.getName());
@@ -3684,6 +3704,12 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         features.addFeatures("pae");
         features.addFeatures("apic");
         features.addFeatures("acpi");
+        //for rhel 6.5 and above, hyperv enlightment feature is added
+        if (vmTO.getOs().contains("Windows Server 2008") && hostOsVersion != null && ((hostOsVersion.first() == 6 && hostOsVersion.second() >= 5) || (hostOsVersion.first() >= 7))) {
+            LibvirtVMDef.HyperVEnlightenmentFeatureDef hyv = new LibvirtVMDef.HyperVEnlightenmentFeatureDef();
+            hyv.setRelaxed(true);
+            features.addHyperVFeature(hyv);
+        }
         vm.addComp(features);
 
         TermPolicy term = new TermPolicy();

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9319a4e5/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
index bc95204..2ce2442 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
@@ -173,13 +173,42 @@ public class LibvirtVMDef {
         }
     }
 
+    public static class HyperVEnlightenmentFeatureDef {
+        private final Map<String, String> features = new HashMap<String,String>();
+        public void setRelaxed(boolean on) {
+            String state = on ? "On":"Off";
+            features.put("relaxed", state);
+        }
+        @Override
+        public String toString() {
+            if (features.isEmpty()) {
+                return "";
+            }
+            StringBuilder feaBuilder = new StringBuilder();
+            feaBuilder.append("<hyperv>\n");
+            for (Map.Entry<String, String> e : features.entrySet()) {
+                feaBuilder.append("<");
+                feaBuilder.append(e.getKey());
+                feaBuilder.append(" state='" + e.getValue() + "'");
+                feaBuilder.append("/>\n");
+            }
+            feaBuilder.append("</hyperv>\n");
+            return feaBuilder.toString();
+        }
+    }
+
     public static class FeaturesDef {
         private final List<String> _features = new ArrayList<String>();
 
+        private HyperVEnlightenmentFeatureDef hyperVEnlightenmentFeatureDef = null;
         public void addFeatures(String feature) {
             _features.add(feature);
         }
 
+        public void addHyperVFeature(HyperVEnlightenmentFeatureDef hyperVEnlightenmentFeatureDef) {
+            this.hyperVEnlightenmentFeatureDef = hyperVEnlightenmentFeatureDef;
+        }
+
         @Override
         public String toString() {
             StringBuilder feaBuilder = new StringBuilder();
@@ -187,6 +216,12 @@ public class LibvirtVMDef {
             for (String feature : _features) {
                 feaBuilder.append("<" + feature + "/>\n");
             }
+            if (hyperVEnlightenmentFeatureDef != null) {
+                String hpervF = hyperVEnlightenmentFeatureDef.toString();
+                if (hpervF != "") {
+                    feaBuilder.append(hpervF);
+                }
+            }
             feaBuilder.append("</features>\n");
             return feaBuilder.toString();
         }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9319a4e5/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java
index aa7570c..ddbe256 100644
--- a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java
+++ b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java
@@ -21,6 +21,7 @@ package com.cloud.hypervisor.kvm.resource;
 
 import junit.framework.TestCase;
 import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.DiskDef;
+import com.cloud.utils.Pair;
 
 public class LibvirtVMDefTest extends TestCase {
 
@@ -90,4 +91,25 @@ public class LibvirtVMDefTest extends TestCase {
         assertEquals(xmlDef, expectedXml);
     }
 
+    public void testHypervEnlightDef() {
+        LibvirtVMDef.FeaturesDef featuresDef = new LibvirtVMDef.FeaturesDef();
+        LibvirtVMDef.HyperVEnlightenmentFeatureDef hyperVEnlightenmentFeatureDef = new LibvirtVMDef.HyperVEnlightenmentFeatureDef();
+        hyperVEnlightenmentFeatureDef.setRelaxed(true);
+        featuresDef.addHyperVFeature(hyperVEnlightenmentFeatureDef);
+        String defs = featuresDef.toString();
+        assertTrue(defs.contains("relaxed"));
+
+        featuresDef = new LibvirtVMDef.FeaturesDef();
+        featuresDef.addFeatures("pae");
+        defs = featuresDef.toString();
+        assertFalse(defs.contains("relaxed"));
+
+        assertTrue("Windows Server 2008 R2".contains("Windows Server 2008"));
+
+        Pair<Integer,Integer> hostOsVersion = new Pair<Integer,Integer>(6,5);
+        assertTrue((hostOsVersion.first() == 6 && hostOsVersion.second() >= 5) || (hostOsVersion.first() >= 7));
+        hostOsVersion = new Pair<Integer,Integer>(7,1);
+        assertTrue((hostOsVersion.first() == 6 && hostOsVersion.second() >= 5) || (hostOsVersion.first() >= 7));
+    }
+
 }


[3/8] git commit: updated refs/heads/4.5 to f506f7c

Posted by ed...@apache.org.
CS-21296: hidden snapshot.backup.rightafter, as it's not needed


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1fb28c29
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1fb28c29
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1fb28c29

Branch: refs/heads/4.5
Commit: 1fb28c2959206d1bb861e9ce97e9bb38403fe8e5
Parents: 9319a4e
Author: Edison Su <su...@gmail.com>
Authored: Wed Oct 22 15:35:30 2014 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Thu Nov 6 15:29:56 2014 -0800

----------------------------------------------------------------------
 server/src/com/cloud/configuration/Config.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1fb28c29/server/src/com/cloud/configuration/Config.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java
index 517c76c..da3415f 100755
--- a/server/src/com/cloud/configuration/Config.java
+++ b/server/src/com/cloud/configuration/Config.java
@@ -511,14 +511,14 @@ public enum Config {
             null),
     SnapshotDeltaMax("Snapshots", SnapshotManager.class, Integer.class, "snapshot.delta.max", "16", "max delta snapshots between two full snapshots.", null),
     BackupSnapshotAfterTakingSnapshot(
-            "Snapshots",
+            "Hidden",
             SnapshotManager.class,
             Boolean.class,
             "snapshot.backup.rightafter",
             "true",
             "backup snapshot right after snapshot is taken",
             null),
-    KVMSnapshotEnabled("Snapshots", SnapshotManager.class, Boolean.class, "kvm.snapshot.enabled", "false", "whether snapshot is enabled for KVM hosts", null),
+    KVMSnapshotEnabled("Hidden", SnapshotManager.class, Boolean.class, "kvm.snapshot.enabled", "false", "whether snapshot is enabled for KVM hosts", null),
 
     // Advanced
     EventPurgeInterval(


[5/8] git commit: updated refs/heads/4.5 to f506f7c

Posted by ed...@apache.org.
there is no transaction context during the mgt server start, thus causing transaction.close will delete op_lock table if aquireinlocktable is called Reviewed-by: Anthony and Min


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ffdb38c4
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ffdb38c4
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ffdb38c4

Branch: refs/heads/4.5
Commit: ffdb38c496bffbf16701c401a2632cf4f08d4636
Parents: 77b71e1
Author: Edison Su <su...@gmail.com>
Authored: Thu Oct 30 02:19:02 2014 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Thu Nov 6 15:30:19 2014 -0800

----------------------------------------------------------------------
 .../src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java   | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffdb38c4/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
index 599e906..2fedeef 100644
--- a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
@@ -64,6 +64,7 @@ import com.cloud.utils.concurrency.TestClock;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GlobalLock;
 import com.cloud.utils.db.SearchCriteria;
+import com.cloud.utils.db.TransactionLegacy;
 
 @Component
 @Local(value = {SnapshotScheduler.class})
@@ -333,6 +334,8 @@ public class SnapshotSchedulerImpl extends ManagerBase implements SnapshotSchedu
             spstSchedVO = new SnapshotScheduleVO(policy.getVolumeId(), policyId, nextSnapshotTimestamp);
             _snapshotScheduleDao.persist(spstSchedVO);
         } else {
+            TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.CLOUD_DB);
+
             try {
                 spstSchedVO = _snapshotScheduleDao.acquireInLockTable(spstSchedVO.getId());
                 spstSchedVO.setPolicyId(policyId);
@@ -340,10 +343,12 @@ public class SnapshotSchedulerImpl extends ManagerBase implements SnapshotSchedu
                 spstSchedVO.setAsyncJobId(null);
                 spstSchedVO.setSnapshotId(null);
                 _snapshotScheduleDao.update(spstSchedVO.getId(), spstSchedVO);
+                txn.commit();
             } finally {
                 if (spstSchedVO != null) {
                     _snapshotScheduleDao.releaseFromLockTable(spstSchedVO.getId());
                 }
+                txn.close();
             }
         }
         return nextSnapshotTimestamp;


[7/8] git commit: updated refs/heads/4.5 to f506f7c

Posted by ed...@apache.org.
CLOUDSTACK-7683: hold a db lock during vm expunge


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/812b0122
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/812b0122
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/812b0122

Branch: refs/heads/4.5
Commit: 812b0122e2972987e3b4a38cc7431ace78b09145
Parents: 885bba9
Author: Edison Su <su...@gmail.com>
Authored: Thu Nov 6 15:22:34 2014 -0800
Committer: Edison Su <su...@gmail.com>
Committed: Thu Nov 6 15:37:15 2014 -0800

----------------------------------------------------------------------
 server/src/com/cloud/vm/UserVmManagerImpl.java | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/812b0122/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 2636096..01a692d 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -1703,6 +1703,10 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
 
     @Override
     public boolean expunge(UserVmVO vm, long callerUserId, Account caller) {
+        vm = _vmDao.acquireInLockTable(vm.getId());
+        if (vm == null) {
+            return false;
+        }
         try {
             List<VolumeVO> rootVol = _volsDao.findByInstanceAndType(vm.getId(), Volume.Type.ROOT);
             // expunge the vm
@@ -1739,6 +1743,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
         } catch (ConcurrentOperationException e) {
             s_logger.warn("Concurrent operations on expunging " + vm, e);
             return false;
+        } finally {
+            _vmDao.releaseFromLockTable(vm.getId());
         }
     }