Bug 982686
Summary: | engine [logger]: same exception is logged multiple times in engine log | ||
---|---|---|---|
Product: | Red Hat Enterprise Virtualization Manager | Reporter: | Alissa <abonas> |
Component: | ovirt-engine | Assignee: | Piotr Kliczewski <pkliczew> |
Status: | CLOSED CURRENTRELEASE | QA Contact: | sefi litmanovich <slitmano> |
Severity: | low | Docs Contact: | |
Priority: | unspecified | ||
Version: | 3.2.0 | CC: | abonas, acathrow, bazulay, bdagan, dron, emesika, iheim, jkt, lpeer, pstehlik, Rhev-m-bugs, yeylon, yzaslavs |
Target Milestone: | --- | ||
Target Release: | 3.4.0 | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
Whiteboard: | infra | ||
Fixed In Version: | ovirt-3.4.0-alpha1 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | 960635 | Environment: | |
Last Closed: | Type: | Bug | |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | Infra | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | 960635 | ||
Bug Blocks: | 1078909, 1142926 |
Description
Alissa
2013-07-09 14:54:33 UTC
The multiple logging is done in the following places: BrokerCommandBase --> ProceedProxyReturnValue VDSCommandBase --> setVdsRuntimeError Yaniv, don't try to reproduce with live storage migration. Just fix/understand the issue described in comment #1 Yaniv, following Comment #2 the log at BrokerCommandBase happens in the "default" part of the large switch. error code 13 is imageErr at VdcBllErrors. There are many other errors in VdcBllErrors which are handdled by the default part (so indeed you can use other flows to reproduce this). ProccedProxyReturnValue is being called from VmReplicateDiskStartVdsCommand and VmReplaicateDiskFinishVdsCommand - both extend the BrokerCommndBase. These VDS broker commands are called from the task handlers of LiveMigrateDisk, see LiveMigrateDiskCommand.initTaskHandlers() Since each one of these VDS commands also extend VdsCommandBase, you will see that setVdsRuntimeError(ex) is also being called (see VdsCommandBase.executeCommand One of the problems is that all the exceptions generated by ProceedProxyReturnValue extend (directly or indirectly) RuntimeException, and you can see what's going on in VDSCommandBase.executeCommand - the catch for RuntimeException performs the setVdsRuntimeError What i would suggest (of course other suggestions are posible :) is to wrap the exceptions generated at ProceedProxyReturnValue with Let's say a ProxyReturnValueException which extends RuntimeException, and then at the VdsCommandBase.executeCommand code, add a catch to ProxyReturnValueException which does not log (in contrast to catch RuntimeException) Yair, I can catch VDSExceptionBase and call VDSCommandBase::setVdsRuntimeError with a parameter not to report to log. Isn't that enough? Yaniv, did you check this out? How will you determine the value of the boolean flag? Anyway, I'm postponing to 3.4 fixed in commit : afc4d50 ovirt 3.4.0 alpha has been released Verified on Ovirt 3.4.0-0.7beta2, vdsm-4.14.1-3.el6.x86_64. engine.log doesn't have multiple error messages at the same time. Closing as part of 3.4.0 |