You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by psiroky <gi...@git.apache.org> on 2017/10/06 15:40:52 UTC
[GitHub] incubator-freemarker pull request #37: Workaround for classpath resource con...
GitHub user psiroky opened a pull request:
https://github.com/apache/incubator-freemarker/pull/37
Workaround for classpath resource concurrent access issue
getResourceAsStream() is not equivalent to getResource() + openStream().
In concurrent env. the former sometimes returns and already closed
stream.
This is a workaround for the following issue we are encountering when using Freemarker for annotation processing in parallel maven build (-T). This is unfortunately just a workaround and such is not ideal, so fell free to reject this.
The stacktrace of the error:
```
18:44:24 [ERROR] /home/jenkins/workspace/guvnor/upstream-repos/uberfire/uberfire-showcase/uberfire-client-webapp/src/main/java/org/uberfire/client/screens/DemoSplashScreen.java:[34,1] Internal error in org.uberfire.annotations.processors.WorkbenchSplashScreenProcessorjava.lang.ExceptionInInitializerError
18:44:24 [ERROR] at org.uberfire.annotations.processors.AbstractGenerator.<init>(AbstractGenerator.java:44)
18:44:24 [ERROR] at org.uberfire.annotations.processors.SplashScreenActivityGenerator.<init>(SplashScreenActivityGenerator.java:41)
18:44:24 [ERROR] at org.uberfire.annotations.processors.WorkbenchSplashScreenProcessor.<init>(WorkbenchSplashScreenProcessor.java:49)
18:44:24 [ERROR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
....
18:44:24 [ERROR] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
18:44:24 [ERROR] at java.lang.Thread.run(Thread.java:745)
18:44:24 [ERROR] Caused by: java.lang.IllegalStateException: zip file closed
18:44:24 [ERROR] at java.util.zip.ZipFile.ensureOpen(ZipFile.java:669)
18:44:24 [ERROR] at java.util.zip.ZipFile.getEntry(ZipFile.java:309)
18:44:24 [ERROR] at java.util.jar.JarFile.getEntry(JarFile.java:240)
18:44:24 [ERROR] at sun.net.www.protocol.jar.URLJarFile.getEntry(URLJarFile.java:128)
18:44:24 [ERROR] at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:132)
18:44:24 [ERROR] at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:150)
18:44:24 [ERROR] at java.net.URLClassLoader.getResourceAsStream(URLClassLoader.java:238)
18:44:24 [ERROR] at freemarker.template.Configuration.<clinit>(Configuration.java:431)
```
After applying the workaround we never saw that exception again (with several hundreds of builds).
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/psiroky/incubator-freemarker zip-file-closed
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/incubator-freemarker/pull/37.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #37
----
commit 3d0e5c503ecb81404638e918b6f3778aa3f77a6b
Author: Petr Široký <ps...@redhat.com>
Date: 2017-08-23T10:44:54Z
Workaround for classpath resource concurrent access issue
getResourceAsStream() is not equivalent to getResource() + openStream().
In concurrent env. the former sometimes returns and already closed
stream.
----
---
[GitHub] incubator-freemarker pull request #37: Workaround for classpath resource con...
Posted by psiroky <gi...@git.apache.org>.
Github user psiroky closed the pull request at:
https://github.com/apache/incubator-freemarker/pull/37
---