cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vgritse...@apache.org
Subject svn commit: r155225 - in cocoon/branches/BRANCH_2_1_X: ./ src/java/org/apache/cocoon/components/thread/ src/test/org/apache/cocoon/components/thread/
Date Thu, 24 Feb 2005 19:05:28 GMT
Author: vgritsenko
Date: Thu Feb 24 11:05:25 2005
New Revision: 155225

URL: http://svn.apache.org/viewcvs?view=rev&rev=155225
Log:
Runnable Manager: Fix bug preventing scheduling of two different jobs at the same time.

Modified:
    cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
    cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java
    cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java
    cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadPoolTestCase.java
    cocoon/branches/BRANCH_2_1_X/status.xml

Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java?view=diff&r1=155224&r2=155225
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
(original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
Thu Feb 24 11:05:25 2005
@@ -30,18 +30,17 @@
 import java.util.SortedSet;
 import java.util.TreeSet;
 
-
 /**
  * The DefaultRunnableManager implements the {@link RunnableManager} interface
  * and is responsible to create {@link ThreadPool}s and run {@link Runnable}s
  * in them as background commands.
- * 
+ *
  * <p>
  * The configuration of the <code>DefaultRunnableManager</code>:
  * <pre>
  *   &lt;thread-factory&gt;org.apache.cocoon.components.thread.DefaultThreadFactory&lt;/thread-factory&gt;
  *   &lt;thread-pools&gt;
- *     &lt;thread-pool&gt;  
+ *     &lt;thread-pool&gt;
  *       &lt;name&gt;default&lt;/name&gt;
  *       &lt;priority&gt;NORM&lt;/priority&gt;
  *       &lt;daemon&gt;false&lt;/daemon&gt;
@@ -52,11 +51,11 @@
  *       &lt;block-policy&gt;RUN&lt;/block-policy&gt;
  *       &lt;shutdown-graceful&gt;false&lt;/shutdown-graceful&gt;
  *       &lt;shutdown-wait-time-ms&gt;-1&lt;/shutdown-wait-time-ms&gt;
- *     &lt;/thread-pool&gt; 
+ *     &lt;/thread-pool&gt;
  *   &lt;/thread-pools&gt;
  * </pre>
  * </p>
- * 
+ *
  * <p>
  * Have a look at
  * http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/PooledExecutor.html,
@@ -329,8 +328,8 @@
         if( getLogger(  ).isDebugEnabled(  ) )
         {
             getLogger(  ).debug( "Command entered: " + command.toString(  ) +
-                                 ",pool=" + pool.getName(  ) + ",delay=" +
-                                 delay + ",interval=" + interval );
+                                 ", pool=" + pool.getName(  ) + ", delay=" +
+                                 delay + ", interval=" + interval );
         }
 
         new ExecutionInfo( pool, command, delay, interval, getLogger(  ) );
@@ -500,16 +499,15 @@
      *
      * @throws Exception DOCUMENT ME!
      */
-    public void start(  )
-        throws Exception
+    public void start(  ) throws Exception
     {
         if( getLogger(  ).isDebugEnabled(  ) )
         {
-            getLogger(  ).debug( "starting heart" );
+            getLogger(  ).debug( "Starting the heart" );
         }
 
         m_keepRunning = true;
-        ( (ThreadPool)m_pools.get( DEFAULT_THREADPOOL_NAME ) ).execute( this );
+        ( (ThreadPool) m_pools.get( DEFAULT_THREADPOOL_NAME ) ).execute( this );
     }
 
     /**
@@ -578,7 +576,7 @@
         int minPoolSize =
             config.getChild( "min-pool-size" ).getValueAsInteger( DEFAULT_MIN_POOL_SIZE );
 
-        // make sure we have enough threads for the default thread pool as we 
+        // make sure we have enough threads for the default thread pool as we
         // need one for ourself
         if( DEFAULT_THREADPOOL_NAME.equals( name ) &&
             ( ( minPoolSize > 0 ) && ( minPoolSize < DEFAULT_MIN_POOL_SIZE
) ) )
@@ -644,7 +642,6 @@
         pool.setName( name );
 
         ThreadFactory factory = null;
-
         try
         {
             factory =
@@ -691,7 +688,6 @@
         }
 
         printPoolInfo( pool );
-
         return pool;
     }
 
@@ -743,8 +739,7 @@
      * @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati</a>
      * @version $Id: DefaultRunnableManager.java 56848 2004-11-07 14:09:23Z giacomo $
      */
-    private class ExecutionInfo
-        implements Comparable
+    private class ExecutionInfo implements Comparable
     {
         //~ Instance fields ----------------------------------------------------
 
@@ -810,8 +805,17 @@
         public int compareTo( final Object other )
         {
             final ExecutionInfo otherInfo = (ExecutionInfo)other;
-
-            return (int)( m_nextRun - otherInfo.m_nextRun );
+            int diff = (int)( m_nextRun - otherInfo.m_nextRun );
+            if (diff == 0) {
+                if (this == other) {
+                    // Same object, return 0.
+                    return 0;
+                } else {
+                    // NOT the same object, MUST return non-0 value.
+                    return System.identityHashCode(this) - System.identityHashCode(other);
+                }
+            }
+            return diff;
         }
 
         /**
@@ -821,20 +825,16 @@
         {
             if( m_logger.isDebugEnabled(  ) )
             {
-                m_logger.debug( "Hand over Command " +
-                                 m_command.toString(  ) + " to pool \"" +
-                                 m_pool.getName(  ) + "\" with delay=" + m_delay +
-                                 " and interval=" + m_interval );
+                m_logger.debug( "Executing command " + m_command + " in pool \"" +
+                                 m_pool.getName(  ) + "\", schedule with interval=" + m_interval
);
             }
 
             synchronized( m_commandStack )
             {
                 m_commandStack.remove( this );
-                m_nextRun = ( ( m_interval > 0 )
-                              ? ( System.currentTimeMillis(  ) + m_interval ) : 0 );
-
-                if( m_nextRun > 0 )
+                if( m_interval > 0 )
                 {
+                    m_nextRun = System.currentTimeMillis(  ) + m_interval;
                     m_commandStack.add( this );
                 }
             }
@@ -847,12 +847,12 @@
             {
                 if( m_logger.isDebugEnabled(  ) )
                 {
-                    m_logger.debug( m_command + " has been interrupted" );
+                    m_logger.debug( "Interrupted executing command + " + m_command );
                 }
             }
             catch( final Throwable t )
             {
-                m_logger.error( "Exception thrown by Command " + m_command, t );
+                m_logger.error( "Exception executing command " + m_command, t );
             }
         }
     }

Modified: cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java?view=diff&r1=155224&r2=155225
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java
(original)
+++ cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java
Thu Feb 24 11:05:25 2005
@@ -20,15 +20,13 @@
 import org.apache.avalon.framework.logger.Logger;
 import org.easymock.MockControl;
 
-
 /**
  * The $classType$ class ...
  *
  * @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati </a>
  * @version $Id$
  */
-public class DefaultRunnableManagerTestCase
-    extends AbstractTestCase
+public class DefaultRunnableManagerTestCase extends AbstractTestCase
 {
     //~ Constructors -----------------------------------------------------------
 
@@ -50,7 +48,7 @@
      * @throws Exception DOCUMENT ME!
      */
     public final void testConfigureDaemonPool(  )
-        throws Exception
+    throws Exception
     {
         final MockControl threadPoolConfigControl =
             createStrictControl( Configuration.class );
@@ -506,15 +504,15 @@
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
         logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1"
);
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "starting heart" );
+        logger.debug( "Starting the heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Entering loop" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "No commands available. Will just wait for one" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=default,delay=0,interval=0"
);
+        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable, pool=default,
delay=0, interval=0" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool
\"default\" with delay=0 and interval=0" );
+        logger.debug( "Executing command EasyMock for interface java.lang.Runnable in pool
\"default\", schedule with interval=0" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "No commands available. Will just wait for one" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -603,15 +601,15 @@
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
         logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1"
);
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "starting heart" );
+        logger.debug( "Starting the heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Entering loop" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "No commands available. Will just wait for one" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=default,delay=100,interval=0"
);
+        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable, pool=default,
delay=100, interval=0" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool
\"default\" with delay=100 and interval=0" );
+        logger.debug( "Executing command EasyMock for interface java.lang.Runnable in pool
\"default\", schedule with interval=0" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "No commands available. Will just wait for one" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -700,15 +698,15 @@
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
         logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1"
);
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "starting heart" );
+        logger.debug( "Starting the heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Entering loop" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "No commands available. Will just wait for one" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=default,delay=100,interval=100"
);
+        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable, pool=default,
delay=100, interval=100" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool
\"default\" with delay=100 and interval=100" );
+        logger.debug( "Executing command EasyMock for interface java.lang.Runnable in pool
\"default\", schedule with interval=100" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Exiting loop" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -805,7 +803,7 @@
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
         logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1"
);
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "starting heart" );
+        logger.debug( "Starting the heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Entering loop" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -815,9 +813,9 @@
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
         logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=1,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200"
);
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=mypool,delay=0,interval=0"
);
+        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable, pool=mypool,
delay=0, interval=0" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool
\"mypool\" with delay=0 and interval=0" );
+        logger.debug( "Executing command EasyMock for interface java.lang.Runnable in pool
\"mypool\", schedule with interval=0" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "No commands available. Will just wait for one" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -922,7 +920,7 @@
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
         logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1"
);
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "starting heart" );
+        logger.debug( "Starting the heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Entering loop" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -932,9 +930,9 @@
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
         logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=1,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200"
);
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=mypool,delay=100,interval=0"
);
+        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable, pool=mypool,
delay=100, interval=0" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool
\"mypool\" with delay=100 and interval=0" );
+        logger.debug( "Executing command EasyMock for interface java.lang.Runnable in pool
\"mypool\", schedule with interval=0" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "No commands available. Will just wait for one" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -1039,7 +1037,7 @@
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
         logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1"
);
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "starting heart" );
+        logger.debug( "Starting the heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Entering loop" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -1049,9 +1047,9 @@
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
         logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=1,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200"
);
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=mypool,delay=100,interval=100"
);
+        logger.debug( "Command entered: EasyMock for interface java.lang.Runnable, pool=mypool,
delay=100, interval=100" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
-        logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool
\"mypool\" with delay=100 and interval=100" );
+        logger.debug( "Executing command EasyMock for interface java.lang.Runnable in pool
\"mypool\", schedule with interval=100" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Exiting loop" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );

Modified: cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java?view=diff&r1=155224&r2=155225
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java
(original)
+++ cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java
Thu Feb 24 11:05:25 2005
@@ -24,8 +24,7 @@
  * @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati</a>
  * @version $Id$
  */
-public class DefaultThreadFactoryTestCase
-    extends TestCase
+public class DefaultThreadFactoryTestCase extends TestCase
 {
     //~ Methods ----------------------------------------------------------------
 
@@ -100,8 +99,7 @@
      * @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati</a>
      * @version $Id$
      */
-    private static class DummyRunnable
-        implements Runnable
+    private static class DummyRunnable implements Runnable
     {
         //~ Methods ------------------------------------------------------------
 

Modified: cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadPoolTestCase.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadPoolTestCase.java?view=diff&r1=155224&r2=155225
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadPoolTestCase.java
(original)
+++ cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadPoolTestCase.java
Thu Feb 24 11:05:25 2005
@@ -18,15 +18,13 @@
 import org.apache.avalon.framework.logger.ConsoleLogger;
 import org.easymock.MockControl;
 
-
 /**
  * The $classType$ class ...
  *
  * @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati</a>
  * @version $Id$
  */
-public class DefaultThreadPoolTestCase
-    extends AbstractTestCase
+public class DefaultThreadPoolTestCase extends AbstractTestCase
 {
     //~ Methods ----------------------------------------------------------------
 
@@ -38,10 +36,11 @@
         final DefaultThreadPool pool = new DefaultThreadPool(  );
         pool.enableLogging( new ConsoleLogger( ConsoleLogger.LEVEL_DEBUG ) );
         pool.setName( "mypool" );
-        // We cannot mock the DefaultThreadFactory as the underlying 
-        // PooledExecutor of the DefaultThreadPool will again wrapp it into a 
+
+        // We cannot mock the DefaultThreadFactory as the underlying
+        // PooledExecutor of the DefaultThreadPool will again wrapp it into a
         // PooledExecutor.Worker instance that does some bookeeping.
-        // Using a easymocked DefaultThreadFactory will prevent the 
+        // Using a easymocked DefaultThreadFactory will prevent the
         // PooledExecutor from shutting down and thus hangs forever.
         final ThreadFactory threadFactory = new DefaultThreadFactory();
         threadFactory.setPriority( Thread.MAX_PRIORITY );
@@ -53,6 +52,7 @@
         pool.setBlockPolicy( "ABORT" );
         pool.setShutdownGraceful( false );
         pool.setShutdownWaitTimeMs( 12345 );
+
         assertEquals( "block-policy", "ABORT", pool.getBlockPolicy(  ) );
         assertEquals( "keep-alive-time-ms", 11000L, pool.getKeepAliveTime(  ) );
         assertEquals( "max-queueu-size", 230, pool.getMaximumQueueSize(  ) );
@@ -82,10 +82,10 @@
         final DefaultThreadPool pool = new DefaultThreadPool(  );
         pool.enableLogging( new ConsoleLogger( ConsoleLogger.LEVEL_DEBUG ) );
         pool.setName( "mypool" );
-        // We cannot mock the DefaultThreadFactory as the underlying 
-        // PooledExecutor of the DefaultThreadPool will again wrapp it into a 
+        // We cannot mock the DefaultThreadFactory as the underlying
+        // PooledExecutor of the DefaultThreadPool will again wrapp it into a
         // PooledExecutor.Worker instance that does some bookeeping.
-        // Using a easymocked DefaultThreadFactory will prevent the 
+        // Using a easymocked DefaultThreadFactory will prevent the
         // PooledExecutor from shutting down and thus hangs forever.
         pool.setThreadFactory( new DefaultThreadFactory() );
         pool.setQueue( 230 );
@@ -108,7 +108,7 @@
      * @throws InterruptedException DOCUMENT ME!
      */
     public final void testShutdown(  )
-        throws InterruptedException
+    throws InterruptedException
     {
         final Runnable runnable = new Runnable(){
             public void run()

Modified: cocoon/branches/BRANCH_2_1_X/status.xml
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/status.xml?view=diff&r1=155224&r2=155225
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/status.xml (original)
+++ cocoon/branches/BRANCH_2_1_X/status.xml Thu Feb 24 11:05:25 2005
@@ -202,6 +202,9 @@
 
   <changes>
   <release version="@version@" date="@date@">
+   <action dev="VG" type="fix">
+     Runnable Manager: Fix bug preventing scheduling of two different jobs at the same time.
+   </action>
    <action dev="SW" type="add">
      Many changes in CForms block.
      <br/>



Mime
View raw message