[
https://issues.apache.org/jira/browse/AMQ-4487?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13662298#comment-13662298
]
Ilia Stepanov commented on AMQ-4487:
------------------------------------
I have same issue with 5.8.0. I checked the heap dump and debugged the web
console, hope this will help to fix it. Please provide an update.
In the heap dump I found an instance of VMPendingMessageCursor holding 18+
millions of PendingNode elements (the queue had actually just two hundreds
message).
I did debugging - the method Queue.iterate() is repeated in an endless loop.
In first run it adds 200 messages to the browser. The second run should
normally add no new messages and remove the browserDispatch from the
browserDispatches. However this does not happen
- the if (!node.isAcked() &&
!browser.getPending().getMessageAudit().isDuplicate(node.getMessageId()))
returns true again and messages are added again.
The third run adds messages again and so on. Messages are added until OOM
occurs.
I found it strange that method ActiveMQMessageAuditNoSync.isDuplicate() returns
false in the second iteration and checked it.
public boolean isDuplicate(final MessageId id) {
boolean answer = false;
if (id != null) {
ProducerId pid = id.getProducerId();
if (pid != null) {
BitArrayBin bab = map.get(pid); << here the bab is null in the
second iteration. why? it should been added in the first iteration
if (bab == null) {
bab = new BitArrayBin(auditDepth);
map.put(pid, bab); << here new entry is added to
the map, but the size of keySet() is NOT increased!
modified = true; << here map.get(pid) returns
a coorect value in the debugger.
<< However in the next
iteration it returns null again...
}
answer = bab.setBit(id.getProducerSequenceId(), true);
}
}
return answer;
}
It looks like a collision in the map. Does ProducerId comes with a proper
hashCode() and equals() methods?
> java.lang.OutOfMemoryError: Java heap space
> -------------------------------------------
>
> Key: AMQ-4487
> URL: https://issues.apache.org/jira/browse/AMQ-4487
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.8.0
> Environment: OS - Linux 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST
> 2010 x86_64 x86_64 x86_64 GNU/Linux
> Activemq - 5.8
> Reporter: Subathra Jayaraman
>
> Hi,
> When we browse a queue in webconsole we are getting
> java.lang.OutOfMemoryError: Java heap space.
> Memory allocation -----> -Xms512m -Xmx3G
> When we try to click the queue to view the messages below error is occurring.
> We recently moved from 5.7 to 5.8 version. We dint face this issue in 5.7
> version.
> Kindly help in fixing the issue.
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2882)
> at java.io.CharArrayWriter.write(CharArrayWriter.java:88)
> at java.io.PrintWriter.write(PrintWriter.java:382)
> at
> com.opensymphony.module.sitemesh.filter.RoutablePrintWriter.write(RoutablePrintWriter.java:144)
> at
> org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:181)
> at
> org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:449)
> at
> org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:462)
> at
> org.apache.jsp.browse_jsp$browse_jspHelper.invoke0(org.apache.jsp.browse_jsp:382)
> at
> org.apache.jsp.browse_jsp$browse_jspHelper.invoke(org.apache.jsp.browse_jsp:450)
> at
> org.apache.jsp.tag.web.jms.forEachMessage_tag.doTag(org.apache.jsp.tag.web.jms.forEachMessage_tag:89)
> at
> org.apache.jsp.browse_jsp._jspx_meth_jms_forEachMessage_0(org.apache.jsp.browse_jsp:170)
> at
> org.apache.jsp.browse_jsp._jspService(org.apache.jsp.browse_jsp:100)
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
> at
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
> at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
> at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1329)
> at
> org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
> at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1300)
> at
> org.apache.activemq.web.SessionFilter.doFilter(SessionFilter.java:45)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1300)
> at
> org.apache.activemq.web.filter.ApplicationContextFilter.doFilter(ApplicationContextFilter.java:102)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1300)
> at
> com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
> at
> com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1300)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:445)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
> Thank you.
> Regards,
> Subathra.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira