Ravi Nori has uploaded a new change for review.

Change subject: engine: Deleting all snapshot disks during a vdsm restart 
leaves disks locked
......................................................................

engine: Deleting all snapshot disks during a vdsm restart leaves disks locked

Restarting vdsm when deleting snapshot volumes
leaves some volumes in locked status.

Change-Id: I58b354541821845f506f9848782763f3c2526f9c
Bug-Url: https://bugzilla.redhat.com/1157222
Signed-off-by: Ravi Nori <rn...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/xmlrpc/XmlRpcRunTimeException.java
2 files changed, 25 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/76/35776/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java
index 01d3595..55b0f6f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java
@@ -6,16 +6,19 @@
 import org.ovirt.engine.core.common.action.ImagesContainterParametersBase;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
+import org.ovirt.engine.core.common.businessentities.ImageStatus;
 import org.ovirt.engine.core.common.job.StepEnum;
 import 
org.ovirt.engine.core.common.vdscommands.MergeSnapshotsVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.job.ExecutionMessageDirector;
+import org.ovirt.engine.core.utils.transaction.TransactionMethod;
+import org.ovirt.engine.core.utils.transaction.TransactionSupport;
 import org.springframework.util.CollectionUtils;
 
 @InternalCommandAttribute
-public class RemoveSnapshotSingleDiskCommand<T extends 
ImagesContainterParametersBase> extends RemoveSnapshotSingleDiskCommandBase {
+public class RemoveSnapshotSingleDiskCommand<T extends 
ImagesContainterParametersBase> extends RemoveSnapshotSingleDiskCommandBase<T> {
 
     public RemoveSnapshotSingleDiskCommand(T parameters) {
         super(parameters);
@@ -85,4 +88,22 @@
 
         setSucceeded(true);
     }
+
+    @Override
+    public void rollback() {
+        super.rollback();
+        TransactionSupport.executeInNewTransaction(new 
TransactionMethod<Object>() {
+            @Override
+            public Object runInTransaction() {
+                if (!getParameters().isLeaveLocked()) {
+                    DiskImage diskImage = getDestinationDiskImage();
+                    if (diskImage != null) {
+                        
getImageDao().updateStatus(diskImage.getImage().getId(), ImageStatus.OK);
+                    }
+                    unLockImage();
+                }
+                return null;
+            }
+        });
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/xmlrpc/XmlRpcRunTimeException.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/xmlrpc/XmlRpcRunTimeException.java
index f05f3fe..2cce746 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/xmlrpc/XmlRpcRunTimeException.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/xmlrpc/XmlRpcRunTimeException.java
@@ -6,6 +6,8 @@
 
     public static final String NETWORK_ERROR_MSG = "I/O error while 
communicating with HTTP server: Connection refused";
 
+    public static final String CONNECTION_ISSUES_MSG = "Connection issues";
+
     public XmlRpcRunTimeException(String message, Throwable cause) {
         super(message, cause);
     }
@@ -15,7 +17,7 @@
     }
 
     public boolean isNetworkError() {
-        if (getMessage().startsWith(NETWORK_ERROR_MSG)) {
+        if (getMessage().startsWith(NETWORK_ERROR_MSG) || 
getMessage().startsWith(CONNECTION_ISSUES_MSG)) {
             return true;
         } else {
             return false;


-- 
To view, visit http://gerrit.ovirt.org/35776
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I58b354541821845f506f9848782763f3c2526f9c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <rn...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to