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