You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by János Löbb <ja...@yale.edu> on 2011/06/21 21:29:49 UTC

[cluster] ConcurrentModificationException

Hi,

It is OSX 10.6.7, java 1.6.0_24, tomcat 7.0.14, jk 1.2.31, apache 2.2.19.  It is a one machine with two tomcat instances setup.  I am trying to do session replication testing with the examples webapp.  When I shut down one of the tomcat instances I receive this in the log of that instance:

INFO: Stopping service Catalina
Jun 21, 2011 2:49:12 PM org.apache.catalina.ha.session.JvmRouteBinderValve stopInternal
INFO: JvmRouteBinderValve stopped
Jun 21, 2011 2:49:12 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
Jun 21, 2011 2:49:12 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()
Jun 21, 2011 2:49:12 PM org.apache.catalina.tribes.transport.nio.NioReceiver stopListening
SEVERE: Unable to close cluster receiver selector.
java.util.ConcurrentModificationException
	at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
	at java.util.HashMap$KeyIterator.next(HashMap.java:828)
	at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1010)
	at org.apache.catalina.tribes.transport.nio.NioReceiver.closeSelector(NioReceiver.java:372)
	at org.apache.catalina.tribes.transport.nio.NioReceiver.stopListening(NioReceiver.java:355)
	at org.apache.catalina.tribes.transport.nio.NioReceiver.stop(NioReceiver.java:86)
	at org.apache.catalina.tribes.group.ChannelCoordinator.internalStop(ChannelCoordinator.java:203)
	at org.apache.catalina.tribes.group.ChannelCoordinator.stop(ChannelCoordinator.java:115)
	at org.apache.catalina.tribes.group.ChannelInterceptorBase.stop(ChannelInterceptorBase.java:178)
	at org.apache.catalina.tribes.group.ChannelInterceptorBase.stop(ChannelInterceptorBase.java:178)
	at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.stop(MessageDispatchInterceptor.java:168)
	at org.apache.catalina.tribes.group.ChannelInterceptorBase.stop(ChannelInterceptorBase.java:178)
	at org.apache.catalina.tribes.group.GroupChannel.stop(GroupChannel.java:435)
	at org.apache.catalina.ha.tcp.SimpleTcpCluster.stopInternal(SimpleTcpCluster.java:743)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)
	at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:1083)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)
	at org.apache.catalina.core.StandardService.stopInternal(StandardService.java:502)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)
	at org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:748)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)
	at org.apache.catalina.startup.Catalina.stop(Catalina.java:693)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:654)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)
Jun 21, 2011 2:49:12 PM org.apache.coyote.AbstractProtocolHandler stop
INFO: Stopping ProtocolHandler ["http-bio-8280"]
Jun 21, 2011 2:49:12 PM org.apache.coyote.AbstractProtocolHandler stop
INFO: Stopping ProtocolHandler ["ajp-bio-8209"]

It is happening with both instances.  One tomcat instance port numbers are 81xy, the other one has 82xy.  I also noticed that session replication does not work although it worked yesterday.

Here is the workers.properties file:
bml0024:local administrator$ cat apache2/conf/workers.properties 
worker.list = lb,jkstatus

worker.lb.type=lb
worker.lb.balance_workers=tc241,tc242
#worker.lb.sticky_session = True
#worker.lb.sticky_session_force = False

worker.jkstatus.type=status

worker.tc241.type = ajp13
worker.tc241.host = localhost
worker.tc241.port = 8109
worker.tc241.lbfactor = 10
worker.tc241.redirect=tc242

worker.tc242.type = ajp13
worker.tc242.host = localhost
worker.tc242.port = 8209
worker.tc242.lbfactor = 10
worker.tc242.redirect=tc241

Here is one tomcat instance's server.xml with comments removed:
bml0024:local administrator$ sudo cat tc241/conf/server.xml 
Password:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8105" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">
  
    <Connector port="8180" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8143" />
    <Connector port="8109" protocol="AJP/1.3" redirectPort="8143" />


    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tc241">

      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
              

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" resolveHosts="false"/>

      </Host>
    </Engine>
  </Service>
</Server>

The web.xml in the example webapp has the <distributable/> tag.

Thanks ahead,

János


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org