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

pantsbuild / pants / 35088
0%
main: 93%

Build:
Build:
LAST BUILD BRANCH: 2.33.x
DEFAULT BRANCH: main
Ran 24 Aug 2020 07:19PM UTC
Jobs 1
Files 429
Run time 20s
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

pending completion
35088

push

travis-ci-com

web-flow
Implement RuleGraph construction using data flow analysis (#10645)

### Problem

Rule graph construction time became exponential worse recently as more rules were added to a particular cluster in the graph: in particular, the set of rules around target construction. See #10504.

Additionally, rule graph construction error reporting had become unmanageable with existing recursive rule graph construction algorithm: failing to construct a rule graph meant running post-facto logic to attempt to discern what had happened by re-constructing a graph of likely errors, which was slow and error prone. See #10440.

Attempting to solve these two issues in the existing recursive rule graph algorithm proved to be a dead end: the logic that it used to attempt to deal with cycles was beginning to fail to deal with more complicated cyclic structures, and was contributing to the total runtime by backtracking out of cycles. 

### Solution

Move to constructing a `RuleGraph` using data flow analysis on the rule call graph. Additionally, replace `RootRule` definitions (which were used to "plug" holes in the rule graph in places where external inputs were expected, but which were in practice sprinkled everywhere someone thought they might be necessary) with `QueryRule` definitions, which correspond almost* 1:1 with `Schedule.product_request` callsites.

The new construction algorithm is broken up into phases:

1. Building a polymorphic graph, where all sources of a particular dependency are included, but without regard for which types are available at a callsite. This phase will fail fast if no `Query` or `Get` anywhere in the graph provides a particular `Param` type.
2. Run [live variable analysis](https://en.wikipedia.org/wiki/Live_variable_analysis) on the polymorphic graph to compute the initial set of `Params` used by each node in the graph. During this phase, each node in the graph has a reference to all possible sources of a particular type, and so th... (continued)

257 of 257 new or added lines in 62 files covered. (100.0%)

0 of 28918 relevant lines covered (0.0%)

0.0 hits per line

Jobs
ID Job ID Ran Files Coverage
5 35088.5 (PANTS_CONFIG_FILES="${TRAVIS_BUILD_DIR}/pants.travis-ci.toml" PANTS_DYNAMIC_UI=false LC_ALL="en_US.UTF-8" AWS_BUCKET=ci-public.pantsbuild.org BOOTSTRAPPED_PEX_KEY_PREFIX=daily/${TRAVIS_BUILD_NUMBER}/${TRAVIS_BUILD_ID}/pants.pex NATIVE_ENGINE_SO_KEY_PREFIX=monthly/native_engine_so PYENV_PY27_VERSION=2.7.18 PYENV_PY36_VERSION=3.6.10 PYENV_PY37_VERSION=3.7.7 PYENV_PY38_VERSION=3.8.3 PYENV_ROOT_OSX=${HOME}/.pants_pyenv PYENV_ROOT="${PYENV_ROOT:-${PYENV_ROOT_OSX}}" PATH="${PYENV_ROOT}/shims:${PATH}" AWS_CLI_ROOT="${HOME}/.aws_cli" AWS_ACCESS_KEY_ID__TO_BE_REEXPORTED_ON_DEPLOYS=AKIAV6A6G7RQ2HFZ5KP7 AWS_SECRET_ACCESS_KEY=[secure] RUST_BACKTRACE="all" BOOTSTRAPPED_PEX_KEY_SUFFIX=py36.linux PANTS_REMOTE_CA_CERTS_PATH=/usr/lib/google-cloud-sdk/lib/third_party/grpc/_cython/_credentials/roots.pem CACHE_NAME=python_tests.py36) 24 Aug 2020 07:19PM UTC 0
0.0
Travis Job 35088.5
Source Files on build 35088
Detailed source file information is not available for this build.
  • Back to Repo
  • Build #35088
  • 3a188a1e on github
  • Prev Build on master (#35085)
  • Next Build on master (#35092)
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