Fix race condition (COMPLETED/BOT_DIED) in task_runner.

Per b/69462084 and a TODO comment in this file, a race condition
exists when an external process polls task status that fails with
BOT_DIED (there's a short window in which the task will be marked
as COMPLETED before being updated to BOT_DIED). This change sends
the task-update without the exit code (to prevent the COMPLETED
status from being set), and then sends a task_error message. The
default must_signal_internal_failure is also changed to provide a
default error in case run_isolated fails.

TESTED=Ran unit tests in task_runner_test and they pass.

Any other tests?

Change-Id: I1db3e15ccbdac3da9181b273681180211b07841c
Reviewed-on: https://chromium-review.googlesource.com/834397
Commit-Queue: Marc-Antoine Ruel <maruel@chromium.org>
Reviewed-by: Marc-Antoine Ruel <maruel@chromium.org>
4 files changed
tree: db294e237921ca550cd0119e56e1c255453b4dc4
  1. .gitignore
  2. .vpython
  3. AUTHORS
  4. CODING_STYLE.md
  5. CONTRIBUTORS
  6. LICENSE
  7. OWNERS
  8. PRESUBMIT.py
  9. README.md
  10. WATCHLISTS
  11. appengine/
  12. client/
  13. codereview.settings
  14. infra/
README.md

LUCI

LUCI is an ensemble of services that work together to run large scale CI (continuous integration) infrastructure to get results in O(1). It is used by the Chromium project.

See appengine/ for the services provided.

Overview

A complete CI toolkit:

  • Strict separation between task distribution and file distribution.
    • Swarming distributes tasks across an army (thousands) of Swarming bots.
    • Isolate server distributes 10s of thousands of files per task.
  • Federated authentication and ACL.
  • git based configuration data propagation.
  • Automatic Google Compute Engine VM recycling.
  • Windows, OSX and Linux (Ubuntu), used with Android, iOS, ChromeOS.
  • Written in python 2.7 along Go tools.
  • Used by the Chromium infrastructure and other teams.

Installing

  1. Install Google AppEngine SDK.
  2. git clone https://chromium.googlesource.com/infra/luci/luci-py

Code layout

Versioning

  • Branch master constains the latest code.
  • Branch stable contains the stable code.

Contributing

  • Sign the Google CLA.
  • See the coding style.
  • Make sure your user.email and user.name are configured in git config.

Run the following to setup the code review tool and create your first review:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $HOME/src/depot_tools
export PATH="$PATH:$HOME/src/depot_tools"
cd luci-py
git checkout -b work origin/master

# hack hack

git commit -a -m "This is awesome\nR=joe@example.com"
# This will ask for your Google Account credentials.
git cl upload -s
# Wait for LGTM over email.
# Check the commit queue box in codereview website.
# Wait for the change to be tested and landed automatically.

Use git cl help and git cl help <cmd> for more details.

License

This project is licensed under Apache v2.0 license. See LICENSE for details.