Roy Golan has uploaded a new change for review.

Change subject: engine: revisit improving VDSM error handling
......................................................................

engine: revisit improving VDSM error handling

- fix a major issue caused by 1d3c67c9cf7846ab73e6411fb8aebff8a29f9cfb where 
VdsManager expects
  VdsNetworkException on network issue.
- improved the identifying network error by catching all IOExceptions.
  this ease catching corner case protocol error.
- refactor and clean VdsNetworkException and its tree to use a
  constructor with a Throwable - cleaned the unuseful "{ClassName}: "
  convention which is already implemented in Throwable toString().

Change-Id: I9df04879b15575842da1bd53c39c00a6623374e0
Signed-off-by: Roy Golan <rgo...@redhat.com>
---
M 
backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/ApplicationException.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSExceptionBase.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSGenericException.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSNetworkException.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerCommand.java
5 files changed, 29 insertions(+), 25 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/23/9723/1

diff --git 
a/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/ApplicationException.java
 
b/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/ApplicationException.java
index f81a97a..045f602 100644
--- 
a/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/ApplicationException.java
+++ 
b/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/ApplicationException.java
@@ -11,6 +11,9 @@
         super(string);
     }
 
+    public ApplicationException(Throwable ex) {
+        super(ex);
+    }
     public ApplicationException(String string, Throwable ex) {
         super(string, ex);
     }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSExceptionBase.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSExceptionBase.java
index 84f8cb6..ea7202e 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSExceptionBase.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSExceptionBase.java
@@ -4,6 +4,9 @@
 import org.ovirt.engine.core.common.errors.*;
 
 public class VDSExceptionBase extends ApplicationException {
+
+    private static final long serialVersionUID = 5709501011970689110L;
+
     private VDSError privateVdsError;
 
     public VDSError getVdsError() {
@@ -18,10 +21,14 @@
     // {
     // super(info, context);
     // }
-    public VDSExceptionBase(String errMessage, RuntimeException baseException) 
{
+    public VDSExceptionBase(String errMessage, Throwable baseException) {
         super(errMessage, baseException);
     }
 
+    public VDSExceptionBase(Throwable baseException) {
+        super(baseException);
+    }
+
     public VDSExceptionBase(String errMessage) {
         super(errMessage);
     }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSGenericException.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSGenericException.java
index f79663a..e165317 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSGenericException.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSGenericException.java
@@ -3,17 +3,15 @@
 import org.ovirt.engine.core.common.errors.*;
 
 public class VDSGenericException extends VDSExceptionBase implements 
java.io.Serializable {
-    // protected VDSGenericException(SerializationInfo info, StreamingContext
-    // context)
-    // {
-    // super(info, context);
-    // }
-    public VDSGenericException(String message, RuntimeException baseException) 
{
+
+    private static final long serialVersionUID = 4778043822136178263L;
+
+    public VDSGenericException(String message, Throwable baseException) {
         super(message, baseException);
     }
 
-    public VDSGenericException(RuntimeException baseException) {
-        super("VDSGenericException: ", baseException);
+    public VDSGenericException(Throwable baseException) {
+        super(baseException);
     }
 
     public VDSGenericException(String errorStr) {
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSNetworkException.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSNetworkException.java
index 68833b2..8ae1f91 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSNetworkException.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VDSNetworkException.java
@@ -1,13 +1,12 @@
 package org.ovirt.engine.core.vdsbroker.vdsbroker;
 
 public class VDSNetworkException extends VDSGenericException implements 
java.io.Serializable {
-    // protected VDSNetworkException(SerializationInfo info, StreamingContext
-    // context)
-    // {
-    // super(info, context);
-    // }
-    public VDSNetworkException(RuntimeException baseException) {
-        super("VDSNetworkException: ", baseException);
+
+    private static final long serialVersionUID = -486466100359278549L;
+
+    public VDSNetworkException(Throwable baseException) {
+        super(baseException);
+
     }
 
     public VDSNetworkException(String errorStr) {
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerCommand.java
index f608d23..a9f40a5 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerCommand.java
@@ -1,7 +1,6 @@
 package org.ovirt.engine.core.vdsbroker.vdsbroker;
 
-import java.net.ConnectException;
-
+import java.io.IOException;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.errors.VDSError;
@@ -101,25 +100,23 @@
             throw new VDSProtocolException(ex);
         } catch (XmlRpcRunTimeException ex) {
             Throwable rootCause = ExceptionUtils.getRootCause(ex);
-            if ((ex.isNetworkError() || rootCause instanceof 
ConnectException)) {
+            VDSNetworkException networkException = new 
VDSNetworkException(rootCause);
+            if ((ex.isNetworkError() || rootCause instanceof IOException)) {
                 log.debugFormat(msgFormat,
                         getCommandName(),
                         getAdditionalInformation(),
                         ex.getMessage(),
                         rootCause.getMessage());
-                PrintReturnValue();
-                throw new VDSNetworkException(ex);
             } else {
                 log.errorFormat(msgFormat,
                         getCommandName(),
                         getAdditionalInformation(),
                         ex.getMessage(),
                         rootCause.getMessage());
-                PrintReturnValue();
-                VDSProtocolException vdsProtocolException = new 
VDSProtocolException(rootCause.getMessage());
-                vdsProtocolException.setVdsError(new 
VDSError(VdcBllErrors.PROTOCOL_ERROR, rootCause.getMessage()));
-                throw vdsProtocolException;
+                networkException.setVdsError(new 
VDSError(VdcBllErrors.PROTOCOL_ERROR, rootCause.toString()));
             }
+            PrintReturnValue();
+            throw networkException;
         }
 
         // TODO: look for invalid certificates error handling


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

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

Reply via email to