Hi,

What do you think if we configure Gradle Remote Build Cache for Calcite?
(see https://guides.gradle.org/using-build-cache )

It could significantly improve PR and regular builds: 12min -> 9min (see
below).

I'm inclined to polish the caching configuration and merge it provided
there are no objections within a week.
https://github.com/apache/calcite/pull/2081

---

It could cache the results of cacheable tasks across builds. For instance,
checkstyle/javadoc/javac results are perfectly cacheable.
Then, if we don't touch linq4j, Gradle could reuse checkstyle/javadoc/javac
results from a known good build.
The cache does account for Java version, classpath, and so on.

I've configured a cache into my own S3 bucket.
The cache would be populated by GitHub Actions branch-based builds (PR
builds would be read-only)

Recent macOS, JDK14 build took 12:24
https://github.com/apache/calcite/runs/909244400?check_suite_focus=true
The one with build cache took 9:36
https://github.com/apache/calcite/runs/909907954?check_suite_focus=true

S3 cache 05:27 saved (05:27 saved on hits, 618ms wasted on misses), reads:
162, hits: 142, elapsed: 11s, processed: 8 MiB
I'm not sure why estimated time saving says 5:27 while the actual duration
difference is 2:48, however, making PR builds faster is nice anyway.

For some reason Javadoc tasks result in cache miss (see build scan
https://scans.gradle.com/s/b5ibehsnmyqxg/timeline?cacheableFilter=cacheable&hideTimeline&outcomeFilter=SUCCESS,FAILED&sort=longest
),
so net saving could be more than listed above.

Test execution is cached yet as there might be tests that depend on
databases that we can't predict and shouldn't cache.
It might be a good idea to make some of the tests cacheable. I believe it
should be OK to cache tests that depend on Calcite only.

Vladimir

Reply via email to