gradle-baseline
gradle-baseline copied to clipboard
checkClassUniqueness ZipExceptions
What happened?
A bunch of different projects have reported occasional failures of the form:
> Task :sls-elasticsearch-sidecar:checkClassUniqueness FAILED
Failed to read JarFile sls-elasticsearch-sidecar-shared.jar (project :sls-elasticsearch-sidecar-shared)
java.util.zip.ZipException: invalid entry size (expected 0 but got 9589 bytes)
at java.base/java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:398)
at java.base/java.util.zip.ZipInputStream.read(ZipInputStream.java:197)
at java.base/java.util.jar.JarInputStream.read(JarInputStream.java:207)
at com.google.common.hash.HashingInputStream.read(HashingInputStream.java:67)
at java.base/java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.google.common.io.ByteStreams.exhaust(ByteStreams.java:227)
at com.palantir.baseline.tasks.ClassUniquenessAnalyzer.lambda$analyzeConfiguration$0(ClassUniquenessAnalyzer.java:86)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
at com.palantir.baseline.tasks.ClassUniquenessAnalyzer.analyzeConfiguration(ClassUniquenessAnalyzer.java:63)
at com.palantir.baseline.tasks.CheckClassUniquenessLockTask.lambda$doIt$4(CheckClassUniquenessLockTask.java:88)
at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:178)
at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
:quiver:checkClassUniqueness FAILED
Failed to read JarFile quiver-state-api.jar (project :quiver-state-api)
java.io.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:245)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:159)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:195)
at java.util.jar.JarInputStream.read(JarInputStream.java:207)
at com.google.common.hash.HashingInputStream.read(HashingInputStream.java:67)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.google.common.io.ByteStreams.exhaust(ByteStreams.java:273)
at com.palantir.baseline.tasks.ClassUniquenessAnalyzer.lambda$analyzeConfiguration$0(ClassUniquenessAnalyzer.java:86)
at java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
This breaks a CI build, but doesn't usually repro locally.
I think this only happens when the analyzer visits a jar which is produced by the current repo. Many of these projects likely use the java-library
gradle plugin.
Suspected race in creating these jars.
cc @athorwall @nemines
What did you want to happen?
Don't introduce flakes and fail the build when everything is actually fine!