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