activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ilia Stepanov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AMQ-4487) java.lang.OutOfMemoryError: Java heap space
Date Fri, 31 May 2013 15:21:22 GMT

    [ 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

Mime
View raw message