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/06/15 21:57:58 UTC
svn commit: r1685657 - in /qpid/java/trunk:
bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/
broker-core/src/main/java/org/apache/qpid/server/model/
broker-core/src/main/java/org/apache/qpid/server/transport/
broker-core/src/main/j...
Author: rgodfrey
Date: Mon Jun 15 19:57:58 2015
New Revision: 1685657
URL: http://svn.apache.org/r1685657
Log:
QPID-6589 : [Java Broker] add the vhost principal subject for threads in vhost pools - make vhost connection thread pool size configurable
Modified:
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
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/virtualhost/AbstractVirtualHost.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/pool/SuppressingInheritedAccessControlContextThreadFactory.java
qpid/java/trunk/common/src/test/java/org/apache/qpid/pool/SuppressingInheritedAccessControlContextThreadFactoryTest.java
Modified: qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java?rev=1685657&r1=1685656&r2=1685657&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java (original)
+++ qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java Mon Jun 15 19:57:58 2015
@@ -91,6 +91,9 @@ public class BDBHAReplicaVirtualHostImpl
private long _storeTransactionOpenTimeoutWarn;
@ManagedAttributeField
private int _housekeepingThreadCount;
+ @ManagedAttributeField
+ private int _connectionThreadCount;
+
@ManagedAttributeField
private List<String> _enabledConnectionValidators;
@@ -242,6 +245,12 @@ public class BDBHAReplicaVirtualHostImpl
{
return 0;
}
+
+ @Override
+ public int getConnectionThreadCount()
+ {
+ return 0;
+ }
@Override
public long getQueueCount()
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1685657&r1=1685656&r2=1685657&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java Mon Jun 15 19:57:58 2015
@@ -98,6 +98,13 @@ public interface VirtualHost<X extends V
@ManagedAttribute( defaultValue = "${virtualhost.housekeepingThreadCount}")
int getHousekeepingThreadCount();
+ @ManagedContextDefault( name = "virtualhost.connectionThreadCount")
+ public static final int DEFAULT_CONNECTION_THREAD_COUNT = Runtime.getRuntime().availableProcessors();
+
+ @ManagedAttribute( defaultValue = "${virtualhost.connectionThreadCount}")
+ int getConnectionThreadCount();
+
+
@DerivedAttribute( persist = true )
String getModelVersion();
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=1685657&r1=1685656&r2=1685657&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 Mon Jun 15 19:57:58 2015
@@ -45,7 +45,22 @@ public class NetworkConnectionScheduler
private final int _poolSize;
private final String _name;
- public NetworkConnectionScheduler(String name, int threadPoolSize)
+ public NetworkConnectionScheduler(final String name, int threadPoolSize)
+ {
+ this(name, threadPoolSize, new ThreadFactory()
+ {
+ 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;
+ }
+ });
+ }
+ public NetworkConnectionScheduler(String name, int threadPoolSize, ThreadFactory factory)
{
try
{
@@ -54,18 +69,7 @@ public class NetworkConnectionScheduler
_poolSize = threadPoolSize;
_name = name;
_executor = new ThreadPoolExecutor(_poolSize, _poolSize, 0L, TimeUnit.MILLISECONDS,
- new LinkedBlockingQueue<Runnable>(), new ThreadFactory()
- {
- final AtomicInteger _count = new AtomicInteger();
-
- @Override
- public Thread newThread(final Runnable r)
- {
- Thread t = Executors.defaultThreadFactory().newThread(r);
- t.setName("IO-pool-" + getName() + "-" + _count.incrementAndGet());
- return t;
- }
- });
+ new LinkedBlockingQueue<Runnable>(), factory);
_executor.prestartAllCoreThreads();
}
catch (IOException e)
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=1685657&r1=1685656&r2=1685657&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 Mon Jun 15 19:57:58 2015
@@ -177,6 +177,9 @@ public abstract class AbstractVirtualHos
private int _housekeepingThreadCount;
@ManagedAttributeField
+ private int _connectionThreadCount;
+
+ @ManagedAttributeField
private List<String> _enabledConnectionValidators;
@ManagedAttributeField
@@ -1381,6 +1384,12 @@ public abstract class AbstractVirtualHos
return _housekeepingThreadCount;
}
+ @Override
+ public int getConnectionThreadCount()
+ {
+ return _connectionThreadCount;
+ }
+
@StateTransition( currentState = { State.UNINITIALIZED, State.ACTIVE, State.ERRORED }, desiredState = State.STOPPED )
protected ListenableFuture<Void> doStop()
{
@@ -1669,8 +1678,19 @@ public abstract class AbstractVirtualHos
@StateTransition( currentState = { State.UNINITIALIZED,State.ERRORED }, desiredState = State.ACTIVE )
private ListenableFuture<Void> onActivate()
{
- _houseKeepingTasks = new ScheduledThreadPoolExecutor(getHousekeepingThreadCount(), new SuppressingInheritedAccessControlContextThreadFactory("virtualhost-" + getName() + "-pool"));
- _networkConnectionScheduler = new NetworkConnectionScheduler("virtualhost-" + getName() + "-iopool", Runtime.getRuntime().availableProcessors());
+ final SuppressingInheritedAccessControlContextThreadFactory housekeepingThreadFactory =
+ new SuppressingInheritedAccessControlContextThreadFactory("virtualhost-" + getName() + "-pool",
+ SecurityManager.getSystemTaskSubject("Housekeeping", getPrincipal()));
+ _houseKeepingTasks = new ScheduledThreadPoolExecutor(getHousekeepingThreadCount(),
+ housekeepingThreadFactory);
+
+ final SuppressingInheritedAccessControlContextThreadFactory connectionThreadFactory =
+ new SuppressingInheritedAccessControlContextThreadFactory("virtualhost-" + getName() + "-iopool",
+ SecurityManager.getSystemTaskSubject("IO Pool", getPrincipal()));
+
+ _networkConnectionScheduler = new NetworkConnectionScheduler("virtualhost-" + getName() + "-iopool",
+ getConnectionThreadCount(),
+ connectionThreadFactory);
MessageStore messageStore = getMessageStore();
messageStore.openMessageStore(this);
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java?rev=1685657&r1=1685656&r2=1685657&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java Mon Jun 15 19:57:58 2015
@@ -91,6 +91,10 @@ class RedirectingVirtualHostImpl
private long _storeTransactionOpenTimeoutWarn;
@ManagedAttributeField
private int _housekeepingThreadCount;
+ @ManagedAttributeField
+ private int _connectionThreadCount;
+
+
@ManagedAttributeField
private List<String> _enabledConnectionValidators;
@@ -242,6 +246,12 @@ class RedirectingVirtualHostImpl
{
return 0;
}
+
+ @Override
+ public int getConnectionThreadCount()
+ {
+ return 0;
+ }
@Override
public long getQueueCount()
Modified: qpid/java/trunk/common/src/main/java/org/apache/qpid/pool/SuppressingInheritedAccessControlContextThreadFactory.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/pool/SuppressingInheritedAccessControlContextThreadFactory.java?rev=1685657&r1=1685656&r2=1685657&view=diff
==============================================================================
--- qpid/java/trunk/common/src/main/java/org/apache/qpid/pool/SuppressingInheritedAccessControlContextThreadFactory.java (original)
+++ qpid/java/trunk/common/src/main/java/org/apache/qpid/pool/SuppressingInheritedAccessControlContextThreadFactory.java Mon Jun 15 19:57:58 2015
@@ -22,6 +22,8 @@ package org.apache.qpid.pool;
import javax.security.auth.Subject;
+
+import java.security.Principal;
import java.security.PrivilegedAction;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
@@ -37,16 +39,18 @@ public class SuppressingInheritedAccessC
private final ThreadFactory _defaultThreadFactory = Executors.defaultThreadFactory();
private final String _threadNamePrefix;
private final AtomicInteger _threadId = new AtomicInteger();
+ private final Subject _subject;
- public SuppressingInheritedAccessControlContextThreadFactory(String threadNamePrefix)
+ public SuppressingInheritedAccessControlContextThreadFactory(String threadNamePrefix, final Subject subject)
{
_threadNamePrefix = threadNamePrefix;
+ _subject = subject;
}
@Override
public Thread newThread(final Runnable runnable)
{
- return Subject.doAsPrivileged(null, new PrivilegedAction<Thread>()
+ return Subject.doAsPrivileged(_subject, new PrivilegedAction<Thread>()
{
@Override
public Thread run()
Modified: qpid/java/trunk/common/src/test/java/org/apache/qpid/pool/SuppressingInheritedAccessControlContextThreadFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/common/src/test/java/org/apache/qpid/pool/SuppressingInheritedAccessControlContextThreadFactoryTest.java?rev=1685657&r1=1685656&r2=1685657&view=diff
==============================================================================
--- qpid/java/trunk/common/src/test/java/org/apache/qpid/pool/SuppressingInheritedAccessControlContextThreadFactoryTest.java (original)
+++ qpid/java/trunk/common/src/test/java/org/apache/qpid/pool/SuppressingInheritedAccessControlContextThreadFactoryTest.java Mon Jun 15 19:57:58 2015
@@ -67,7 +67,8 @@ public class SuppressingInheritedAccessC
public Void run()
{
callerAccessControlContextCapturer.set(AccessController.getContext());
- SuppressingInheritedAccessControlContextThreadFactory factory = new SuppressingInheritedAccessControlContextThreadFactory(null);
+ SuppressingInheritedAccessControlContextThreadFactory factory = new SuppressingInheritedAccessControlContextThreadFactory(null,
+ null);
factory.newThread(new Runnable()
{
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org