[
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)