This repository demonstrates that Tilt's live updates execute serially (one service at a time) even when max_parallel_updates is set to a high value. Docker builds respect this setting and run in parallel, while live updates do not.
When a shared file (like common/shared.py) changes, all 80 services need to sync the update. Despite setting max_parallel_updates=100, the live updates happen one at a time, taking significantly longer than necessary - it gets worse if you have to run something when restarting or if it takes more in your case to do so.
Expected behavior: Live updates should run in parallel (up to max_parallel_updates concurrent updates).
Actual behavior: Live updates run serially, one service completes before the next starts.
# 1. Clone this repository
git clone <repo-url>
cd tilt-liveupdate-serial-repro
# 2. Create a k3d cluster
./scripts/test.sh setup
# 3. Start Tilt (in one terminal)
./scripts/test.sh start
# 4. Wait for all 80 services to be green in the Tilt UI...
# 5. Trigger a live update
./scripts/test.sh trigger
# 6. Observe the Tilt UI
- Services will update ONE AT A TIME instead of in parallel
- You can check that by the "Pending" status across the services - while if it were a full docker build it'd be "Updating"
- It might be fast enough so that you can't notice it, but:
- If you are running a setup that takes a small while for them to be updated, then it might be more easily visible in that case
- Additionally, you can just increase the number of services, then, at some point, you'll be able to check this behaviorAfter running trigger, watch the Tilt UI:
- Services will show "pending" or "updating" status
- Only ONE service updates at a time
./scripts/test.sh cleanup