[ https://issues.apache.org/jira/browse/ZOOKEEPER-505?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741044#action_12741044 ]
Flavio Paiva Junqueira commented on ZOOKEEPER-505: -------------------------------------------------- Great catch, Utkarsh! I noticed this problem a while ago in the ReadWrite tests and fixed by changing the catch blocks to the following: {noformat} catch (BKException e) { LOG.error("Test failed", e); fail("Test failed due to BookKeeper exception"); } {noformat} Clearly we forgot to implement the change in all places. Also, we shouldn't have calls to printStackTrace. Now I wonder if it is best to remove the catch block as you propose or to catch and fail as I propose above. I don't know the exact semantics of junit with respect to exceptions, but recently I've seen a case that a test was throwing an exception and not catching it, and was still passing. > testAsyncCreateClose is badly broken > ------------------------------------ > > Key: ZOOKEEPER-505 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-505 > Project: Zookeeper > Issue Type: Bug > Components: contrib-bookkeeper > Reporter: Utkarsh Srivastava > Priority: Critical > Attachments: ZOOKEEPER-505.1.patch > > > The test case testAsyncCreateClose is badly broken. I was wondering why all > the unit tests are passing inspite of having found so many different problems > with LedgerManagementProcessor. > There is a big try-catch block sitting in the test case that catches all > exception, prints their stack trace, and exits, thereby allowing the test to > pass. In general, unit tests shouldnt catch exceptions unless it is something > you are expecting that will happen. > Another problem is that the same ControlObject is used for synchronization > throughout. Since we already have the problem of callbacks being called > multiple times (ZOOKEEPER-502), notify() on the control object is called too > many times, resulting in the unit test not waiting for certain callbacks. > Thus the test never waits for the asyncOpenLedger() to finish, and hence > still succeeds. I believe asyncOpenLedger() has never worked right. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.