Message Boards

Minifier Exception on jrFormat

Jonathan Lloyd, modified 9 Years ago.

Minifier Exception on jrFormat

New Member Posts: 5 Join Date: 1/30/12 Recent Posts
Hello,

We are seeing the exception below using the Liferay JRebel plugin. We have tried both 5.5.2 and 5.6, but they both throw the same exception. It seems the only way to fix it and still use the plugin is to disable the MinifierFilter, and in most cases explicitly specify js_fast_load=0 in the URL. Any ideas?

Thank you,

Jonathan


[7/22/14 14:32:09:853 CDT] 00000027 SystemOut     O 14:32:09,851 ERROR [MinifierFilter:79] java.lang.StringIndexOutOfBoundsException: String index out of range: 160
java.lang.StringIndexOutOfBoundsException: String index out of range: 160
	at java.lang.String.substring(String.java:1127)
	at com.liferay.portal.servlet.filters.minifier.MinifierFilter.jrFormat(MinifierFilter.java)
	at com.liferay.portal.servlet.filters.minifier.MinifierFilter.getMinifiedBundleContent(MinifierFilter.java:226)
	at com.liferay.portal.servlet.filters.minifier.MinifierFilter.processFilter(MinifierFilter.java:463)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158)
	at com.liferay.portal.servlet.filters.language.LanguageFilter.processFilter(LanguageFilter.java:84)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158)
	at com.liferay.portal.servlet.filters.cache.CacheFilter.processFilter(CacheFilter.java:441)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158)
	at com.liferay.portal.servlet.filters.etag.ETagFilter.processFilter(ETagFilter.java:56)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158)
	at com.liferay.portal.servlet.filters.header.HeaderFilter.processFilter(HeaderFilter.java:150)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158)
	at com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter.processFilter(NtlmPostFilter.java:83)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158)
	at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:80)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:187)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:167)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:167)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:187)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:71)
	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:928)
	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1025)
	at com.ibm.ws.webcontainer.webapp.WebApp.__handleRequest(WebApp.java:3763)
	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java)
	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:975)
	at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306)
	at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
	at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:166)
	at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
	at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
	at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
	at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
	at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
	at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1691)
thumbnail
Andres Luuk, modified 9 Years ago.

RE: Minifier Exception on jrFormat

New Member Posts: 11 Join Date: 12/19/11 Recent Posts
Hi
This seems to be a bug in the JRebel integration.
I made a simple fix for it. Could you try the nightly build version of JRebel:
http://zeroturnaround.com/software/jrebel/early-access/
Jonathan Lloyd, modified 9 Years ago.

RE: Minifier Exception on jrFormat

New Member Posts: 5 Join Date: 1/30/12 Recent Posts
Thanks Andres! That fixed the minifier issue, but now I'm seeing the issue below. I'm not sure if they are related.

[10/9/14 15:16:00:238 CDT] 00000101 SystemErr     R 2014-10-09 15:16:00 JRebel: ERROR An error occured in a request listener while handling before request event: java.lang.NullPointerException
	at com.ibm.ws.webcontainer.webapp.WebApp.getServletContextName(WebApp.java:2630)
	at com.ibm.wsspi.webcontainer.facade.ServletContextFacade.getServletContextName(ServletContextFacade.java:312)
	at org.zeroturnaround.jrebel.liferay.LiferayReloader.beforeRequest(LiferayReloader.java:129)
	at org.zeroturnaround.javarebel.integration.util.RequestListenerUtil$BoundRequestListener.beforeRequest(JRebel:93)
	at com.zeroturnaround.javarebel.ps.a(JRebel:121)
	at com.zeroturnaround.javarebel.ps.a(JRebel:78)
	at com.zeroturnaround.javarebel.ps.fireBeforeRequest(JRebel:61)
	at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java)
	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:908)
	at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306)
	at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
	at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1784)
	at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:166)
	at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
	at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
	at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
	at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
	at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
	at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1691)
thumbnail
Andres Luuk, modified 9 Years ago.

RE: Minifier Exception on jrFormat

New Member Posts: 11 Join Date: 12/19/11 Recent Posts
This new errors is not connected to the previous one. I think the new exception is not fatal?
I made a small fix into the JRebel nightly build so that you would not see that exception.
We test JRebel Liferay integration on tomcat and not on other containers and this error seems to be WAS specific.
I found a few cases with similar exceptions:
https://www.liferay.com/community/forums/-/message_boards/message/16061216