User development,

A new message was posted in the thread "StackOverflow after OutOfMemory":

http://community.jboss.org/message/530679#530679

Author  : Mihir Patel
Profile : http://community.jboss.org/people/mihirp

Message:
--------------------------------------------------------------
Hello everyone,
 
We are usinghttp://www.jasig.org/cas version 3.3.5 which has support for 
JBossCache and we are using JBoss Cache 3.2.1 with JGroups 2.6.13 on tomcat 
6.0.20.
 
All tickets generated by CAS application are stored as attributes under single 
node "ticket" so the Cache structure looks something like below:
\ <root node>
   \ticket {key1=value1, key2=value2} (here key1 is ticket and value1 is one 
object representing that ticket with id key1)
 
so, as you can see the cache will continue growing horizontally, with single 
node "ticket" and everything else would be added as attributes to that node.
 
We are using READ_COMMITTED isolation level with SYNC replication using TCP 
protocol for replication through JGroups. We are not using any inbuilt eviction 
policy, instead there is a thread running which goes through all the key/value 
pair and calls "isExpire" method on the object (value) and removes any expired 
ticket attributes from the cache. We also have state transferred enable. Please 
see attached config.
 
Here is the stack trace for OutOfMemory:
2010-02-26 12:39:23,518 ERROR 
[org.jasig.cas.ticket.registry.JBossCacheTicketRegistry] (http-8443-183) 
org.jboss.cache.CacheException: java.lang.OutOfMemoryError: GC overhead li
mit exceeded
org.jboss.cache.CacheException: java.lang.OutOfMemoryError: GC overhead limit 
exceeded
        at 
org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain.java:304)
        at 
org.jboss.cache.invocation.CacheInvocationDelegate.put(CacheInvocationDelegate.java:555)
        at 
org.jboss.cache.invocation.CacheInvocationDelegate.put(CacheInvocationDelegate.java:560)
        at 
org.jasig.cas.ticket.registry.JBossCacheTicketRegistry.addTicket(JBossCacheTicketRegistry.java:51)
        at 
org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket(CentralAuthenticationServiceImpl.java:224)
        at 
org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket(CentralAuthenticationServiceImpl.java:241)
        at 
org.jasig.cas.web.flow.GenerateServiceTicketAction.doExecute(GenerateServiceTicketAction.java:40)
        at 
org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:192)
        at 
org.springframework.webflow.engine.AnnotatedAction.execute(AnnotatedAction.java:146)
        at 
org.springframework.webflow.engine.ActionExecutor.execute(ActionExecutor.java:59)
        at 
org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:156)
        at org.springframework.webflow.engine.State.enter(State.java:191)
        at 
org.springframework.webflow.engine.Transition.execute(Transition.java:212)
        at 
org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:54)
        at org.springframework.webflow.engine.State.enter(State.java:191)
        at 
org.springframework.webflow.engine.Transition.execute(Transition.java:212)
        at 
org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:54)
        at org.springframework.webflow.engine.State.enter(State.java:191)
        at 
org.springframework.webflow.engine.Transition.execute(Transition.java:212)
        at 
org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:54)
        at org.springframework.webflow.engine.State.enter(State.java:191)
        at 
org.springframework.webflow.engine.Transition.execute(Transition.java:212)
        at 
org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:107)
        at org.springframework.webflow.engine.Flow.onEvent(Flow.java:534)
        at 
org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:205)
        at 
org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:161)
        at org.springframework.webflow.engine.State.enter(State.java:191)
        at org.springframework.webflow.engine.Flow.start(Flow.java:521)
        at 
org.springframework.webflow.engine.impl.RequestControlContextImpl.start(RequestControlContextImpl.java:193)
        at 
org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:177)
        at 
org.springframework.webflow.executor.FlowExecutorImpl.launch(FlowExecutorImpl.java:187)
        at 
org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:125)
        at 
org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:165)
        at 
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
        at 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
        at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at 
org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.inspektr.common.web.ClientInfoThreadLocalFilter.doFilterInternal(ClientInfoThreadLocalFilter.java:48)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.jamonapi.JAMonFilter.doFilter(JAMonFilter.java:57)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
        at 
org.jboss.cache.io.ExposedByteArrayOutputStream.write(ExposedByteArrayOutputStream.java:113)
        at 
java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1838)
        at 
java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1747)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1161)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at java.util.HashMap.writeObject(HashMap.java:1000)
        at sun.reflect.GeneratedMethodAccessor166.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at 
org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:460)
        at 
org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
        at 
org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
        at 
org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
        at 
org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
        at 
org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
        at 
org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
        at 
org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
        at 
org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:191)
        at 
org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:136)
2010-02-26 12:39:25,562 ERROR 
[org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/cas].[cas]] 
(http-8443-183) Servlet.service() for servlet cas threw exception
java.lang.OutOfMemoryError: GC overhead limit exceeded
        at 
org.jboss.cache.io.ExposedByteArrayOutputStream.write(ExposedByteArrayOutputStream.java:113)
        at 
java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1838)
        at 
java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1747)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1161)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at java.util.HashMap.writeObject(HashMap.java:1000)
        at sun.reflect.GeneratedMethodAccessor166.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at 
org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:460)
        at 
org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
        at 
org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
        at 
org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
        at 
org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
        at 
org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
        at 
org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
        at 
org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
        at 
org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:191)
        at 
org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:136)
2010-02-26 12:39:35,140 ERROR [org.jgroups.protocols.TCP] (http-8443-117) 
failed handling data from 10.10.22.18:33500
java.lang.OutOfMemoryError: GC overhead limit exceeded
        at org.jgroups.protocols.TP.dispatchToThreadPool(TP.java:1352)
        at org.jgroups.protocols.TP.receive(TP.java:1325)
        at org.jgroups.protocols.BasicTCP.receive(BasicTCP.java:258)
        at 
org.jgroups.blocks.BasicConnectionTable.receive(BasicConnectionTable.java:239)
        at 
org.jgroups.blocks.BasicConnectionTable.send(BasicConnectionTable.java:307)
        at org.jgroups.protocols.TCP.send(TCP.java:55)
        at org.jgroups.protocols.BasicTCP.sendToSingleMember(BasicTCP.java:219)
        at org.jgroups.protocols.BasicTCP.sendToAllMembers(BasicTCP.java:204)
        at org.jgroups.protocols.TP.doSend(TP.java:1474)
        at org.jgroups.protocols.TP.send(TP.java:1464)
        at org.jgroups.protocols.TP.down(TP.java:1185)
        at org.jgroups.protocols.Discovery.down(Discovery.java:374)
        at org.jgroups.protocols.MERGE2.down(MERGE2.java:175)
        at org.jgroups.protocols.FD_SOCK.down(FD_SOCK.java:360)
        at org.jgroups.protocols.FD.down(FD.java:315)
        at org.jgroups.protocols.VERIFY_SUSPECT.down(VERIFY_SUSPECT.java:95)
        at org.jgroups.protocols.pbcast.NAKACK.send(NAKACK.java:803)
        at org.jgroups.protocols.pbcast.NAKACK.down(NAKACK.java:604)
        at org.jgroups.protocols.pbcast.STABLE.down(STABLE.java:316)
        at org.jgroups.protocols.pbcast.GMS.down(GMS.java:901)
        at org.jgroups.protocols.FRAG2.fragment(FRAG2.java:256)
        at org.jgroups.protocols.FRAG2.down(FRAG2.java:138)
        at 
org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER.down(STREAMING_STATE_TRANSFER.java:377)
        at org.jgroups.protocols.pbcast.FLUSH.down(FLUSH.java:291)
        at org.jgroups.stack.ProtocolStack.down(ProtocolStack.java:461)
        at org.jgroups.JChannel.downcall(JChannel.java:1540)
        at 
org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.down(MessageDispatcher.java:791)
        at 
org.jgroups.blocks.RequestCorrelator.sendRequest(RequestCorrelator.java:304)
        at org.jgroups.blocks.GroupRequest.sendRequest(GroupRequest.java:531)
        at org.jgroups.blocks.GroupRequest.execute(GroupRequest.java:227)
        at 
org.jgroups.blocks.MessageDispatcher.castMessage(MessageDispatcher.java:468)
        at 
org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.call(CommandAwareRpcDispatcher.java:397)
2010-02-26 12:39:45,969 ERROR [org.jgroups.protocols.TCP] 
(OOB-2,CasNonTxCache-cluster,10.10.22.18:33500) failed handling incoming message
java.lang.OutOfMemoryError: GC overhead limit exceeded
        at 
org.jgroups.util.ExposedByteArrayOutputStream.write(ExposedByteArrayOutputStream.java:47)
        at java.io.DataOutputStream.writeShort(DataOutputStream.java:150)
        at org.jgroups.Message.writeTo(Message.java:594)
        at org.jgroups.util.Util.messageToByteBuffer(Util.java:792)
        at org.jgroups.protocols.pbcast.NAKACK.sendXmitRsp(NAKACK.java:1045)
        at org.jgroups.protocols.pbcast.NAKACK.handleXmitReq(NAKACK.java:983)
        at org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:718)
        at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:167)
        at org.jgroups.protocols.FD.up(FD.java:284)
        at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:307)
        at org.jgroups.protocols.MERGE2.up(MERGE2.java:144)
        at org.jgroups.protocols.Discovery.up(Discovery.java:264)
        at org.jgroups.protocols.TP.passMessageUp(TP.java:1273)
        at org.jgroups.protocols.TP.access$100(TP.java:49)
        at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1826)
        at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1805)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
 
