All microbenchmarks using Google Caliper library are broken. They cannot execute properly due to dependency version mismatch. The root cause is that Druid declares dependency on com.google.guava:guava:16.0.1 and com.google.caliper:caliper:0.5-rc1. Caliper in turn, needs Guava in version < 16.0, because it uses http://docs.guava-libraries.googlecode.com/git-history/v15.0/javadoc/com/google/common/io/Closeables.html#closeQuietly(java.io.Closeable) internally.
Affected benchmarks:
- JavaScriptAggregatorBenchmark
- CardinalityAggregatorBenchmark
- HyperLogLogCollectorBenchmark
- TopNBinaryFnBenchmark
- MemcachedCacheBenchmark
Steps to reproduce:
- Checkout current master
- Attempt to run any of the affected benchmarks.
Expected result:
- Benchmark completes successfully
Actual result:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.io.Closeables.closeQuietly(Ljava/io/Closeable;)V
at com.google.caliper.Runner.measure(Runner.java:301)
at com.google.caliper.Runner.runScenario(Runner.java:229)
at com.google.caliper.Runner.runOutOfProcess(Runner.java:378)
at com.google.caliper.Runner.run(Runner.java:97)
at com.google.caliper.Runner.main(Runner.java:423)
at com.google.caliper.Runner.main(Runner.java:436)
at io.druid.query.aggregation.hyperloglog.HyperLogLogCollectorBenchmark.main(HyperLogLogCollectorBenchmark.java:167)
How to fix:
There are two ways this can be fixed.
- Lower version of Guava dependency to
15.0 globally.
- Bump up Caliper dependency to the newest
1.0-beta-2 and migrate affected benchmarks to the new API (there have been some API changes between 0.5-rc1 and 1.0-beta-1).
I will try to open a pull request fixing this today.
All microbenchmarks using Google Caliper library are broken. They cannot execute properly due to dependency version mismatch. The root cause is that Druid declares dependency on
com.google.guava:guava:16.0.1andcom.google.caliper:caliper:0.5-rc1. Caliper in turn, needs Guava in version < 16.0, because it uses http://docs.guava-libraries.googlecode.com/git-history/v15.0/javadoc/com/google/common/io/Closeables.html#closeQuietly(java.io.Closeable) internally.Affected benchmarks:
Steps to reproduce:
Expected result:
Actual result:
How to fix:
There are two ways this can be fixed.
15.0globally.1.0-beta-2and migrate affected benchmarks to the new API (there have been some API changes between0.5-rc1and1.0-beta-1).I will try to open a pull request fixing this today.