[
https://issues.jboss.org/browse/MODCLUSTER-321?page=com.atlassian.jira.pl...
]
Aaron Ogburn updated MODCLUSTER-321:
------------------------------------
Environment:
JBoss Enterprise Application Platform (EAP) 5.1.2
JBoss Enterprise Web Server (EWS)
mod_cluster 1.0.10.GA_CP02
Workaround Description:
-Start JBoss with an empty proxyList so the main thread does not attempt connections to
potentially unavailable Apache servers
-After start up is complete, update the proxyList (through jmx-console or twiddle) to add
in available Apaches and they will be connected to through other background threads aside
from the main thread and no longer be able to delay start up.
Workaround: Workaround Exists
Priority: Minor (was: Major)
Description:
mod_cluster doesn't properly use timeouts in initial proxyList connection attempts
when JBoss is starting. This can delay start up by several minutes at a time as the main
thread stalls in the following call:
"main" prio=10 tid=0x000000004318d800 nid=0x4085 runnable [0x0000000041822000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
- locked <0x00000000f093e6a8> (a java.net.SocksSocketImpl)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:218)
at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:212)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy.getConnection(DefaultMCMPHandler.java:1141)
- locked <0x00000000f08aa980> (a
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy.getConnectionWriter(DefaultMCMPHandler.java:1166)
- locked <0x00000000f08aa980> (a
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.sendRequest(DefaultMCMPHandler.java:776)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.sendRequest(DefaultMCMPHandler.java:875)
- locked <0x00000000f08aa980> (a
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.status(DefaultMCMPHandler.java:465)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.init(DefaultMCMPHandler.java:140)
at org.jboss.modcluster.CatalinaEventHandler.init(CatalinaEventHandler.java:113)
- locked <0x00000000ffdbaac0> (a org.jboss.modcluster.CatalinaEventHandler)
at org.jboss.modcluster.CatalinaEventHandler.init(CatalinaEventHandler.java:56)
at
org.jboss.modcluster.CatalinaEventHandlerAdapter.lifecycleEvent(CatalinaEventHandlerAdapter.java:127)
at
org.jboss.modcluster.AbstractModClusterService.lifecycleEvent(AbstractModClusterService.java:90)
at
org.jboss.web.tomcat.service.deployers.MicrocontainerIntegrationLifecycleListener.lifecycleEvent(MicrocontainerIntegrationLifecycleListener.java:102)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:741)
at org.apache.catalina.startup.Catalina.start(Catalina.java:575)
This happens because DefaultMCMPHandler$Proxy.getConnection hands the address/port
straight to the socket factory and so Socket.connect is called without any timeout.
Instead, DefaultSocketFactory.createSocket should be called without a given ip/port so
that the returned Socket can then be bound with a proper timeout through
Socket.connect(SocketAddress endpoint, int timeout).
Complexity: Low
mod_cluster doesn't properly use timeouts in initial proxyList
connection attempts
----------------------------------------------------------------------------------
Key: MODCLUSTER-321
URL:
https://issues.jboss.org/browse/MODCLUSTER-321
Project: mod_cluster
Issue Type: Bug
Affects Versions: MOD_CLUSTER_1_0_10_GA_CP02
Environment: JBoss Enterprise Application Platform (EAP) 5.1.2
JBoss Enterprise Web Server (EWS)
mod_cluster 1.0.10.GA_CP02
Reporter: Aaron Ogburn
Assignee: Jean-Frederic Clere
Priority: Minor
Fix For: MOD_CLUSTER_1_0_10_GA_CP03
mod_cluster doesn't properly use timeouts in initial proxyList connection attempts
when JBoss is starting. This can delay start up by several minutes at a time as the main
thread stalls in the following call:
"main" prio=10 tid=0x000000004318d800 nid=0x4085 runnable [0x0000000041822000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
- locked <0x00000000f093e6a8> (a java.net.SocksSocketImpl)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:218)
at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:212)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy.getConnection(DefaultMCMPHandler.java:1141)
- locked <0x00000000f08aa980> (a
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy.getConnectionWriter(DefaultMCMPHandler.java:1166)
- locked <0x00000000f08aa980> (a
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.sendRequest(DefaultMCMPHandler.java:776)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.sendRequest(DefaultMCMPHandler.java:875)
- locked <0x00000000f08aa980> (a
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler$Proxy)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.status(DefaultMCMPHandler.java:465)
at
org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler.init(DefaultMCMPHandler.java:140)
at org.jboss.modcluster.CatalinaEventHandler.init(CatalinaEventHandler.java:113)
- locked <0x00000000ffdbaac0> (a org.jboss.modcluster.CatalinaEventHandler)
at org.jboss.modcluster.CatalinaEventHandler.init(CatalinaEventHandler.java:56)
at
org.jboss.modcluster.CatalinaEventHandlerAdapter.lifecycleEvent(CatalinaEventHandlerAdapter.java:127)
at
org.jboss.modcluster.AbstractModClusterService.lifecycleEvent(AbstractModClusterService.java:90)
at
org.jboss.web.tomcat.service.deployers.MicrocontainerIntegrationLifecycleListener.lifecycleEvent(MicrocontainerIntegrationLifecycleListener.java:102)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:741)
at org.apache.catalina.startup.Catalina.start(Catalina.java:575)
This happens because DefaultMCMPHandler$Proxy.getConnection hands the address/port
straight to the socket factory and so Socket.connect is called without any timeout.
Instead, DefaultSocketFactory.createSocket should be called without a given ip/port so
that the returned Socket can then be bound with a proper timeout through
Socket.connect(SocketAddress endpoint, int timeout).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira