well the instanceManager.destoy should be called whatever happens I think
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> | JavaEE Factory <https://javaeefactory-rmannibucau.rhcloud.com> 2016-07-13 20:51 GMT+02:00 Violeta Georgieva <miles...@gmail.com>: > Hi, > > 2016-07-12 23:53 GMT+03:00 Romain Manni-Bucau <rmannibu...@gmail.com>: > > > > Hi all, > > > > is (jsp) generated code for tags suffering from the same kind of issue? > For > > a c:out I get: > > > > > > private boolean > > _jspx_meth_c_005fout_005f0(javax.servlet.jsp.PageContext > > _jspx_page_context) > > throws java.lang.Throwable { > > javax.servlet.jsp.PageContext pageContext = _jspx_page_context; > > javax.servlet.jsp.JspWriter out = _jspx_page_context.getOut(); > > // c:out > > org.apache.taglibs.standard.tag.rt.core.OutTag > > _jspx_th_c_005fout_005f0 = > > (org.apache.taglibs.standard.tag.rt.core.OutTag) > > > > _005fjspx_005ftagPool_005fc_005fout_0026_005fvalue_005fnobody.get(org.apache.taglibs.standard.tag.rt.core.OutTag.class); > > _jspx_th_c_005fout_005f0.setPageContext(_jspx_page_context); > > _jspx_th_c_005fout_005f0.setParent(null); > > // /fail.jsp(30,0) name = value type = null reqTime = true required > > = true fragment = false deferredValue = false expectedTypeName = null > > deferredMethod = false methodSignature = null > > _jspx_th_c_005fout_005f0.setValue((java.lang.Object) > > org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${'<tag> > > , &'}", java.lang.Object.class, > > (javax.servlet.jsp.PageContext)_jspx_page_context, null)); > > int _jspx_eval_c_005fout_005f0 = _jspx_th_c_005fout_005f0.doStartTag(); > > if (_jspx_th_c_005fout_005f0.doEndTag() == > > javax.servlet.jsp.tagext.Tag.SKIP_PAGE) { > > > > _005fjspx_005ftagPool_005fc_005fout_0026_005fvalue_005fnobody.reuse(_jspx_th_c_005fout_005f0); > > return true; > > } > > > > _005fjspx_005ftagPool_005fc_005fout_0026_005fvalue_005fnobody.reuse(_jspx_th_c_005fout_005f0); > > return false; > > } > > > > Wonder if the reuse() shouldn't be in a finally block - in particular > > for custom tags. Wdyt? > > > > > > Currently the implementation [1], [2] is based on the fact whether or not > the tag handler implements TryCatchFinally [3] > > May be we should revise it and to put these (reuse, release, > destroyInstance) always in try/finally > > Regards, > Violeta > > [1] > > https://github.com/apache/tomcat/blob/trunk/java/org/apache/jasper/compiler/Generator.java#L2562 > [2] > > https://github.com/apache/tomcat/blob/trunk/java/org/apache/jasper/compiler/Generator.java#L2585 > [3] > > http://docs.oracle.com/javaee/6/api/javax/servlet/jsp/tagext/TryCatchFinally.html > > > > > > > > > Romain Manni-Bucau > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog > > <http://rmannibucau.wordpress.com> | Github < > https://github.com/rmannibucau> | > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber > > <http://www.tomitribe.com> | JavaEE Factory > > <https://javaeefactory-rmannibucau.rhcloud.com> > > > > 2016-07-01 19:25 GMT+02:00 Mark Thomas <ma...@apache.org>: > > > > > On 01/07/2016 17:28, Romain Manni-Bucau wrote: > > > > Think org.apache.jasper.runtime.TagHandlerPool#release can be > affected > > > too > > > > - I'm not sure where it is called in the codebase but the pattern is > the > > > > same. > > > > > > I've doing a review of all calls to destroyInstance() now. There is at > > > least one further issue as well as the tag one you spotted. > > > > > > Mark > > > > > > > > > > > > > > > Romain Manni-Bucau > > > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > > <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog > > > > <http://rmannibucau.wordpress.com> | Github < > > > https://github.com/rmannibucau> | > > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber > > > > <http://www.tomitribe.com> | JavaEE Factory > > > > <https://javaeefactory-rmannibucau.rhcloud.com> > > > > > > > > 2016-07-01 18:10 GMT+02:00 Romain Manni-Bucau <rmannibu...@gmail.com > >: > > > > > > > >> +1 > > > >> > > > >> > > > >> Romain Manni-Bucau > > > >> @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > >> <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog > > > >> <http://rmannibucau.wordpress.com> | Github > > > >> <https://github.com/rmannibucau> | LinkedIn > > > >> <https://www.linkedin.com/in/rmannibucau> | Tomitriber > > > >> <http://www.tomitribe.com> | JavaEE Factory > > > >> <https://javaeefactory-rmannibucau.rhcloud.com> > > > >> > > > >> 2016-07-01 18:06 GMT+02:00 Mark Thomas <ma...@apache.org>: > > > >> > > > >>> On 01/07/2016 16:41, Romain Manni-Bucau wrote: > > > >>>> Hello guys, > > > >>>> > > > >>>> if a jspDestroy() throws an Exception then the instance manager is > not > > > >>>> called which can lead to some leaks depending the implementation > (see > > > >>>> org.apache.jasper.servlet.JspServletWrapper#destroy) > > > >>>> > > > >>>> Would it be possible to have a way to release/cleanup the jsp > context > > > >>>> through the instance manager or to call destroyInstance properly? > > > >>> > > > >>> I think wrapping the call to destroy in a try/catch would be the > way to > > > >>> go. It would be worth a check to see if there are any other places > > > where > > > >>> similar issues could occur with JSPs. > > > >>> > > > >>> Mark > > > >>> > > > >>> > > > >>> > --------------------------------------------------------------------- > > > >>> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > > > >>> For additional commands, e-mail: dev-h...@tomcat.apache.org > > > >>> > > > >>> > > > >> > > > > > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > > > For additional commands, e-mail: dev-h...@tomcat.apache.org > > > > > > >