On 10/01/2010, Phil Steitz <phil.ste...@gmail.com> wrote: > sebb wrote: > > Thanks. > > > > Looks like I did not complete the fixes properly when I added the > > loopOnce parameter to PoolTest. > > I think I found (and fixed) another problem. See r897720.
The wait in question is purely to allow the threads to start, so I think it should not depend on the value of maxWait (or indeed holdTime). Originally it was set to 10L * holdTime, which meant that it did always not work well for holdTime = 1. > > > > It was quite tricky following the Continuum build output, as the date > > was 2 days behind, and the mail for the failed runs is not always > > accurate - if the "Exit code" is 127, then most of the email contents > > is inaccurate. > > > > I have raised http://jira.codehaus.org/browse/CONTINUUM-2428 for the > > misleading info. > > > > On 10/01/2010, Phil Steitz <phil.ste...@gmail.com> wrote: > >> From the debugging added to some previously failed builds, I saw > >> loop = 2 for some threads. Threads should not be looping. Second > >> loop by a thread that succeeded the first time that throws will not > >> change success state - so it looks like a success -> not enough > >> failures. > >> > >> Phil > >> > >> > >> pste...@apache.org wrote: > >> > Author: psteitz > >> > Date: Sun Jan 10 18:21:03 2010 > >> > New Revision: 897678 > >> > > >> > URL: http://svn.apache.org/viewvc?rev=897678&view=rev > >> > Log: > >> > Eliminated unintended looping in mutipleThreads test. > >> > > >> > Modified: > >> > > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestConnectionPool.java > >> > > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/datasources/TestPerUserPoolDataSource.java > >> > > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/datasources/TestSharedPoolDataSource.java > >> > > >> > Modified: > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestConnectionPool.java > >> > URL: > http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestConnectionPool.java?rev=897678&r1=897677&r2=897678&view=diff > >> > > ============================================================================== > >> > --- > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestConnectionPool.java > (original) > >> > +++ > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestConnectionPool.java > Sun Jan 10 18:21:03 2010 > >> > @@ -683,7 +683,21 @@ > >> > } > >> > } > >> > > >> > - protected void multipleThreads(final int holdTime, final boolean > expectError, long maxWait) > >> > + /** > >> > + * Launches a group of 2 * getMaxActive() threads, each of which > will attempt to obtain a connection > >> > + * from the pool, hold it for <holdTime> ms, and then return it > to the pool. If <loopOnce> is false, > >> > + * threads will continue this process indefinitely. If > <expectingError> is true, exactly 1/2 of the > >> > + * threads are expected to either throw exceptions or fail to > complete. If <expectingError> is false, > >> > + * all threads are expected to complete successfully. > >> > + * > >> > + * @param holdTime time in ms that a thread holds a connection > before returning it to the pool > >> > + * @param expectError whether or not an error is expected > >> > + * @param loopOnce whether threads should complete the borrow - > hold - return cycle only once, or loop indefinitely > >> > + * @param maxWait passed in by client - has no impact on the test > itself, but does get reported > >> > + * > >> > + * @throws Exception > >> > + */ > >> > + protected void multipleThreads(final int holdTime, final boolean > expectError, final boolean loopOnce, final long maxWait) > >> > throws Exception { > >> > long startTime = timeStamp(); > >> > final PoolTest[] pts = new PoolTest[2 * > getMaxActive()]; > >> > @@ -696,8 +710,7 @@ > >> > } > >> > }; > >> > for (int i = 0; i < pts.length; i++) { > >> > - // If we are expecting an error, don't allow > successful threads to loop > >> > - (pts[i] = new PoolTest(threadGroup, holdTime, > expectError)).start(); > >> > + (pts[i] = new PoolTest(threadGroup, holdTime, > expectError, loopOnce)).start(); > >> > } > >> > > >> > Thread.sleep(100L); // Wait for long enough to allow > threads to start > >> > > >> > Modified: > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/datasources/TestPerUserPoolDataSource.java > >> > URL: > http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/datasources/TestPerUserPoolDataSource.java?rev=897678&r1=897677&r2=897678&view=diff > >> > > ============================================================================== > >> > --- > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/datasources/TestPerUserPoolDataSource.java > (original) > >> > +++ > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/datasources/TestPerUserPoolDataSource.java > Sun Jan 10 18:21:03 2010 > >> > @@ -378,11 +378,11 @@ > >> > final int defaultMaxWait = 430; > >> > ((PerUserPoolDataSource) > ds).setDefaultMaxWait(defaultMaxWait); > >> > ((PerUserPoolDataSource) ds).setPerUserMaxWait("foo",new > Integer(defaultMaxWait)); > >> > - multipleThreads(1, false, defaultMaxWait); > >> > + multipleThreads(1, false, false, defaultMaxWait); > >> > } > >> > > >> > public void testMultipleThreads2() throws Exception { > >> > - multipleThreads(2 * (int)(getMaxWait()), true, getMaxWait()); > >> > + multipleThreads(2 * (int)(getMaxWait()), true, false, > getMaxWait()); > >> > } > >> > > >> > public void testTransactionIsolationBehavior() throws Exception { > >> > > >> > Modified: > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/datasources/TestSharedPoolDataSource.java > >> > URL: > http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/datasources/TestSharedPoolDataSource.java?rev=897678&r1=897677&r2=897678&view=diff > >> > > ============================================================================== > >> > --- > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/datasources/TestSharedPoolDataSource.java > (original) > >> > +++ > commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/datasources/TestSharedPoolDataSource.java > Sun Jan 10 18:21:03 2010 > >> > @@ -368,11 +368,11 @@ > >> > // some JVMs, e.g. Windows. > >> > final int defaultMaxWait = 430; > >> > ((SharedPoolDataSource) ds).setMaxWait(defaultMaxWait); > >> > - multipleThreads(1, false, defaultMaxWait); > >> > + multipleThreads(1, false, false, defaultMaxWait); > >> > } > >> > > >> > public void testMultipleThreads2() throws Exception { > >> > - multipleThreads(2 * (int)(getMaxWait()), true, getMaxWait()); > >> > + multipleThreads(2 * (int)(getMaxWait()), true, false, > getMaxWait()); > >> > } > >> > > >> > public void testTransactionIsolationBehavior() throws Exception { > >> > > >> > > >> > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> For additional commands, e-mail: dev-h...@commons.apache.org > >> > >> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > > For additional commands, e-mail: dev-h...@commons.apache.org > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org