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

pantsbuild / pants / 35110
0%
main: 93%

Build:
Build:
LAST BUILD BRANCH: fix/immutable-inputs-revalidation
DEFAULT BRANCH: main
Ran 25 Aug 2020 07:20AM UTC
Jobs 1
Files 429
Run time 19s
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
35110

cron

travis-ci-com

web-flow
Unify logging implementations and remove simplelog (#10686)

### Problem

There are several inconsistencies and problems with pants logging at the moment. One is that (cf. https://github.com/pantsbuild/pants/issues/10646 ) the `logging` Rust crate currently uses two separate and slightly-different methods to output logs - a custom log string if pants is displaying stderr logs when the dynamic UI is active; and a custom wrapper around the `simplelog::WriteLogger` when writing logs to a file or displaying stderr logs when the dynamic UI is inactive.

Another issue is that Rust logging can sometimes be the source of deadlocks. Many pants log statements log the string representation of a `Value` type, which represents a Python object and calls into Python code to determine its string representation, which requires grabbing the Python GIL. `WriteLogger` uses a lock internally around its handle to a `Write`-implementing value, which can interfere with grabbing the GIL in the `Display` implementation of `Value`, causing deadlocks if we display log messages frequently enough.

### Solution

This commit fixes both the inconsistency issue and the deadlocking issue by unifying the logging implementations in `logger.rs` and removing our `MaybeWriteLogger` wrapper around `simplelog::WriteLogger` entirely. Now, the custom log string built for the dynamic UI stderr logging case is the only log format string in use; and since we compute this string before grabbing the lock to a file (and remove the lock entirely for stderr), we avoid the deadlocks we were seeing.

11 of 11 new or added lines in 2 files covered. (100.0%)

0 of 28872 relevant lines covered (0.0%)

0.0 hits per line

Jobs
ID Job ID Ran Files Coverage
4 35110.4 (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=py37.linux PANTS_REMOTE_CA_CERTS_PATH=/usr/lib/google-cloud-sdk/lib/third_party/grpc/_cython/_credentials/roots.pem CACHE_NAME=python_tests.py37) 25 Aug 2020 07:20AM UTC 0
0.0
Travis Job 35110.4
Source Files on build 35110
Detailed source file information is not available for this build.
  • Back to Repo
  • Build #35110
  • 8ad2bfc0 on github
  • Prev Build on master (#35108)
  • Next Build on master (#35117)
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