[
https://issues.apache.org/jira/browse/AMQ-4487?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13671566#comment-13671566
]
Ilia Stepanov commented on AMQ-4487:
------------------------------------
Hello,
The issue is caused by too high number of different producers (>64). When the
number of producers exceeds 64, it is not possible to use QueueBrowser for this
queue.
Two problems cause the issue.
1. ActiveMQMessageAuditNoSync has a default max number of producers of 64.
(field maximumNumberOfProducersToTrack)
When the actual number of producers exceeds this value, the isDuplicate() does
not work anymore correctly and sometimes returns false instead of true. This
leads to infinite loop in Queue.iterate method and thus to an out-of-memory
situation.
Ideally Queue.iterate() should recognize that the audit class does not work
correctly and fail. For example the ActiveMQMessageAuditNoSync.isDuplicate can
throw an exception if map is full.
2. It is not possible to increase the default max value via PolicyEntry. The
PolicyEntry's configure() method does not populate MaxProducersToAudit to
PrefetchSubscription ( sub.setMaxProducersToAudit(getMaxProducersToAudit()); is
missing)
The PrefetchSubscription also does not populate the value to the underlying
PendingMessageCursor .
public void setMaxProducersToAudit(int maxProducersToAudit) {
this.maxProducersToAudit = maxProducersToAudit;
+ if (pending!=null) {
+ pending.setMaxProducersToAudit(maxProducersToAudit);
+ }
}
How can I create a unit test for the second issue?
regards,
ilya
> 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