Piotr Kliczewski has uploaded a new change for review. Change subject: engine : same exception is logged multiple times in engine log ......................................................................
engine : same exception is logged multiple times in engine log Proposed solution is according to Yair guidelines from the bug. Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=982686 Change-Id: Icbc476f1f5799967e5776ede3dcfd462eada2ce9 Signed-off-by: pkliczewski <piotr.kliczew...@gmail.com> --- M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VDSCommandBase.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/BrokerCommandBase.java A backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ProxyReturnValueException.java A backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/ProxyReturnValuesTestCase.java 4 files changed, 102 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/59/21159/1 diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VDSCommandBase.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VDSCommandBase.java index afffcbe..60fbd11 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VDSCommandBase.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VDSCommandBase.java @@ -5,6 +5,7 @@ import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.dal.VdcCommandBase; +import org.ovirt.engine.core.vdsbroker.vdsbroker.ProxyReturnValueException; import org.ovirt.engine.core.vdsbroker.vdsbroker.VDSExceptionBase; public abstract class VDSCommandBase<P extends VDSParametersBase> extends VdcCommandBase { @@ -54,8 +55,11 @@ _returnValue = new VDSReturnValue(); getVDSReturnValue().setSucceeded(true); executeVDSCommand(); + } catch (ProxyReturnValueException e) { + setVdsRuntimeError(e); } catch (RuntimeException ex) { setVdsRuntimeError(ex); + logException(ex); } } @@ -74,8 +78,6 @@ getVDSReturnValue().setVdsError(((VDSExceptionBase) vdsExp.getCause()).getVdsError()); } } - - logException(ex); } private void logException(RuntimeException ex) { diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/BrokerCommandBase.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/BrokerCommandBase.java index e35b645..67eaa3c 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/BrokerCommandBase.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/BrokerCommandBase.java @@ -190,7 +190,7 @@ tempVar.setCode(returnStatus); tempVar.setMessage(getReturnStatus().mMessage); outEx.setVdsError(tempVar); - throw outEx; + throw new ProxyReturnValueException(outEx); } private VDSExceptionBase createException() { diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ProxyReturnValueException.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ProxyReturnValueException.java new file mode 100644 index 0000000..16fe947 --- /dev/null +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ProxyReturnValueException.java @@ -0,0 +1,24 @@ +package org.ovirt.engine.core.vdsbroker.vdsbroker; + +import java.io.Serializable; + +public class ProxyReturnValueException extends RuntimeException implements Serializable{ + + private static final long serialVersionUID = 5538974336825846508L; + + public ProxyReturnValueException() { + super(); + } + + public ProxyReturnValueException(String message, Throwable cause) { + super(message, cause); + } + + public ProxyReturnValueException(String message) { + super(message); + } + + public ProxyReturnValueException(Throwable cause) { + super(cause); + } +} diff --git a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/ProxyReturnValuesTestCase.java b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/ProxyReturnValuesTestCase.java new file mode 100644 index 0000000..90ffa92 --- /dev/null +++ b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/ProxyReturnValuesTestCase.java @@ -0,0 +1,73 @@ +package org.ovirt.engine.core.vdsbroker; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyVararg; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.springframework.util.ReflectionUtils.findField; +import static org.springframework.util.ReflectionUtils.makeAccessible; +import static org.springframework.util.ReflectionUtils.setField; + +import java.lang.reflect.Field; + +import org.junit.Test; +import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; +import org.ovirt.engine.core.utils.log.Log; +import org.ovirt.engine.core.vdsbroker.vdsbroker.ProxyReturnValueException; + +public class ProxyReturnValuesTestCase { + + + @Test + public void testNumberOfLogInvocations() { + // given + VDSCommandBase<?> base = spy(new TestCommandBase(mock(VDSParametersBase.class))); + Log log = mock(Log.class); + mockLogging(base, log); + doThrow(ProxyReturnValueException.class).when(base).executeVDSCommand(); + + // when + base.executeCommand(); + + // then + verify(log, never()).errorFormat(any(String.class), anyVararg()); + } + + @Test + public void testOtherExceptions() { + // given + VDSCommandBase<?> base = spy(new TestCommandBase(mock(VDSParametersBase.class))); + Log log = mock(Log.class); + mockLogging(base, log); + doThrow(RuntimeException.class).when(base).executeVDSCommand(); + + // when + base.executeCommand(); + + // then + verify(log, times(1)).errorFormat(any(String.class), anyVararg()); + } + + private void mockLogging(VDSCommandBase<?> base, Log log) { + Field field = findField(VDSCommandBase.class, "log"); + makeAccessible(field); + setField(field, base, log); + } + + @SuppressWarnings("rawtypes") + class TestCommandBase extends VDSCommandBase { + + @SuppressWarnings("unchecked") + public TestCommandBase(VDSParametersBase parameters) { + super(parameters); + } + + @Override + protected void executeVDSCommand() { + } + } +} -- To view, visit http://gerrit.ovirt.org/21159 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icbc476f1f5799967e5776ede3dcfd462eada2ce9 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Piotr Kliczewski <piotr.kliczew...@gmail.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches