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