[ 
https://issues.apache.org/jira/browse/AMQ-4994?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13886684#comment-13886684
 ] 

Arthur Naseef commented on AMQ-4994:
------------------------------------

Ditto on the desire to move the entire solution to JMX - a separate ticket 
should be entered for that.  Dejan - will you take the lead on that effort?

Let's keep this issue about the OOM.  I think the paging solution is a nicer 
way to go, but we could simply limit the number of messages returned from here 
in the same way JMX does.  The down side being that it reduces existing 
functionality.

I'll keep working toward a paging solution - it's feeling close.

> Web Console - java.lang.OutOfMemoryError: Java heap space - while browsing 
> deep queues
> --------------------------------------------------------------------------------------
>
>                 Key: AMQ-4994
>                 URL: https://issues.apache.org/jira/browse/AMQ-4994
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.9.0
>            Reporter: Dejan Bosanac
>            Priority: Blocker
>         Attachments: AMQ-4994.patch
>
>
> When browsing a deep queue with large number of messages, broker throws 
> {code}java.lang.OutOfMemoryError: Java heap space
>       at java.util.Arrays.copyOf(Arrays.java:2367)
>       at java.io.CharArrayWriter.write(CharArrayWriter.java:105)
>       at java.io.PrintWriter.write(PrintWriter.java:426)
>       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:412)
>       at 
> org.apache.taglibs.standard.tag.common.core.OutSupport.writeEscapedXml(OutSupport.java:239)
>       at 
> org.apache.taglibs.standard.tag.common.core.OutSupport.out(OutSupport.java:208)
>       at 
> org.apache.taglibs.standard.tag.common.core.OutSupport.doStartTag(OutSupport.java:128)
>       at 
> org.apache.jsp.browse_jsp._jspx_meth_c_out_6(org.apache.jsp.browse_jsp:323)
>       at org.apache.jsp.browse_jsp.access$8(org.apache.jsp.browse_jsp:314)
>       at 
> org.apache.jsp.browse_jsp$browse_jspHelper.invoke0(org.apache.jsp.browse_jsp:426)
>       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:1320)
>       at 
> org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
>       at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>       at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
>       at org.apache.activemq.web.SessionFilter.doFilter(SessionFilter.java:45)
>       at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
>       at 
> org.apache.activemq.web.filter.ApplicationContextFilter.doFilter(ApplicationContextFilter.java:102)
>       at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
>       at 
> com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129){code}
> when trying to browse that queue.
> To reproduce it:
> 1. Start a broker with default configuration
> 2. Send 200k messages with
> {code}ant producer -Dmax=200000 -Ddurable=true -Dsubject=TEST{code}
> 3. Try to browse the queue
> http://localhost:8161/admin/browse.jsp?JMSDestination=TEST
> The proper solution to this problem is to implement proper pagination while 
> browsing the messages, so users can browse through all messages showing 100 
> msgs (or so) at the time and not using all the available memory.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to