TeXoo
TeXoo copied to clipboard
ObjectSerializer causes "java.lang.IllegalStateException: zip file closed" if called for the first time in a parallel stream
ObjectSerializer causes java.lang.IllegalStateException: zip file closed
if called for the first time in a parallel stream. This is caused by the reflections scan of the jar which is not thread-safe.
A workaround is to initialize ObjectSerializer internals with a call of ObjectSerializer.getObjectMapper()
in a single threaded environment.
Caused by: java.lang.IllegalStateException: zip file closed
at java.util.zip.ZipFile.ensureOpen(ZipFile.java:686)
at java.util.zip.ZipFile.access$200(ZipFile.java:60)
at java.util.zip.ZipFile$ZipEntryIterator.next(ZipFile.java:519)
at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:514)
at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:495)
at java.util.jar.JarFile$JarEntryIterator.next(JarFile.java:257)
at java.util.jar.JarFile$JarEntryIterator.nextElement(JarFile.java:266)
at java.util.jar.JarFile$JarEntryIterator.nextElement(JarFile.java:247)
at org.reflections.vfs.ZipDir$1$1.computeNext(ZipDir.java:31)
at org.reflections.vfs.ZipDir$1$1.computeNext(ZipDir.java:26)
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145)
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140)
at org.reflections.Reflections.scan(Reflections.java:243)
at org.reflections.Reflections.scan(Reflections.java:202)
at org.reflections.Reflections.<init>(Reflections.java:123)
at de.datexis.common.ObjectSerializer.getInstance(ObjectSerializer.java:34)
at de.datexis.common.ObjectSerializer.writeJSON(ObjectSerializer.java:62)
at de.datexis.weaver.nir.eval.FastTextPipeline.encodeSentencesInFile(FastTextPipeline.java:132)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:291)
at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
... 4 more