You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Volker Lamp (Jira)" <ji...@apache.org> on 2020/01/15 13:12:00 UTC

[jira] [Commented] (TAP5-2605) JS minimizer regression bug in 5.5.0-beta-1

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

Volker Lamp commented on TAP5-2605:
-----------------------------------

There is another problem related with resource minimization in 5.5.0-beta-3 which does not occur in 5.4.5. The cause is probably the same, hence the comment here.

Some of the JavaScript appears not to be loading correctly during page initialization, causing the spinning wheel of the pageloading mask to run indefinitely.

The problem does _not_ occur when either of the following are true:
* {{tapestry-webresources}} not on the classpath
* {{tapestry.production-mode}} set to {{false}}
* {{tapestry.enable-minification}} set to {{false}}
* using Tapestry 5.4.5

A minimal Tapestry setup suffices to replicate the problem:
 # Using Tapestry 5.5.0-beta-3
 # {{tapestry-webresources}} on the classpath
 # An empty AppModule:
{code:java}
public class AppModule {}{code}
# An empty Index page class:
{code:java}
public class Index {}{code}
# A trivial Index page template:
{code:xml}
<!DOCTYPE html>

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd">
	<head>
		<meta charset="utf-8" />
		<title>TAP5-2605 demo</title>
	</head>
	<body>
		<h1>TAP5-2605 demo</h1>
	</body>
</html>{code}

> JS minimizer regression bug in 5.5.0-beta-1
> -------------------------------------------
>
>                 Key: TAP5-2605
>                 URL: https://issues.apache.org/jira/browse/TAP5-2605
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-webresources
>    Affects Versions: 5.5.0
>            Reporter: Balázs Palcsó
>            Priority: Major
>              Labels: regression
>         Attachments: clipboard-polyfill.promise.js
>
>
> After upgrading from 5.4.4 to 5.5.0-beta-1 I am getting the following error for the attached [^clipboard-polyfill.promise.js]
>  
> {code:java}
> 20190105 22:07:58.126 [http-nio-8080-exec-5] ERROR org.apache.tapestry5.ioc.Registry - Illegal char <<> at index 18: StreamableResource<text/javascript classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js COMPRESSABLE lastModified: Sat Jan 05 22:07:25 CET 2019 size: 24061>
> 20190105 22:07:58.126 [http-nio-8080-exec-5] ERROR org.apache.tapestry5.ioc.Registry - Operations trace:
> 20190105 22:07:58.126 [http-nio-8080-exec-5] ERROR org.apache.tapestry5.ioc.Registry - [ 1] Streaming compressed module clipboard
> 20190105 22:07:58.126 [http-nio-8080-exec-5] ERROR org.apache.tapestry5.ioc.Registry - [ 2] Streaming classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js (compressed)
> 20190105 22:07:58.126 [http-nio-8080-exec-5] ERROR org.apache.tapestry5.ioc.Registry - [ 3] Minimizing StreamableResource<text/javascript classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js COMPRESSABLE lastModified: Sat Jan 05 22:07:25 CET 2019 size: 24061>
> 20190105 22:07:58.246 [http-nio-8080-exec-5] ERROR o.a.t.m.T.RequestExceptionHandler - Processing of request failed with uncaught exception: {}
> org.apache.tapestry5.ioc.internal.OperationException: Illegal char <<> at index 18: StreamableResource<text/javascript classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js COMPRESSABLE lastModified: Sat Jan 05 22:07:25 CET 2019 size: 24061>
> at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:186)
> at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:118)
> at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84)
> at org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1266)
> at org.apache.tapestry5.internal.webresources.AbstractMinimizer.minimize(AbstractMinimizer.java:67)
> at org.apache.tapestry5.internal.services.assets.MasterResourceMinimizer.minimize(MasterResourceMinimizer.java:42)
> at $ResourceMinimizer_2469ff1505ff6.minimize(Unknown Source)
> at org.apache.tapestry5.internal.services.assets.SRSMinimizingInterceptor.getStreamableResource(SRSMinimizingInterceptor.java:42)
> at org.apache.tapestry5.internal.services.assets.JavaScriptStackMinimizeDisabler.getStreamableResource(JavaScriptStackMinimizeDisabler.java:61)
> at org.apache.tapestry5.internal.services.assets.UTF8ForTextAssets.getStreamableResource(UTF8ForTextAssets.java:40)
> at org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:55)
> at org.apache.tapestry5.internal.services.assets.SRSCompressingInterceptor.getStreamableResource(SRSCompressingInterceptor.java:38)
> at org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:55)
> at $StreamableResourceSource_2469ff1505e6a.getStreamableResource(Unknown Source)
> at org.apache.tapestry5.internal.services.ResourceStreamerImpl$1.perform(ResourceStreamerImpl.java:114)
> at org.apache.tapestry5.internal.services.ResourceStreamerImpl$1.perform(ResourceStreamerImpl.java:107)
> at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
> at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84)
> at org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1266)
> at org.apache.tapestry5.internal.services.ResourceStreamerImpl.streamResource(ResourceStreamerImpl.java:106)
> at $ResourceStreamer_2469ff1505e97.streamResource(Unknown Source)
> at org.apache.tapestry5.internal.services.javascript.ModuleDispatcher$1.perform(ModuleDispatcher.java:167)
> at org.apache.tapestry5.internal.services.javascript.ModuleDispatcher$1.perform(ModuleDispatcher.java:158)
> at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
> at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84)
> at org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1266)
> at org.apache.tapestry5.internal.services.javascript.ModuleDispatcher.handleModuleRequest(ModuleDispatcher.java:155)
> at org.apache.tapestry5.internal.services.javascript.ModuleDispatcher.dispatch(ModuleDispatcher.java:105)
> at $Dispatcher_2469ff1505e9d.dispatch(Unknown Source)
> at $Dispatcher_2469ff1505e93.dispatch(Unknown Source)
> at org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:305)
> at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
> at $RequestHandler_2469ff1505e94.service(Unknown Source)
> at org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.java:846)
> at $RequestHandler_2469ff1505e94.service(Unknown Source)
> at org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:836)
> at $RequestHandler_2469ff1505e94.service(Unknown Source)
> at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)
> at $RequestHandler_2469ff1505e94.service(Unknown Source)
> at $RequestHandler_2469ff1505e7e.service(Unknown Source)
> at org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:256)
> at org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:45)
> at $HttpServletRequestHandler_2469ff1505e80.service(Unknown Source)
> at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59)
> at $HttpServletRequestHandler_2469ff1505e80.service(Unknown Source)
> at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:69)
> at $HttpServletRequestFilter_2469ff1505e7a.service(Unknown Source)
> at $HttpServletRequestHandler_2469ff1505e80.service(Unknown Source)
> at org.tynamo.security.services.impl.SecurityConfiguration.service(SecurityConfiguration.java:72)
> at $HttpServletRequestFilter_2469ff1505e7d.service(Unknown Source)
> at $HttpServletRequestHandler_2469ff1505e80.service(Unknown Source)
> at org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:796)
> at $HttpServletRequestHandler_2469ff1505e80.service(Unknown Source)
> at $HttpServletRequestHandler_2469ff1505e79.service(Unknown Source)
> at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:166)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
> at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
> at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
> at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
> at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
> at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
> at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: java.nio.file.InvalidPathException: Illegal char <<> at index 18: StreamableResource<text/javascript classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js COMPRESSABLE lastModified: Sat Jan 05 22:07:25 CET 2019 size: 24061>
> at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
> at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
> at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
> at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
> at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
> at com.google.javascript.jscomp.SourceMapResolver.getRelativePath(SourceMapResolver.java:102)
> at com.google.javascript.jscomp.SourceMapResolver.extractSourceMap(SourceMapResolver.java:63)
> at com.google.javascript.jscomp.JsAst.parse(JsAst.java:169)
> at com.google.javascript.jscomp.JsAst.getAstRoot(JsAst.java:56)
> at com.google.javascript.jscomp.CompilerInput.getAstRoot(CompilerInput.java:133)
> at com.google.javascript.jscomp.Compiler.hoistIfExtern(Compiler.java:1979)
> at com.google.javascript.jscomp.Compiler.hoistExterns(Compiler.java:1965)
> at com.google.javascript.jscomp.Compiler.orderInputs(Compiler.java:1819)
> at com.google.javascript.jscomp.Compiler.parseInputs(Compiler.java:1751)
> at com.google.javascript.jscomp.Compiler.parseForCompilationInternal(Compiler.java:965)
> at com.google.javascript.jscomp.Compiler.lambda$parseForCompilation$4(Compiler.java:948)
> at com.google.javascript.jscomp.CompilerExecutor.runInCompilerThread(CompilerExecutor.java:129)
> at com.google.javascript.jscomp.Compiler.runInCompilerThread(Compiler.java:856)
> at com.google.javascript.jscomp.Compiler.parseForCompilation(Compiler.java:946)
> at com.google.javascript.jscomp.Compiler.compile(Compiler.java:715)
> at org.apache.tapestry5.internal.webresources.GoogleClosureMinimizer.doMinimize(GoogleClosureMinimizer.java:92)
> at org.apache.tapestry5.internal.webresources.AbstractMinimizer$1.perform(AbstractMinimizer.java:72)
> at org.apache.tapestry5.internal.webresources.AbstractMinimizer$1.perform(AbstractMinimizer.java:68)
> at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
> ... 72 common frames omitted{code}
> This is how the JS file is added in the AppModule Java class:
> {code:java}
>     @Contribute(ModuleManager.class)
>     public static void contributeModuleManager(final MappedConfiguration<String, Object> configuration,
>             @Path("classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js") final Resource clipboard) {
>         configuration.add("clipboard", new JavaScriptModuleConfiguration(clipboard));
>     }
> {code}
> This only happens when -Dtapestry.production-mode=true



--
This message was sent by Atlassian Jira
(v8.3.4#803005)