• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pantsbuild / pants / 6016 / 2
0%
main: 93%

Build:
Build:
LAST BUILD BRANCH: feat-configurable-nailgun-jar
DEFAULT BRANCH: main
Ran 06 Aug 2015 04:43PM UTC
Files 348
Run time 10s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Aug 2015 04:17PM UTC coverage: 69.434% (+0.5%) from 68.982%
CI_FLAGS="-fkmsrcn -u 0/2 'Unit tests for pants and pants-plugins - shard 1'"

push

travis-ci

stuhood
Add "omnivorous" ZincCompile to consume both java and scala sources

PROBLEM:
Currently, java and scala targets are chunked separately, and (with isolated strategy) a separate execution graph is created for every chunk by JavaZincCompile and ScalaZincCompile. These graphs are then executed sequentially, meaning there are unnecessary artificial barriers in the execution flow, increasing the total compilation time.

Also, when Zinc is run in Nailgun, the static final caches like analysisCache are preserved in Nailgun between Zinc invocations. Since every GroupMember is a NailgunTask, and NailgunTask uses NailgunExecutor parameterized by the task's class name (actually by the executor_workdir, which includes the task's class name), different GroupMembers use different NailgunExecutors, ergo different Nailgun instances. In particular, JavaZincCompile and ScalaZincCompile use two different Nailgun instances, which means storing two separate copies of Zinc's internal state. While not necessarily affecting performance, this increases memory pressure.

SOLUTION:
Define a new GroupMember which subclasses ZincCompile and consumes both java and scala sources. In GroupTask, it will claim all java and scala targets (the whole build graph), which will form a single chunk. When isolated strategy is used, the build graph is translated to the execution graph, which is executed in a single instance of the worker pool. Also, naturally, only one Nailgun instance is used to run Zinc for both languages, therefore only one copy of Zinc caches is stored.

Additionally, --enabled argument is added for jmake-based JavaCompile GroupMember, "True" by default.

RESULT:
The sequence of GroupMembers now is: [AptCompile, JavaCompile, ZincCompile].
1. All AnnotationProcessor Java targets are claimed by jmake-based AptCompile.
2a. When --no-compile-java-enabled is used, JavaCompile becomes a no-op. All remaining Java and Scala targets are claimed by ZincCompile and compiled in a singl... (continued)

14461 of 20827 relevant lines covered (69.43%)

0.69 hits per line

Source Files on job 6016.2 (CI_FLAGS="-fkmsrcn -u 0/2 'Unit tests for pants and pants-plugins - shard 1'")
  • Tree
  • List 0
  • Changed 25
  • Source Changed 7
  • Coverage Changed 21
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 6016
  • Travis Job 6016.2
  • ee99c807 on github
  • Prev Job for CI_FLAGS="-fkmsrcn -u 0/2 'Unit tests for pants and pants-plugins - shard 1'" on master (#6015.2)
  • Next Job for CI_FLAGS="-fkmsrcn -u 0/2 'Unit tests for pants and pants-plugins - shard 1'" on master (#6017.2)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc