dev@glassfish.java.net

Re: [REVIEW] thread-pool move

From: Lloyd Chambers <Lloyd.Chambers_at_Sun.COM>
Date: Tue, 28 Apr 2009 07:59:03 -0700

Please let me know when this is committed as I'll need to adjust the
AMX interfaces that Anissa uses for the GUI.

On Apr 28, 2009, at 3:24 AM, Justin Lee wrote:

> That 2 is the min thread pool size. The old max size that was there
> was causing a performance problem apparently so jfa asked me to bump
> it. It now uses the default of 5.
>
> Jerome Dochez wrote:
>> looks good to me.
>> just one question, why does the max threadpool size goes from 20 to
>> 2 ?
>>
>> jerome
>>
>> On Apr 27, 2009, at 5:33 PM, Justin Lee wrote:
>>
>>> Attached is the diff for moving thread-pool back under config/
>>> thread-pools.
>>> Index: ../packager/nucleus-base/domains/domain1/config/domain.xml
>>> ===================================================================
>>> --- ../packager/nucleus-base/domains/domain1/config/domain.xml
>>> (revision 26651)
>>> +++ ../packager/nucleus-base/domains/domain1/config/domain.xml
>>> Mon Apr 27 20:04:01 EDT 2009
>>> @@ -168,7 +168,7 @@
>>> </protocol>
>>> </protocols>
>>> <network-listeners>
>>> - <thread-pool max-thread-pool-size="20" min-thread-pool-
>>> size="2" thread-pool-id="http-thread-pool" max-queue-size="4096"></
>>> thread-pool>
>>> + <thread-pool min-thread-pool-size="2" thread-pool-
>>> id="http-thread-pool" max-queue-size="4096"></thread-pool>
>>> <thread-pool thread-pool-id="thread-pool-1"></thread-pool>
>>> <network-listener port="8080" protocol="http-listener-1"
>>> transport="tcp" name="http-listener-1" thread-pool="http-thread-
>>> pool"></network-listener>
>>> <network-listener port="8181" enabled="false"
>>> protocol="http-listener-2" transport="tcp" name="http-listener-2"
>>> thread-pool="http-thread-pool"></network-listener>
>>> @@ -178,6 +178,10 @@
>>> <transport name="tcp"></transport>
>>> </transports>
>>> </network-config>
>>> + <thread-pools>
>>> + <thread-pool min-thread-pool-size="2" thread-pool-
>>> id="http-thread-pool" max-queue-size="4096"></thread-pool>
>>> + <thread-pool thread-pool-id="thread-pool-1"/>
>>> + </thread-pools>
>>> </config>
>>> </configs>
>>> <property name="administrative.domain.name" value="domain1"></
>>> property>
>>> Index: ../web/admin/src/main/java/org/glassfish/web/admin/cli/
>>> CreateHttpListener.java
>>> ===================================================================
>>> --- ../web/admin/src/main/java/org/glassfish/web/admin/cli/
>>> CreateHttpListener.java (revision 26651)
>>> +++ ../web/admin/src/main/java/org/glassfish/web/admin/cli/
>>> CreateHttpListener.java Thu Apr 23 23:10:22 EDT 2009
>>> @@ -236,7 +236,7 @@
>>> }
>>>
>>> private void setThreadPool(NetworkConfig config,
>>> NetworkListener newListener) {
>>> - final List<ThreadPool> pools =
>>> config.getNetworkListeners().getThreadPool();
>>> + final List<ThreadPool> pools =
>>> config.getParent(Config.class).getThreadPools().getThreadPool();
>>> for (ThreadPool pool : pools) {
>>> if ("http-thread-pool".equals(pool.getThreadPoolId())) {
>>> newListener.setThreadPool(pool.getThreadPoolId());
>>> Index: ../admin/config-api/src/main/java/org/glassfish/config/
>>> support/GrizzlyConfigSchemaMigrator.java
>>> ===================================================================
>>> --- ../admin/config-api/src/main/java/org/glassfish/config/support/
>>> GrizzlyConfigSchemaMigrator.java (revision 26651)
>>> +++ ../admin/config-api/src/main/java/org/glassfish/config/support/
>>> GrizzlyConfigSchemaMigrator.java Fri Apr 24 00:06:03 EDT 2009
>>> @@ -50,7 +50,8 @@
>>>
>>> public void postConstruct() {
>>> try {
>>> - if (!
>>> domain
>>> .getConfigs
>>> ().getConfig
>>> ().get(0).getHttpService().getHttpListener().isEmpty()) {
>>> + final Config config =
>>> domain.getConfigs().getConfig().get(0);
>>> + if (!
>>> config.getHttpService().getHttpListener().isEmpty()) {
>>> ConfigSupport.apply(new SingleConfigCode<Domain>() {
>>> public Object run(Domain param) throws
>>> TransactionFailure {
>>> migrateSettings(param);
>>> @@ -58,35 +59,49 @@
>>> }
>>> }, domain);
>>> }
>>> - if
>>> (domain.getConfigs().getConfig().get(0).getThreadPools() != null) {
>>> + if
>>> (config.getNetworkConfig().getNetworkListeners().getThreadPool() !
>>> = null) {
>>> + ThreadPools threadPools = config.getThreadPools();
>>> + if (threadPools == null) {
>>> + threadPools = createThreadPools();
>>> + }
>>> ConfigSupport.apply(new
>>> SingleConfigCode<ThreadPools>() {
>>> public Object run(ThreadPools param) throws
>>> TransactionFailure {
>>> migrateThreadPools(param);
>>> return null;
>>> }
>>> - },
>>> domain.getConfigs().getConfig().get(0).getThreadPools());
>>> + }, threadPools);
>>> }
>>> } catch (TransactionFailure tf) {
>>> Logger.getAnonymousLogger().log(Level.SEVERE, "Failure
>>> while upgrading application grizzly related items."
>>> + " Please redeploy", tf);
>>> throw new RuntimeException(tf);
>>> + } catch (PropertyVetoException e) {
>>> + Logger.getAnonymousLogger().log(Level.SEVERE,
>>> "Failure while upgrading application grizzly related items."
>>> + + " Please redeploy", e);
>>> + throw new RuntimeException(e);
>>> }
>>> }
>>>
>>> private void migrateThreadPools(final ThreadPools threadPools)
>>> throws TransactionFailure {
>>> + final Config config = threadPools.getParent(Config.class);
>>> + final NetworkListeners networkListeners =
>>> config.getNetworkConfig().getNetworkListeners();
>>> +
>>> threadPools
>>> .getThreadPool().addAll(networkListeners.getThreadPool());
>>> +
>>> ConfigSupport.apply(new
>>> SingleConfigCode<NetworkListeners>() {
>>> - @Override
>>> - public Object run(NetworkListeners param) {
>>> -
>>> param.getThreadPool().addAll(threadPools.getThreadPool());
>>> + public Object run(NetworkListeners param) throws
>>> PropertyVetoException {
>>> + param.getThreadPool().clear();
>>> return null;
>>> }
>>> - },
>>> threadPools
>>> .getParent(Config.class).getNetworkConfig().getNetworkListeners());
>>> - threadPools.getThreadPool().clear();
>>> - ConfigSupport.apply(new SingleConfigCode<Config>() {
>>> - public Object run(Config param) throws
>>> PropertyVetoException {
>>> - param.setThreadPools(null);
>>> - return null;
>>> + }, networkListeners);
>>> - }
>>> + }
>>> +
>>> + private ThreadPools createThreadPools() throws
>>> TransactionFailure, PropertyVetoException {
>>> + return (ThreadPools) ConfigSupport.apply(new
>>> SingleConfigCode<Config>() {
>>> + public Object run(Config param) throws
>>> PropertyVetoException, TransactionFailure {
>>> + final ThreadPools threadPools =
>>> param.createChild(ThreadPools.class);
>>> + param.setThreadPools(threadPools);
>>> + return threadPools;
>>> + }
>>> }, domain.getConfigs().getConfig().get(0));
>>> }
>>>
>>> Index: ../packager/nucleus-base/lib/templates/domain.xml
>>> ===================================================================
>>> --- ../packager/nucleus-base/lib/templates/domain.xml (revision
>>> 26651)
>>> +++ ../packager/nucleus-base/lib/templates/domain.xml Mon Apr
>>> 27 20:04:01 EDT 2009
>>> @@ -170,8 +170,6 @@
>>> </protocol>
>>> </protocols>
>>> <network-listeners>
>>> - <thread-pool max-thread-pool-size="20" min-thread-pool-
>>> size="2" thread-pool-id="http-thread-pool" max-queue-size="4096"></
>>> thread-pool>
>>> - <thread-pool thread-pool-id="thread-pool-1"/>
>>> <network-listener port="%%%HTTP_PORT%%%" protocol="http-
>>> listener-1" transport="tcp" name="http-listener-1" thread-
>>> pool="http-thread-pool"></network-listener>
>>> <network-listener port="%%%HTTP_SSL_PORT%%%"
>>> enabled="false" protocol="http-listener-2" transport="tcp"
>>> name="http-listener-2" thread-pool="http-thread-pool"></network-
>>> listener>
>>> <network-listener port="%%%ADMIN_PORT%%%" protocol="admin-
>>> listener" transport="tcp" name="admin-listener" thread-pool="http-
>>> thread-pool"></network-listener>
>>> @@ -180,6 +178,10 @@
>>> <transport name="tcp"></transport>
>>> </transports>
>>> </network-config>
>>> + <thread-pools>
>>> + <thread-pool min-thread-pool-size="2" thread-pool-
>>> id="http-thread-pool" max-queue-size="4096"></thread-pool>
>>> + <thread-pool thread-pool-id="thread-pool-1"/>
>>> + </thread-pools>
>>> </config>
>>> </configs>
>>> <property name="administrative.domain.name" value="%%%DOMAIN_NAME%
>>> %%"/>
>>> Index: ../admin/config-api/src/main/java/com/sun/enterprise/config/
>>> serverbeans/ThreadPools.java
>>> ===================================================================
>>> --- ../admin/config-api/src/main/java/com/sun/enterprise/config/
>>> serverbeans/ThreadPools.java (revision 26651)
>>> +++ ../admin/config-api/src/main/java/com/sun/enterprise/config/
>>> serverbeans/ThreadPools.java Thu Apr 23 23:08:04 EDT 2009
>>> @@ -50,7 +50,6 @@
>>> // general solution needed; this is intermediate solution
>>> @AMXCreatorInfo(creatables = {ThreadPool.class})
>>> @Configured
>>> -_at_Deprecated
>>> public interface ThreadPools extends ConfigBeanProxy, Injectable {
>>> /**
>>> * Gets the value of the threadPool property. <p/> <p/> This
>>> accessor method returns a reference to the live list,
>>> Index: ../orb/orb-iiop/src/main/java/org/glassfish/enterprise/iiop/
>>> impl/IIOPUtils.java
>>> ===================================================================
>>> --- ../orb/orb-iiop/src/main/java/org/glassfish/enterprise/iiop/
>>> impl/IIOPUtils.java (revision 26651)
>>> +++ ../orb/orb-iiop/src/main/java/org/glassfish/enterprise/iiop/
>>> impl/IIOPUtils.java Mon Apr 27 18:16:11 EDT 2009
>>> @@ -10,6 +10,7 @@
>>> import com.sun.enterprise.config.serverbeans.IiopListener;
>>> import com.sun.enterprise.config.serverbeans.IiopService;
>>> import com.sun.enterprise.config.serverbeans.ServerRef;
>>> +import com.sun.enterprise.config.serverbeans.ThreadPools;
>>> import com.sun.grizzly.config.dom.NetworkListener;
>>> import com.sun.grizzly.config.dom.NetworkListeners;
>>> import com.sun.grizzly.config.dom.ThreadPool;
>>> @@ -64,7 +65,7 @@
>>> if( processEnv.getProcessType() == ProcessType.Server) {
>>>
>>> iiopService = habitat.getComponent(IiopService.class);
>>> - final List<ThreadPool> threadPool =
>>> habitat.getComponent(NetworkListeners.class).getThreadPool();
>>> + final Collection<ThreadPool> threadPool =
>>> habitat.getAllByType(ThreadPool.class);
>>> final Collection<NetworkListener> listeners =
>>> habitat.getAllByType(NetworkListener.class);
>>> final Set<String> names = new TreeSet<String>();
>>> threadPools = new ArrayList<ThreadPool>();
>>> Index: ../pom.xml
>>> ===================================================================
>>> --- ../pom.xml (revision 26651)
>>> +++ ../pom.xml Mon Apr 27 17:23:35 EDT 2009
>>> @@ -110,7 +110,7 @@
>>> <deployment-api.version>1.2-rev-1</deployment-api.version>
>>> <jaxrpc-api.version>1.1</jaxrpc-api.version>
>>> <grizzly.version>1.9.14</grizzly.version>
>>> - <grizzly-config.version>1.0.1</grizzly-config.version>
>>> + <grizzly-config.version>1.0.2</grizzly-config.version>
>>> <jaxb-api.version>2.1</jaxb-api.version>
>>> <jaxws-api.version>2.1</jaxws-api.version>
>>> <jsr250-api.version>1.0</jsr250-api.version>
>>> Index: ../admin/config-api/src/main/java/com/sun/enterprise/config/
>>> serverbeans/Config.java
>>> ===================================================================
>>> --- ../admin/config-api/src/main/java/com/sun/enterprise/config/
>>> serverbeans/Config.java (revision 26651)
>>> +++ ../admin/config-api/src/main/java/com/sun/enterprise/config/
>>> serverbeans/Config.java Thu Apr 23 23:10:22 EDT 2009
>>> @@ -403,7 +403,6 @@
>>> * {_at_link ThreadPools }
>>> */
>>> @Element(required=true)
>>> - @Deprecated
>>> ThreadPools getThreadPools();
>>>
>>> /**
>>> @@ -412,7 +411,6 @@
>>> * @param value allowed object is
>>> * {_at_link ThreadPools }
>>> */
>>> - @Deprecated
>>> void setThreadPools(ThreadPools value) throws
>>> PropertyVetoException;
>>>
>>> /**
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>

Lloyd Chambers
lloyd.chambers_at_sun.com
GlassFish Team