You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2004/07/09 00:07:55 UTC

cvs commit: incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/control ControlProtocolTest.java

djencks     2004/07/08 15:07:55

  Modified:    modules/core project.xml
               modules/core/src/java/org/apache/geronimo/pool
                        ThreadPool.java
               modules/security/src/test/org/apache/geronimo/security/network/protocol
                        SubjectCarryingProtocolTest.java
               modules/network/src/java/org/apache/geronimo/network
                        SelectorManager.java
               modules/network/src/java/org/apache/geronimo/network/protocol
                        BufferProtocol.java GSSAPIClientProtocol.java
               modules/network/src/test/org/apache/geronimo/network/protocol
                        DatagramProtocolTest.java GSSAPIProtocolTest.java
                        ProtocolStackTest.java
                        SocketProtocolStressTest.java
                        SocketProtocolTest.java
               modules/network/src/test/org/apache/geronimo/network/protocol/control
                        ControlProtocolTest.java
  Log:
  Change ThreadPool to use a queue for waiting tasks and to have a hard size limit
  
  Revision  Changes    Path
  1.56      +5 -5      incubator-geronimo/modules/core/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/project.xml,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- project.xml	24 Jun 2004 20:59:46 -0000	1.55
  +++ project.xml	8 Jul 2004 22:07:54 -0000	1.56
  @@ -6,16 +6,16 @@
       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at
  -  
  +
          http://www.apache.org/licenses/LICENSE-2.0
  -  
  +
       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.
   -->
  -  
  +
   
   <!-- $Revision$ $Date$ -->
   
  @@ -141,7 +141,7 @@
           <dependency>
               <groupId>concurrent</groupId>
               <artifactId>concurrent</artifactId>
  -            <version>1.3.2</version>
  +            <version>1.3.4</version>
           </dependency>
   
           <dependency>
  
  
  
  1.2       +42 -27    incubator-geronimo/modules/core/src/java/org/apache/geronimo/pool/ThreadPool.java
  
  Index: ThreadPool.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/pool/ThreadPool.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ThreadPool.java	8 Jul 2004 05:13:29 -0000	1.1
  +++ ThreadPool.java	8 Jul 2004 22:07:54 -0000	1.2
  @@ -20,6 +20,7 @@
   import EDU.oswego.cs.dl.util.concurrent.Executor;
   import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
   import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
  +import EDU.oswego.cs.dl.util.concurrent.LinkedQueue;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   import org.apache.geronimo.gbean.GBeanInfo;
  @@ -31,20 +32,20 @@
   /**
    * @version $Revision$ $Date$
    */
  -public class ThreadPool implements GBeanLifecycle {
  +public class ThreadPool implements Executor, ExecutorFactory, GBeanLifecycle {
   
       static private final Log log = LogFactory.getLog(ThreadPool.class);
   
  -    private PooledExecutor workManager;
  +    private PooledExecutor executor;
       private long keepAliveTime;
  -    private int minimumPoolSize;
  +    private int poolSize;
       private int maximumPoolSize;
       private String poolName;
   
       private int nextWorkerID = 0;
   
  -    public Executor getWorkManager() {
  -        return workManager;
  +    public Executor getExecutor() {
  +        return new ExecutorWrapper(executor);
       }
   
       public long getKeepAliveTime() {
  @@ -55,26 +56,22 @@
           this.keepAliveTime = keepAliveTime;
       }
   
  -    public int getMinimumPoolSize() {
  -        return minimumPoolSize;
  +    public int getPoolSize() {
  +        return poolSize;
       }
   
  -    public void setMinimumPoolSize(int minimumPoolSize) {
  -        this.minimumPoolSize = minimumPoolSize;
  -    }
  -
  -    public int getMaximumPoolSize() {
  -        return maximumPoolSize;
  -    }
  -
  -    public void setMaximumPoolSize(int maximumPoolSize) {
  -        this.maximumPoolSize = maximumPoolSize;
  +    public void setPoolSize(int poolSize) {
  +        this.poolSize = poolSize;
       }
   
       public String getPoolName() {
           return poolName;
       }
   
  +    public void execute(Runnable command) throws InterruptedException {
  +        executor.execute(command);
  +    }
  +
       public void setPoolName(String poolName) {
           this.poolName = poolName;
       }
  @@ -84,23 +81,25 @@
       }
   
       public void doStart() throws WaitingException, Exception {
  -        PooledExecutor p = new PooledExecutor();
  +        PooledExecutor p = new PooledExecutor(new LinkedQueue(), poolSize);
           p.setKeepAliveTime(keepAliveTime);
  -        p.setMinimumPoolSize(minimumPoolSize);
  -        p.setMaximumPoolSize(maximumPoolSize);
  +        //I think this does nothing with a LinkedQueue present
  +        p.setMaximumPoolSize(poolSize);
           p.setThreadFactory(new ThreadFactory() {
               public Thread newThread(Runnable arg0) {
                   return new Thread(arg0, poolName + " " + getNextWorkerID());
               }
           });
  +        //I think this does nothing with a LinkedQueue present
  +        p.waitWhenBlocked();
   
  -        workManager = p;
  +        executor = p;
   
           log.info("Thread pool " + poolName + " started");
       }
   
       public void doStop() throws WaitingException, Exception {
  -        workManager.shutdownNow();
  +        executor.shutdownNow();
           log.info("Thread pool " + poolName + " stopped");
       }
   
  @@ -108,7 +107,19 @@
           try {
               doStop();
           } catch (Exception e) {
  -            log.error("Failded to shutdown", e);
  +            log.error("Failed to shutdown", e);
  +        }
  +    }
  +
  +    private static class ExecutorWrapper implements Executor {
  +        private final Executor delegate;
  +
  +        public ExecutorWrapper(Executor delegate) {
  +            this.delegate = delegate;
  +        }
  +
  +        public void execute(Runnable command) throws InterruptedException {
  +            delegate.execute(command);
           }
       }
   
  @@ -118,10 +129,12 @@
           GBeanInfoFactory infoFactory = new GBeanInfoFactory(ThreadPool.class);
   
           infoFactory.addAttribute("keepAliveTime", long.class, true);
  -        infoFactory.addAttribute("minimumPoolSize", int.class, true);
  -        infoFactory.addAttribute("maximumPoolSize", int.class, true);
  +        infoFactory.addAttribute("poolSize", int.class, true);
           infoFactory.addAttribute("poolName", String.class, true);
  -        infoFactory.addOperation("getWorkManager");
  +        infoFactory.addOperation("getExecutor");
  +
  +        infoFactory.addInterface(Executor.class);
  +        infoFactory.addInterface(ExecutorFactory.class);
   
           GBEAN_INFO = infoFactory.getBeanInfo();
       }
  @@ -129,4 +142,6 @@
       public static GBeanInfo getGBeanInfo() {
           return GBEAN_INFO;
       }
  +
  +
   }
  
  
  
  1.13      +3 -5      incubator-geronimo/modules/security/src/test/org/apache/geronimo/security/network/protocol/SubjectCarryingProtocolTest.java
  
  Index: SubjectCarryingProtocolTest.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/security/src/test/org/apache/geronimo/security/network/protocol/SubjectCarryingProtocolTest.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SubjectCarryingProtocolTest.java	8 Jul 2004 05:13:29 -0000	1.12
  +++ SubjectCarryingProtocolTest.java	8 Jul 2004 22:07:54 -0000	1.13
  @@ -96,8 +96,7 @@
           public Object run() throws Exception {
               ThreadPool tp = new ThreadPool();
               tp.setKeepAliveTime(1 * 1000);
  -            tp.setMinimumPoolSize(1);
  -            tp.setMaximumPoolSize(5);
  +            tp.setPoolSize(1);
               tp.setPoolName("Client TP");
               tp.doStart();
   
  @@ -176,8 +175,7 @@
           public Object run() throws Exception {
               ThreadPool tp = new ThreadPool();
               tp.setKeepAliveTime(1 * 1000);
  -            tp.setMinimumPoolSize(1);
  -            tp.setMaximumPoolSize(5);
  +            tp.setPoolSize(1);
               tp.setPoolName("Server TP");
               tp.doStart();
   
  
  
  
  1.13      +4 -4      incubator-geronimo/modules/network/src/java/org/apache/geronimo/network/SelectorManager.java
  
  Index: SelectorManager.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/network/src/java/org/apache/geronimo/network/SelectorManager.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SelectorManager.java	8 Jul 2004 05:13:29 -0000	1.12
  +++ SelectorManager.java	8 Jul 2004 22:07:54 -0000	1.13
  @@ -183,17 +183,17 @@
                           if (key.isReadable()) {
                               log.trace("-OP_READ " + key);
                               key.interestOps(key.interestOps() & (~SelectionKey.OP_READ));
  -                            threadPool.getWorkManager().execute(new Event(key, SelectionKey.OP_READ));
  +                            threadPool.getExecutor().execute(new Event(key, SelectionKey.OP_READ));
                           }
                           if (key.isWritable()) {
                               log.trace("-OP_WRITE " + key);
                               key.interestOps(key.interestOps() & (~SelectionKey.OP_WRITE));
  -                            threadPool.getWorkManager().execute(new Event(key, SelectionKey.OP_WRITE));
  +                            threadPool.getExecutor().execute(new Event(key, SelectionKey.OP_WRITE));
                           }
                           if (key.isAcceptable()) {
                               log.trace("-OP_ACCEPT " + key);
                               key.interestOps(key.interestOps() & (~SelectionKey.OP_ACCEPT));
  -                            threadPool.getWorkManager().execute(new Event(key, SelectionKey.OP_ACCEPT));
  +                            threadPool.getExecutor().execute(new Event(key, SelectionKey.OP_ACCEPT));
                           }
   
                           i.remove(); // Remove the key from the set of selected keys
  
  
  
  1.5       +3 -3      incubator-geronimo/modules/network/src/java/org/apache/geronimo/network/protocol/BufferProtocol.java
  
  Index: BufferProtocol.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/network/src/java/org/apache/geronimo/network/protocol/BufferProtocol.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BufferProtocol.java	8 Jul 2004 05:13:29 -0000	1.4
  +++ BufferProtocol.java	8 Jul 2004 22:07:54 -0000	1.5
  @@ -56,7 +56,7 @@
           log.trace("Starting");
           running = true;
           try {
  -            threadPool.getWorkManager().execute(new Runnable() {
  +            threadPool.getExecutor().execute(new Runnable() {
                   public void run() {
                       try {
                           while (running) {
  @@ -70,7 +70,7 @@
                       }
                   }
               });
  -            threadPool.getWorkManager().execute(new Runnable() {
  +            threadPool.getExecutor().execute(new Runnable() {
                   public void run() {
                       try {
                           while (running) {
  
  
  
  1.6       +3 -3      incubator-geronimo/modules/network/src/java/org/apache/geronimo/network/protocol/GSSAPIClientProtocol.java
  
  Index: GSSAPIClientProtocol.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/network/src/java/org/apache/geronimo/network/protocol/GSSAPIClientProtocol.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- GSSAPIClientProtocol.java	8 Jul 2004 05:13:29 -0000	1.5
  +++ GSSAPIClientProtocol.java	8 Jul 2004 22:07:54 -0000	1.6
  @@ -119,7 +119,7 @@
               context.requestInteg(integrity);
               context.requestCredDeleg(true);
   
  -            threadPool.getWorkManager().execute(new Runnable() {
  +            threadPool.getExecutor().execute(new Runnable() {
                   public void run() {
                       try {
                           byte[] token = new byte[0];
  @@ -164,7 +164,7 @@
                       if (context.getMutualAuthState()) log.trace("MUTUAL AUTHENTICATION IN PLACE");
                       if (context.getConfState()) log.trace("CONFIDENTIALITY IN PLACE");
                       if (context.getIntegState()) log.trace("INTEGRITY IN PLACE");
  -                    
  +
                       log.trace("RELEASING " + startupLatch);
                       startupLatch.release();
                       log.trace("RELEASED " + startupLatch);
  
  
  
  1.6       +3 -5      incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/DatagramProtocolTest.java
  
  Index: DatagramProtocolTest.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/DatagramProtocolTest.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DatagramProtocolTest.java	8 Jul 2004 05:13:28 -0000	1.5
  +++ DatagramProtocolTest.java	8 Jul 2004 22:07:54 -0000	1.6
  @@ -37,8 +37,7 @@
       public void test() throws Exception {
           ThreadPool tp = new ThreadPool();
           tp.setKeepAliveTime(100);
  -        tp.setMinimumPoolSize(5);
  -        tp.setMaximumPoolSize(25);
  +        tp.setPoolSize(5);
           tp.setPoolName("TP");
           tp.doStart();
   
  @@ -118,8 +117,7 @@
       public void testClone() throws Exception {
           ThreadPool tp = new ThreadPool();
           tp.setKeepAliveTime(100);
  -        tp.setMinimumPoolSize(5);
  -        tp.setMaximumPoolSize(25);
  +        tp.setPoolSize(5);
           tp.setPoolName("TP");
           tp.doStart();
   
  
  
  
  1.7       +3 -5      incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/GSSAPIProtocolTest.java
  
  Index: GSSAPIProtocolTest.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/GSSAPIProtocolTest.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- GSSAPIProtocolTest.java	8 Jul 2004 05:13:28 -0000	1.6
  +++ GSSAPIProtocolTest.java	8 Jul 2004 22:07:54 -0000	1.7
  @@ -85,8 +85,7 @@
           public Object run() throws Exception {
               ThreadPool tp = new ThreadPool();
               tp.setKeepAliveTime(1 * 1000);
  -            tp.setMinimumPoolSize(1);
  -            tp.setMaximumPoolSize(5);
  +            tp.setPoolSize(1);
               tp.setPoolName("Client TP");
               tp.doStart();
   
  @@ -166,8 +165,7 @@
           public Object run() throws Exception {
               ThreadPool tp = new ThreadPool();
               tp.setKeepAliveTime(1 * 1000);
  -            tp.setMinimumPoolSize(1);
  -            tp.setMaximumPoolSize(5);
  +            tp.setPoolSize(1);
               tp.setPoolName("Server TP");
               tp.doStart();
   
  
  
  
  1.8       +3 -4      incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/ProtocolStackTest.java
  
  Index: ProtocolStackTest.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/ProtocolStackTest.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ProtocolStackTest.java	8 Jul 2004 05:13:28 -0000	1.7
  +++ ProtocolStackTest.java	8 Jul 2004 22:07:54 -0000	1.8
  @@ -39,8 +39,7 @@
       public void test() throws Exception {
           ThreadPool tp = new ThreadPool();
           tp.setKeepAliveTime(1 * 1000);
  -        tp.setMinimumPoolSize(5);
  -        tp.setMaximumPoolSize(25);
  +        tp.setPoolSize(5);
           tp.setPoolName("TP");
           tp.doStart();
   
  @@ -157,7 +156,7 @@
   
           tp.doStop();
       }
  -    
  +
       static volatile long id = 0;
   
       public DatagramDownPacket getDatagramPacket() {
  
  
  
  1.10      +2 -3      incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/SocketProtocolStressTest.java
  
  Index: SocketProtocolStressTest.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/SocketProtocolStressTest.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SocketProtocolStressTest.java	8 Jul 2004 05:13:28 -0000	1.9
  +++ SocketProtocolStressTest.java	8 Jul 2004 22:07:54 -0000	1.10
  @@ -101,8 +101,7 @@
   
           tp = new ThreadPool();
           tp.setKeepAliveTime(60 * 1000);
  -        tp.setMinimumPoolSize(5);
  -        tp.setMaximumPoolSize(25);
  +        tp.setPoolSize(5);
           tp.setPoolName("TP");
           tp.doStart();
   
  
  
  
  1.8       +2 -3      incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/SocketProtocolTest.java
  
  Index: SocketProtocolTest.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/SocketProtocolTest.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SocketProtocolTest.java	8 Jul 2004 05:13:28 -0000	1.7
  +++ SocketProtocolTest.java	8 Jul 2004 22:07:54 -0000	1.8
  @@ -40,8 +40,7 @@
       public void test() throws Exception {
           ThreadPool tp = new ThreadPool();
           tp.setKeepAliveTime(1 * 1000);
  -        tp.setMinimumPoolSize(5);
  -        tp.setMaximumPoolSize(25);
  +        tp.setPoolSize(5);
           tp.setPoolName("TP");
           tp.doStart();
   
  
  
  
  1.9       +2 -3      incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/control/ControlProtocolTest.java
  
  Index: ControlProtocolTest.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/network/src/test/org/apache/geronimo/network/protocol/control/ControlProtocolTest.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ControlProtocolTest.java	8 Jul 2004 05:13:29 -0000	1.8
  +++ ControlProtocolTest.java	8 Jul 2004 22:07:54 -0000	1.9
  @@ -49,8 +49,7 @@
       public void test() throws Exception {
           ThreadPool tp = new ThreadPool();
           tp.setKeepAliveTime(100 * 1000);
  -        tp.setMinimumPoolSize(5);
  -        tp.setMaximumPoolSize(25);
  +        tp.setPoolSize(5);
           tp.setPoolName("TP");
           tp.doStart();