You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2006/12/15 01:26:23 UTC

svn commit: r487408 - in /tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport: AbstractRxTask.java RxTaskPool.java WorkerThread.java bio/BioReceiver.java bio/BioReplicationThread.java nio/NioReceiver.java nio/NioReplicationThread.java

Author: fhanik
Date: Thu Dec 14 16:26:22 2006
New Revision: 487408

URL: http://svn.apache.org/viewvc?view=rev&rev=487408
Log:
refactor, name change, in preparation of having a pluggable Executor and more thread fairness on receiving data

Added:
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/AbstractRxTask.java
      - copied, changed from r487407, tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/WorkerThread.java
Removed:
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/WorkerThread.java
Modified:
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/RxTaskPool.java
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReceiver.java
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReplicationThread.java
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReplicationThread.java

Copied: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/AbstractRxTask.java (from r487407, tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/WorkerThread.java)
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/AbstractRxTask.java?view=diff&rev=487408&p1=tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/WorkerThread.java&r1=487407&p2=tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/AbstractRxTask.java&r2=487408
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/WorkerThread.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/AbstractRxTask.java Thu Dec 14 16:26:22 2006
@@ -26,7 +26,7 @@
  * @author Filip Hanik
  * @version $Revision$ $Date$
  */
-public abstract class WorkerThread extends Thread 
+public abstract class AbstractRxTask extends Thread 
 { 
     
     public static final int OPTION_DIRECT_BUFFER = ReceiverBase.OPTION_DIRECT_BUFFER;
@@ -37,7 +37,7 @@
     private int options;
     protected boolean useBufferPool = true;
 
-    public WorkerThread(ListenCallback callback) {
+    public AbstractRxTask(ListenCallback callback) {
         this.callback = callback;
     }
 

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/RxTaskPool.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/RxTaskPool.java?view=diff&rev=487408&r1=487407&r2=487408
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/RxTaskPool.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/RxTaskPool.java Thu Dec 14 16:26:22 2006
@@ -57,13 +57,13 @@
         this.creator = creator;
         //for (int i = 0; i < minThreads; i++) {
         for (int i = 0; i < maxThreads; i++) { //temporary fix for thread hand off problem
-            WorkerThread thread = creator.getWorkerThread();
+            AbstractRxTask thread = creator.getWorkerThread();
             setupThread(thread);
             idle.add (thread);
         }
     }
     
-    protected void setupThread(WorkerThread thread) {
+    protected void setupThread(AbstractRxTask thread) {
         synchronized (thread) {
             thread.setPool(this);
             thread.setName(thread.getClass().getName() + "[" + inc() + "]");
@@ -77,14 +77,14 @@
     /**
      * Find an idle worker thread, if any.  Could return null.
      */
-    public WorkerThread getWorker()
+    public AbstractRxTask getWorker()
     {
-        WorkerThread worker = null;
+        AbstractRxTask worker = null;
         synchronized (mutex) {
             while ( worker == null && running ) {
                 if (idle.size() > 0) {
                     try {
-                        worker = (WorkerThread) idle.remove(0);
+                        worker = (AbstractRxTask) idle.remove(0);
                     } catch (java.util.NoSuchElementException x) {
                         //this means that there are no available workers
                         worker = null;
@@ -109,7 +109,7 @@
      * Called by the worker thread to return itself to the
      * idle pool.
      */
-    public void returnWorker (WorkerThread worker) {
+    public void returnWorker (AbstractRxTask worker) {
         if ( running ) {
             synchronized (mutex) {
                 used.remove(worker);
@@ -140,7 +140,7 @@
         synchronized (mutex) {
             Iterator i = idle.iterator();
             while ( i.hasNext() ) {
-                WorkerThread worker = (WorkerThread)i.next();
+                AbstractRxTask worker = (AbstractRxTask)i.next();
                 returnWorker(worker);
                 i.remove();
             }
@@ -160,6 +160,6 @@
     }
     
     public static interface TaskCreator {
-        public WorkerThread getWorkerThread();
+        public AbstractRxTask getWorkerThread();
     }
 }

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReceiver.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReceiver.java?view=diff&rev=487408&r1=487407&r2=487408
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReceiver.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReceiver.java Thu Dec 14 16:26:22 2006
@@ -24,7 +24,7 @@
 import org.apache.catalina.tribes.io.ObjectReader;
 import org.apache.catalina.tribes.transport.ReceiverBase;
 import org.apache.catalina.tribes.transport.RxTaskPool;
-import org.apache.catalina.tribes.transport.WorkerThread;
+import org.apache.catalina.tribes.transport.AbstractRxTask;
 
 /**
  * <p>Title: </p>
@@ -73,7 +73,7 @@
         }
     }
     
-    public WorkerThread getWorkerThread() {
+    public AbstractRxTask getWorkerThread() {
         return getReplicationThread();
     }
     

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReplicationThread.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReplicationThread.java?view=diff&rev=487408&r1=487407&r2=487408
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReplicationThread.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReplicationThread.java Thu Dec 14 16:26:22 2006
@@ -20,7 +20,7 @@
 
 import org.apache.catalina.tribes.io.ObjectReader;
 import org.apache.catalina.tribes.transport.Constants;
-import org.apache.catalina.tribes.transport.WorkerThread;
+import org.apache.catalina.tribes.transport.AbstractRxTask;
 import java.net.Socket;
 import java.io.InputStream;
 import org.apache.catalina.tribes.transport.ReceiverBase;
@@ -44,7 +44,7 @@
  * 
  * @version $Revision$, $Date$
  */
-public class BioReplicationThread extends WorkerThread {
+public class BioReplicationThread extends AbstractRxTask {
 
 
     protected static org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory.getLog( BioReplicationThread.class );

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java?view=diff&rev=487408&r1=487407&r2=487408
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java Thu Dec 14 16:26:22 2006
@@ -32,7 +32,7 @@
 import org.apache.catalina.tribes.transport.Constants;
 import org.apache.catalina.tribes.transport.ReceiverBase;
 import org.apache.catalina.tribes.transport.RxTaskPool;
-import org.apache.catalina.tribes.transport.WorkerThread;
+import org.apache.catalina.tribes.transport.AbstractRxTask;
 import org.apache.catalina.tribes.util.StringManager;
 import java.util.LinkedList;
 import java.util.Set;
@@ -109,7 +109,7 @@
         }
     }
     
-    public WorkerThread getWorkerThread() {
+    public AbstractRxTask getWorkerThread() {
         NioReplicationThread thread = new NioReplicationThread(this,this);
         thread.setUseBufferPool(this.getUseBufferPool());
         thread.setRxBufSize(getRxBufSize());

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReplicationThread.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReplicationThread.java?view=diff&rev=487408&r1=487407&r2=487408
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReplicationThread.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReplicationThread.java Thu Dec 14 16:26:22 2006
@@ -23,7 +23,7 @@
 
 import org.apache.catalina.tribes.io.ObjectReader;
 import org.apache.catalina.tribes.transport.Constants;
-import org.apache.catalina.tribes.transport.WorkerThread;
+import org.apache.catalina.tribes.transport.AbstractRxTask;
 import org.apache.catalina.tribes.ChannelMessage;
 import org.apache.catalina.tribes.io.ListenCallback;
 import org.apache.catalina.tribes.io.ChannelData;
@@ -47,7 +47,7 @@
  * 
  * @version $Revision$, $Date$
  */
-public class NioReplicationThread extends WorkerThread {
+public class NioReplicationThread extends AbstractRxTask {
     
     private static org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory.getLog( NioReplicationThread.class );
     



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r487408 - in /tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport: AbstractRxTask.java RxTaskPool.java WorkerThread.java bio/BioReceiver.java bio/BioReplicationThread.java nio/NioReceiver.java nio/NioReplicationThread.java

Posted by Filip Hanik - Dev Lists <de...@hanik.com>.
Remy Maucherat wrote:
> fhanik@apache.org wrote:
>> Author: fhanik
>> Date: Thu Dec 14 16:26:22 2006
>> New Revision: 487408
>>
>> URL: http://svn.apache.org/viewvc?view=rev&rev=487408
>> Log:
>> refactor, name change, in preparation of having a pluggable Executor 
>> and more thread fairness on receiving data
>
> Since you're adding usage of executor, it would be good to plan to 
> support getting an executor from the engine. This would allow having a 
> thread pool shared among all heavy thread users (like processing 
> threads in the connectors, which already do support executors, but the 
> Executor element - child of Engine most likely - is not defined yet). 
> Of course, using a fancy thread pool is slower than using a super dumb 
> one, and is not terribly useful in many cases, so the dumb one should 
> remain there.
I might switch to a dumb pool, as I'm not really happy with the 
functionality of the executor, however, the biggest gain from this patch 
was that dispatched events got queued, hence they get ordered, and 
instead of relying on notifyall or other stuff, I can process the events 
in the order they are received.

you can still tag away, I'm gonna run some tests until I finalize this, 
I believe I can still use the Executor interface to implement a dumb 
thread pool :)

Filip


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r487408 - in /tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport: AbstractRxTask.java RxTaskPool.java WorkerThread.java bio/BioReceiver.java bio/BioReplicationThread.java nio/NioReceiver.java nio/NioReplicationThread.java

Posted by Remy Maucherat <re...@apache.org>.
fhanik@apache.org wrote:
> Author: fhanik
> Date: Thu Dec 14 16:26:22 2006
> New Revision: 487408
> 
> URL: http://svn.apache.org/viewvc?view=rev&rev=487408
> Log:
> refactor, name change, in preparation of having a pluggable Executor and more thread fairness on receiving data

Since you're adding usage of executor, it would be good to plan to 
support getting an executor from the engine. This would allow having a 
thread pool shared among all heavy thread users (like processing threads 
in the connectors, which already do support executors, but the Executor 
element - child of Engine most likely - is not defined yet). Of course, 
using a fancy thread pool is slower than using a super dumb one, and is 
not terribly useful in many cases, so the dumb one should remain there.

Rémy

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org