We start seeing StackOverflow after the above mentioned OutOfMemory:
2010-02-26 12:41:02,865 ERROR 
[org.jasig.cas.ticket.registry.JBossCacheTicketRegistry] (http-8443-147) 
org.jboss.cache.CacheException: java.lang.StackOverflowError
org.jboss.cache.CacheException: java.lang.StackOverflowError
        at 
org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain.java:304)
        at 
org.jboss.cache.invocation.CacheInvocationDelegate.put(CacheInvocationDelegate.java:555)
        at 
org.jboss.cache.invocation.CacheInvocationDelegate.put(CacheInvocationDelegate.java:560)
        at 
org.jasig.cas.ticket.registry.JBossCacheTicketRegistry.addTicket(JBossCacheTicketRegistry.java:51)
        at 
org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket(CentralAuthenticationServiceImpl.java:224)
        at 
org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket(CentralAuthenticationServiceImpl.java:241)
        at 
org.jasig.cas.web.flow.GenerateServiceTicketAction.doExecute(GenerateServiceTicketAction.java:40)
        at 
org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:192)
        at 
org.springframework.webflow.engine.AnnotatedAction.execute(AnnotatedAction.java:146)
        at 
org.springframework.webflow.engine.ActionExecutor.execute(ActionExecutor.java:59)
        at 
org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:156)
        at org.springframework.webflow.engine.State.enter(State.java:191)
        at 
org.springframework.webflow.engine.Transition.execute(Transition.java:212)
        at 
org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:54)
        at org.springframework.webflow.engine.State.enter(State.java:191)
        at 
org.springframework.webflow.engine.Transition.execute(Transition.java:212)
        at 
org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:54)
        at org.springframework.webflow.engine.State.enter(State.java:191)
        at 
org.springframework.webflow.engine.Transition.execute(Transition.java:212)
        at 
org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:54)
        at org.springframework.webflow.engine.State.enter(State.java:191)
        at 
org.springframework.webflow.engine.Transition.execute(Transition.java:212)
        at 
org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:107)
        at org.springframework.webflow.engine.Flow.onEvent(Flow.java:534)
        at 
org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:205)
        at 
org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:161)
        at org.springframework.webflow.engine.State.enter(State.java:191)
        at org.springframework.webflow.engine.Flow.start(Flow.java:521)
        at 
org.springframework.webflow.engine.impl.RequestControlContextImpl.start(RequestControlContextImpl.java:193)
        at 
org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:177)
        at 
org.springframework.webflow.executor.FlowExecutorImpl.launch(FlowExecutorImpl.java:187)
        at 
org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:125)
        at 
org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:165)
        at 
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
        at 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
        at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at 
org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.inspektr.common.web.ClientInfoThreadLocalFilter.doFilterInternal(ClientInfoThreadLocalFilter.java:48)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.jamonapi.JAMonFilter.doFilter(JAMonFilter.java:57)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.StackOverflowError
        at org.jboss.cache.mvcc.NodeReference.getFqn(NodeReference.java:257)
        at org.jboss.cache.mvcc.NodeReference.getFqn(NodeReference.java:257)
: (1000+ lines with NodeReference.java:257)
:
 
We have also seen similar stack over flow for NodeReference.isValid method.
 
What I *think* is, due to some event (most probably due to concurrent access or 
some error like OOM), NodeReference object has reference to its own as a 
delegate and results into infinite loop causing StackOverflowError.
 
http://fisheye.jboss.org/browse/JBossCache/core/tags/3.2.1.GA/src/main/java/org/jboss/cache/mvcc/NodeReference.java?r=7610
 implements InternalNode and has reference to an InternalNode to delegate the 
calls to underlying UnversionedNode (for READ_COMMITTED isolation level). 
NodeReference also has setDelegate(InternalNode) method so it is possible to 
set a NodeReference object as its own delegate which would result in 
StackOverflowError for method calls which are being delegated. I tried to debug 
application and simulate some scenarios but have not been able to reproduce the 
issue yet. Does anyone have faced this issue before? Any hint to reproduce and 
resolve this issue would be greatly appreciated. 
 
Thank you,
Mihir

--------------------------------------------------------------

To reply to this message visit the message page: 
http://community.jboss.org/message/530679#530679


_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to