TeXoo icon indicating copy to clipboard operation
TeXoo copied to clipboard

ObjectSerializer causes "java.lang.IllegalStateException: zip file closed" if called for the first time in a parallel stream

Open SchmaR opened this issue 5 years ago • 3 comments

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

SchmaR avatar Mar 27 '19 17:03 SchmaR