You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2015/07/07 03:09:19 UTC

svn commit: r1689547 - in /qpid/java/trunk/broker-core/src: main/java/org/apache/qpid/server/transport/ main/java/org/apache/qpid/server/virtualhost/ test/java/org/apache/qpid/server/transport/

Author: rgodfrey
Date: Tue Jul  7 01:09:18 2015
New Revision: 1689547

URL: http://svn.apache.org/r1689547
Log:
QPID-6589 : Only create the selector thread on calling start() on the NetworkScheduler

Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NetworkConnectionScheduler.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/transport/NetworkConnectionSchedulerTest.java

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NetworkConnectionScheduler.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NetworkConnectionScheduler.java?rev=1689547&r1=1689546&r2=1689547&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NetworkConnectionScheduler.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NetworkConnectionScheduler.java Tue Jul  7 01:09:18 2015
@@ -37,9 +37,10 @@ import org.apache.qpid.transport.Transpo
 public class NetworkConnectionScheduler
 {
     private static final Logger LOGGER = LoggerFactory.getLogger(NetworkConnectionScheduler.class);
+    private final ThreadFactory _factory;
 
-    private final SelectorThread _selectorThread;
-    private final ThreadPoolExecutor _executor;
+    private volatile SelectorThread _selectorThread;
+    private volatile ThreadPoolExecutor _executor;
     private final AtomicInteger _running = new AtomicInteger();
     private final int _poolSize;
     private final String _name;
@@ -47,28 +48,35 @@ public class NetworkConnectionScheduler
     public NetworkConnectionScheduler(final String name, int threadPoolSize)
     {
         this(name, threadPoolSize, new ThreadFactory()
-        {
-            final AtomicInteger _count = new AtomicInteger();
+                                    {
+                                        final AtomicInteger _count = new AtomicInteger();
 
-            @Override
-            public Thread newThread(final Runnable r)
-            {
-                Thread t = Executors.defaultThreadFactory().newThread(r);
-                t.setName("IO-pool-" + name + "-" + _count.incrementAndGet());
-                return t;
-            }
-        });
+                                        @Override
+                                        public Thread newThread(final Runnable r)
+                                        {
+                                            Thread t = Executors.defaultThreadFactory().newThread(r);
+                                            t.setName("IO-pool-" + name + "-" + _count.incrementAndGet());
+                                            return t;
+                                        }
+                                    });
     }
+
     public NetworkConnectionScheduler(String name, int threadPoolSize, ThreadFactory factory)
     {
+        _name = name;
+        _poolSize = threadPoolSize;
+        _factory = factory;
+    }
+
+
+    public void start()
+    {
         try
         {
-            _name = name;
-            _selectorThread = new SelectorThread(this);  // TODO: Publishes partially constructed object
+            _selectorThread = new SelectorThread(this);
             _selectorThread.start();
-            _poolSize = threadPoolSize;
             _executor = new ThreadPoolExecutor(_poolSize, _poolSize, 0L, TimeUnit.MILLISECONDS,
-                                               new LinkedBlockingQueue<Runnable>(), factory);
+                                               new LinkedBlockingQueue<Runnable>(), _factory);
             _executor.prestartAllCoreThreads();
         }
         catch (IOException e)
@@ -145,8 +153,16 @@ public class NetworkConnectionScheduler
 
     public void close()
     {
-        _selectorThread.close();
-        _executor.shutdown();
+        if(_selectorThread != null)
+        {
+            _selectorThread.close();
+            _selectorThread = null;
+        }
+        if(_executor != null)
+        {
+            _executor.shutdown();
+            _executor = null;
+        }
     }
 
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java?rev=1689547&r1=1689546&r2=1689547&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java Tue Jul  7 01:09:18 2015
@@ -71,6 +71,7 @@ class TCPandSSLTransport implements Acce
         }
 
         _scheduler = new NetworkConnectionScheduler("Port-"+_port.getName(), _port.getThreadPoolSize());
+        _scheduler.start();
         _networkTransport = new NonBlockingNetworkTransport(protocolEngineFactory,
                                                             encryptionSet, _scheduler, _port);
         _networkTransport.start();

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1689547&r1=1689546&r2=1689547&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Tue Jul  7 01:09:18 2015
@@ -1770,6 +1770,7 @@ public abstract class AbstractVirtualHos
         _networkConnectionScheduler = new NetworkConnectionScheduler("virtualhost-" + getName() + "-iopool",
                                                                      getConnectionThreadCount(),
                                                                      connectionThreadFactory);
+        _networkConnectionScheduler.start();
         MessageStore messageStore = getMessageStore();
         messageStore.openMessageStore(this);
 

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/transport/NetworkConnectionSchedulerTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/transport/NetworkConnectionSchedulerTest.java?rev=1689547&r1=1689546&r2=1689547&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/transport/NetworkConnectionSchedulerTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/transport/NetworkConnectionSchedulerTest.java Tue Jul  7 01:09:18 2015
@@ -60,7 +60,7 @@ public class NetworkConnectionSchedulerT
         when(timidEngine.getAggregateTicker()).thenReturn(new AggregateTicker());
 
         final NetworkConnectionScheduler scheduler = new NetworkConnectionScheduler(getName(), 1);
-
+        scheduler.start();
         NonBlockingNetworkTransport transport = new NonBlockingNetworkTransport(engineFactory, EnumSet.of(TransportEncryption.NONE),
                                                                                 scheduler, port);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org