cloud-opensource-java
cloud-opensource-java copied to clipboard
Make LinkageChecker faster
It seems trying to fetch Maven artifacts from remote repository unnecessarily.
It would take 40000 seconds to fill 167 x 167 table for pair-wise comparison.
Running io.grpc:grpc-auth:jar:1.18.0 com.google.cloud:google-cloud-monitoring:jar:1.63.0 (923/27889). ETA: 408741 seconds
Running io.grpc:grpc-auth:jar:1.18.0 com.google.api.grpc:proto-google-cloud-monitoring-v3:jar:1.45.0 (924/27889). ETA: 408741 seconds
Running io.grpc:grpc-auth:jar:1.18.0 com.google.api.grpc:grpc-google-cloud-monitoring-v3:jar:1.45.0 (925/27889). ETA: 408769 seconds
Running io.grpc:grpc-auth:jar:1.18.0 com.google.cloud:google-cloud-os-login:jar:0.81.0-alpha (926/27889). ETA: 408796 seconds
There was a bug where each cell of the pair-wise comparison fetching all artifacts in the BOM. Fixed. Now it looks like this:
Running com.google.guava:guava:jar:26.0-android com.google.cloud:google-cloud-errorreporting:jar:0.81.0-beta (69/27889). ETA: 40857 seconds
Running com.google.guava:guava:jar:26.0-android com.google.api.grpc:proto-google-cloud-error-reporting-v1beta1:jar:0.46.0 (70/27889). ETA: 41164 seconds
Running com.google.guava:guava:jar:26.0-android com.google.api.grpc:grpc-google-cloud-error-reporting-v1beta1:jar:0.46.0 (71/27889). ETA: 40885 seconds
Running com.google.guava:guava:jar:26.0-android com.google.cloud:google-cloud-firestore:jar:0.81.0-beta (72/27889). ETA: 40717 seconds
DashboardMain
Wed Mar 06 16:17:34 EST 2019: reading bom
Wed Mar 06 16:17:38 EST 2019: resolving BOM dependencies
Wed Mar 06 16:17:41 EST 2019: creating linkage checker
Wed Mar 06 16:17:50 EST 2019: finding linkage errors
Wed Mar 06 16:17:57 EST 2019: generating HTML
Wed Mar 06 16:18:02 EST 2019: done.

Even with session.setOffline(true), it remains the same. So the slowness is not from network IO.
Wed Mar 06 16:39:52 EST 2019: reading bom
Wed Mar 06 16:39:52 EST 2019: loading artifact info
Wed Mar 06 16:39:56 EST 2019: resolving BOM dependencies
Wed Mar 06 16:39:59 EST 2019: creating linkage checker
Wed Mar 06 16:40:08 EST 2019: finding linkage errors
Wed Mar 06 16:40:15 EST 2019: generating HTML
Wed Mar 06 16:40:20 EST 2019: done.
Pairwise comparison table for 167x167 (skipping same version) took 9 hours.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 09:29 h
[INFO] Finished at: 2019-03-08T05:41:16-05:00
[INFO] Final Memory: 89M/15503M
[INFO] ------------------------------------------------------------------------
It failed
Running io.grpc:grpc-alts:jar:1.18.0 com.google.cloud:google-cloud-nio:jar:0.81.0-alpha (717/27889). ETA: 33801 seconds
Exception in thread "main" com.google.common.base.VerifyException: The target class symbol reference is not found in source class
at com.google.common.base.Verify.verify(Verify.java:124)
at com.google.cloud.tools.opensource.classpath.ClassDumper.isUnusedClassSymbolReference(ClassDumper.java:585)
at com.google.cloud.tools.opensource.classpath.LinkageChecker.checkLinkageErrorMissingClassAt(LinkageChecker.java:340)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at com.google.cloud.tools.opensource.classpath.LinkageChecker.errorsFromSymbolReferences(LinkageChecker.java:141)
at com.google.cloud.tools.opensource.classpath.LinkageChecker.generateLinkageReport(LinkageChecker.java:110)
at com.google.cloud.tools.opensource.classpath.LinkageChecker.lambda$findLinkageErrors$0(LinkageChecker.java:86)
at com.google.common.collect.RegularImmutableMap.forEach(RegularImmutableMap.java:186)
at com.google.cloud.tools.opensource.classpath.LinkageChecker.findLinkageErrors(LinkageChecker.java:84)
at com.google.cloud.tools.opensource.classpath.LeagueTableMain.main(LeagueTableMain.java:93)