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

Chris Poulsen commented on TAP5-2605:
-------------------------------------

I just hit this one as well during an upgrade from Tapestry 5.8.2 to 5.8.6.

It only happens on our Windows servers and in our case the error happen 
directly with the "core" stack, production mode = true and 
tapestry-webresources present.

The culprit is: GoogleClosureMinimizer:96
{code:java}
SourceFile input = SourceFile.fromInputStream(resource.toString(), 
resource.openStream(), StandardCharsets.UTF_8); {code}
The "resource.toString()" to be specific. Which in our case contains:
{code:java}
StreamableResource<text/javascript;charset=utf-8 'core' JavaScript stack, for 
locale en, resources=classpath:META-INF/assets/tapestry5/require.js, 
classpath:META-INF/assets/tapestry5/underscore-1.13.6.js, 
classpath:META-INF/assets/tapestry5/jquery.js, 
classpath:META-INF/assets/tapestry5/jquery-shim.js, 
classpath:META-INF/modules/t5/core/alert.js, 
classpath:META-INF/modules/t5/core/ajax.js, 
classpath:META-INF/modules/t5/core/bootstrap.js, 
classpath:META-INF/modules/t5/core/console.js, 
classpath:org/apache/tapestry5/t5-core-dom-jquery.js, 
classpath:META-INF/modules/t5/core/events.js, 
classpath:META-INF/modules/t5/core/exception-frame.js, 
classpath:META-INF/modules/t5/core/fields.js, 
classpath:META-INF/modules/t5/core/forms.js, 
classpath:META-INF/modules/t5/core/pageinit.js, 
classpath:META-INF/modules/t5/core/messages.js, 
classpath:META-INF/modules/t5/core/utils.js, 
classpath:META-INF/modules/t5/core/validation.js, 
classpath:META-INF/assets/tapestry5/underscore-shim.js COMPRESSABLE 
lastModified: man. apr. 29 08:23:01 CEST 2024 size: 503855>
 {code}
The Windows path parser complains about the < at index 18.

The "filename" parameter is required, but the docs says that it just need to be 
a name, it does not have to resolve to an actual file (obviously). Since the 
filename is not used, I just replaced the

"resource.toString()" with "streamable-resource" and then we are going again.

 

> 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.20.10#820010)

Reply via email to