tilt
tilt copied to clipboard
Starting two instances at the same time can cause cloning of extensions repo to fail
Expected Behavior
It is not immediately clear what the expectation should be; maybe the extensions repository could be cloned with a separate command, so the user can control the timing? Or some sort of simple locking mechanism (empty file in ~/local/share/tilt-dev))?
Current Behavior
Using a Tiltfile which loads extensions, starting two instance of Tilt can result in conflicts about cloning the extensions repository:
Tilt started on http://localhost:10350/
v0.32.4, built 2023-05-24
Serving embedded Tilt production web assets
Initial Build
Loading Tiltfile at: /home/cmeury/tmp/tilt-instance-test/Tiltfile
# cd .; git clone -- https://github.com/tilt-dev/tilt-extensions /home/cmeury/.local/share/tilt-dev/tilt_modules/github.com/tilt-dev/tilt-extensions
Cloning into '/home/cmeury/.local/share/tilt-dev/tilt_modules/github.com/tilt-dev/tilt-extensions'...
error: Untracked working tree file '.circleci/Dockerfile' would be overwritten by merge.
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'
ERROR: extensionrepo default: download error: waiting 5s before retrying. Original error: exit status 128
ERROR: Traceback (most recent call last):
/home/cmeury/tmp/tilt-instance-test/Tiltfile:1:1: in <toplevel>
Error: cannot load ext://secret: loading extension repo default: download error: waiting 5s before retrying. Original error: exit status 128
Steps to Reproduce
- Create a Tiltfile with a single entry:
load('ext://secret', 'secret_from_dict') - Run two instances of Tilt at the same time
tilt up --debug --port 10350 > first.log & tilt up --debug --port 20350 > second.log & - Check the log files for errors
Context
tilt doctor Output
Tilt: v0.32.4, built 2023-05-24
System: linux-amd64
About Your Use Case
Running two Tilt instances at the same time on CI; for separate environments.
good catch! ya, we should probably have some sort of file-based lock here :thinking:
i've also been wondering if we should change the behavior slightly. rather than doing a git pull on every tilt up, maybe it should pin to the version of the extensions repo that came out when that version of tilt was released.
@nicks That's also what we did in our workaround, just before starting the two instances:
git clone --depth 1 --branch v0.32.4 -- https://github.com/tilt-dev/tilt-extensions ~/.local/share/tilt-dev/tilt_modules/github.com/tilt-dev/tilt-extensions