[ 
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

Reply via email to