Hmmm... Great job! Actually, I've come across a similar situation in a test in the txnmanager category, where the test was waiting (in a loop) for an UnknownTransactionException, but the interface specified throwing a CannotCommitException instead. So the test hanged. I committed a fix for that a little while ago. Little strange if you ask me... I will try out your fix tonight and post back the results.
2010/9/27 Patricia Shanahan <[email protected]> > I've diagnosed com/sun/jini/test/impl/mahalo/RandomStressTest.td, but may > not have time to regression test and check in the fix. > > The test failure is due to an error in > com/sun/jini/mahalo/TxnManagerImpl.java. It throws a NullPointerException > from abort if the transaction is not known to transaction management. That > case can arise, even for a formerly valid transaction, due to it having > already been committed or aborted, so it is timing dependent and more likely > to happen under stress than when doing more controlled tests. > > The TransactionManager interface specifies UnknownTransactionException for > that case. The test catches UnknownTransactionException and treats it as a > valid, non-error result. NullPointerException is not caught until it gets > back to the TaskManager's thread run method, which turns it into a logged > WARNING. The uncaught exception prevents the task from reporting completion > back to the test, leading to the timeout and test failure. > > There is an issue of whether there is anything else that depends on getting > a RuntimeException rather than a checked exception, so it needs a full > regression test. > > I also recommend reducing the timeout from 30 minutes. When the test > succeeds, it takes less than a minute. > > Here is a patch to change the exception: > > Index: src/com/sun/jini/mahalo/TxnManagerImpl.java > =================================================================== > --- src/com/sun/jini/mahalo/TxnManagerImpl.java (revision 1000286) > +++ src/com/sun/jini/mahalo/TxnManagerImpl.java (working copy) > @@ -933,7 +933,7 @@ > } > > } else { > - throw new NullPointerException("No such transaction ["+id+"]"); > + throw new UnknownTransactionException("No such transaction > ["+id+"]"); > > } > > > Patricia > > > On 9/25/2010 7:17 AM, Jonathan Costers wrote: > >> I actually did come across a test that may be interesting to run for these >> changes ... >> >> com/sun/jini/test/impl/mahalo/RandomStressTest.td >> >> I have not been able to get this test to pass on any of my machines or VMs >> ... >> It seems to make heavy use of TaskManager and RetryTask. >> It can take a while to finish as well, so beware. >> >> You think this may be a good one? >> >> you can run it if you change to the<river>/qa directory and execute: >> ant -Drun.tests=com/sun/jini/test/impl/mahalo/RandomStressTest.td >> run-tests >> >> or similarly in an IDE, set property >> run.tests=com/sun/jini/test/impl/mahalo/RandomStressTest.td >> and run the run-tests target >> >> make sure everything is built first, of course. >> >> 2010/9/21 Patricia Shanahan<[email protected]> >> >> I'm testing my new TaskManager the , but I have some anomalies. It would >>> help me to get some more testing of >>> >>> https://svn.apache.org/repos/asf/incubator/river/jtsk/skunk/patsTaskManagerdonein >>> other WindowsXP environments. >>> >>> >>> Both the head revision and revision 998737 need to be tested. Revision >>> 998737 is the one I plan to merge into the trunk. It changes the >>> interface >>> between TaskManager and its callers, with minimal changes to TaskManager. >>> >>> It is important that it be tested widely, because it affects a lot of >>> critical classes, and would be difficult to back out. >>> >>> The head revision drops in a revised TaskManager. It should be easy to >>> back >>> out if necessary. >>> >>> Patricia >>> >>> >> >
