gradle-baseline icon indicating copy to clipboard operation
gradle-baseline copied to clipboard

checkClassUniqueness ZipExceptions

Open iamdanfox opened this issue 5 years ago • 0 comments

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!

iamdanfox avatar Jan 27 '20 16:01 iamdanfox