Run the wizard checks and task runners in isolated python mode (-I)
coordinator / test (push) Canceled after 0s
python / test (push) Canceled after 0s
release / binaries (amd64, darwin) (push) Canceled after 0s
release / binaries (amd64, linux) (push) Canceled after 0s
release / binaries (amd64, windows) (push) Canceled after 0s
release / binaries (arm64, darwin) (push) Canceled after 0s
release / binaries (arm64, linux) (push) Canceled after 0s
release / binaries (arm64, windows) (push) Canceled after 0s
release / wheel (push) Canceled after 0s
release / image (push) Canceled after 0s
users / test (push) Canceled after 0s
release / release (push) Canceled after 0s
coordinator / test (push) Canceled after 0s
python / test (push) Canceled after 0s
release / binaries (amd64, darwin) (push) Canceled after 0s
release / binaries (amd64, linux) (push) Canceled after 0s
release / binaries (amd64, windows) (push) Canceled after 0s
release / binaries (arm64, darwin) (push) Canceled after 0s
release / binaries (arm64, linux) (push) Canceled after 0s
release / binaries (arm64, windows) (push) Canceled after 0s
release / wheel (push) Canceled after 0s
release / image (push) Canceled after 0s
users / test (push) Canceled after 0s
release / release (push) Canceled after 0s
This commit is contained in:
@@ -45,7 +45,7 @@ func runAgent(args []string) error {
|
|||||||
return fmt.Errorf("--coordinator-url, --token, and --work-dir are required")
|
return fmt.Errorf("--coordinator-url, --token, and --work-dir are required")
|
||||||
}
|
}
|
||||||
if *taskRunner == "" {
|
if *taskRunner == "" {
|
||||||
*taskRunner = "python -m scimesh.worker.task"
|
*taskRunner = "python -I -m scimesh.worker.task"
|
||||||
}
|
}
|
||||||
|
|
||||||
logger := slog.New(slog.NewTextHandler(os.Stderr, nil))
|
logger := slog.New(slog.NewTextHandler(os.Stderr, nil))
|
||||||
|
|||||||
@@ -236,9 +236,9 @@ func stopAgents(agents []*exec.Cmd) {
|
|||||||
// system `python`.
|
// system `python`.
|
||||||
func defaultTaskRunner(venvPython string) string {
|
func defaultTaskRunner(venvPython string) string {
|
||||||
if runtimeStatus(venvPython) {
|
if runtimeStatus(venvPython) {
|
||||||
return venvPython + " -m scimesh.worker.task"
|
return venvPython + " -I -m scimesh.worker.task"
|
||||||
}
|
}
|
||||||
return "python -m scimesh.worker.task"
|
return "python -I -m scimesh.worker.task"
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensureRuntime creates the managed venv and installs scimesh into it, unless
|
// ensureRuntime creates the managed venv and installs scimesh into it, unless
|
||||||
|
|||||||
@@ -89,9 +89,11 @@ func CheckEnvironment(ctx context.Context) CheckReport {
|
|||||||
func CheckEnvironmentWithPython(ctx context.Context, python string) CheckReport {
|
func CheckEnvironmentWithPython(ctx context.Context, python string) CheckReport {
|
||||||
report := CheckReport{Agent: Version, Python: CheckItem{Name: "python", OK: true, Detail: python}}
|
report := CheckReport{Agent: Version, Python: CheckItem{Name: "python", OK: true, Detail: python}}
|
||||||
// The version comes from importlib.metadata, so the wizard can compare the
|
// The version comes from importlib.metadata, so the wizard can compare the
|
||||||
// installed package with the binary version and offer an upgrade.
|
// installed package with the binary version and offer an upgrade. -I keeps
|
||||||
|
// the working directory out of sys.path, so a scimesh checkout in the
|
||||||
|
// wizard's cwd can never shadow the venv installation.
|
||||||
//nolint:gosec // G204: python is a resolved interpreter path, the argument list is constant
|
//nolint:gosec // G204: python is a resolved interpreter path, the argument list is constant
|
||||||
cmd := exec.CommandContext(ctx, python, "-c", "import importlib.metadata as m; print(m.version('scimesh'))")
|
cmd := exec.CommandContext(ctx, python, "-I", "-c", "import importlib.metadata as m; print(m.version('scimesh'))")
|
||||||
out, err := cmd.Output()
|
out, err := cmd.Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// The worker executes workloads by spawning scimesh's task runner, so
|
// The worker executes workloads by spawning scimesh's task runner, so
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ func LoadConfig() (*Config, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(runner) == 0 {
|
if len(runner) == 0 {
|
||||||
runner = []string{"python", "-m", "scimesh.worker.task"}
|
runner = []string{"python", "-I", "-m", "scimesh.worker.task"}
|
||||||
}
|
}
|
||||||
maxTasks := 0
|
maxTasks := 0
|
||||||
if raw := os.Getenv("MAX_TASKS"); raw != "" {
|
if raw := os.Getenv("MAX_TASKS"); raw != "" {
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ func (f *ConfigFile) Config() (*Config, error) {
|
|||||||
config.TaskRunner = f.TaskRunner
|
config.TaskRunner = f.TaskRunner
|
||||||
}
|
}
|
||||||
if len(config.TaskRunner) == 0 {
|
if len(config.TaskRunner) == 0 {
|
||||||
config.TaskRunner = []string{"python", "-m", "scimesh.worker.task"}
|
config.TaskRunner = []string{"python", "-I", "-m", "scimesh.worker.task"}
|
||||||
}
|
}
|
||||||
config.PollInterval = 2 * time.Second
|
config.PollInterval = 2 * time.Second
|
||||||
config.RequestTimeout = 30 * time.Second
|
config.RequestTimeout = 30 * time.Second
|
||||||
|
|||||||
@@ -323,7 +323,7 @@ func (s *Server) ensureVenvTaskRunner() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if venv := s.venvPython(); venv != "" {
|
if venv := s.venvPython(); venv != "" {
|
||||||
file.TaskRunner = []string{venv, "-m", "scimesh.worker.task"}
|
file.TaskRunner = []string{venv, "-I", "-m", "scimesh.worker.task"}
|
||||||
if payload, err := json.MarshalIndent(file, "", " "); err == nil {
|
if payload, err := json.MarshalIndent(file, "", " "); err == nil {
|
||||||
_ = os.WriteFile(s.cfgPath, append(payload, '\n'), 0o600)
|
_ = os.WriteFile(s.cfgPath, append(payload, '\n'), 0o600)
|
||||||
}
|
}
|
||||||
@@ -428,7 +428,7 @@ func (s *Server) handleSaveConfig(w http.ResponseWriter, r *http.Request) {
|
|||||||
// workloads execute through scimesh's task runner, which lives in the venv.
|
// workloads execute through scimesh's task runner, which lives in the venv.
|
||||||
if len(file.TaskRunner) == 0 {
|
if len(file.TaskRunner) == 0 {
|
||||||
if venv := s.venvPython(); venv != "" {
|
if venv := s.venvPython(); venv != "" {
|
||||||
file.TaskRunner = []string{venv, "-m", "scimesh.worker.task"}
|
file.TaskRunner = []string{venv, "-I", "-m", "scimesh.worker.task"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := agent.SaveConfigFile(s.cfgPath, file); err != nil {
|
if err := agent.SaveConfigFile(s.cfgPath, file); err != nil {
|
||||||
|
|||||||
@@ -429,8 +429,8 @@ func TestStartPinsTheVenvTaskRunner(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if len(config.TaskRunner) != 3 || config.TaskRunner[0] != venvPython || config.TaskRunner[1] != "-m" || config.TaskRunner[2] != "scimesh.worker.task" {
|
if len(config.TaskRunner) != 4 || config.TaskRunner[0] != venvPython || config.TaskRunner[1] != "-I" || config.TaskRunner[2] != "-m" || config.TaskRunner[3] != "scimesh.worker.task" {
|
||||||
t.Errorf("task runner = %v, want the venv python runner", config.TaskRunner)
|
t.Errorf("task runner = %v, want the venv python runner with -I", config.TaskRunner)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -450,8 +450,8 @@ func TestSaveConfigPinsVenvRunnerWhenPresent(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if len(config.TaskRunner) != 3 || config.TaskRunner[0] != venvPython {
|
if len(config.TaskRunner) != 4 || config.TaskRunner[0] != venvPython || config.TaskRunner[1] != "-I" {
|
||||||
t.Errorf("task runner = %v, want the venv python", config.TaskRunner)
|
t.Errorf("task runner = %v, want the venv python with -I", config.TaskRunner)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,7 +462,7 @@ func TestTestProbesTheVenvPythonAfterInstall(t *testing.T) {
|
|||||||
// a fake scimesh version so the preflight goes green through the venv.
|
// a fake scimesh version so the preflight goes green through the venv.
|
||||||
venvPython := filepath.Join(server.dir, "venv", "bin", "python")
|
venvPython := filepath.Join(server.dir, "venv", "bin", "python")
|
||||||
_ = os.MkdirAll(filepath.Dir(venvPython), 0o755)
|
_ = os.MkdirAll(filepath.Dir(venvPython), 0o755)
|
||||||
_ = os.WriteFile(venvPython, []byte("#!/bin/sh\nif [ \"$1\" = \"-c\" ]; then echo 9.9.9-test; exit 0; fi\nexit 0\n"), 0o755)
|
_ = os.WriteFile(venvPython, []byte("#!/bin/sh\nfor a in \"$@\"; do if [ \"$a\" = \"-c\" ]; then echo 9.9.9-test; exit 0; fi; done\nexit 0\n"), 0o755)
|
||||||
|
|
||||||
req, _ := http.NewRequestWithContext(context.Background(), http.MethodPost, base+"/api/test", strings.NewReader(`{"coordinator_url":"http://127.0.0.1:1"}`))
|
req, _ := http.NewRequestWithContext(context.Background(), http.MethodPost, base+"/api/test", strings.NewReader(`{"coordinator_url":"http://127.0.0.1:1"}`))
|
||||||
req.Header.Set("Content-Type", "application/json")
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ function draftConfig(){
|
|||||||
cpu_count:state.cpu==='custom'?parseInt($('in-cpu').value||'1',10):0,
|
cpu_count:state.cpu==='custom'?parseInt($('in-cpu').value||'1',10):0,
|
||||||
concurrency:parseInt($('in-conc').value||'1',10)
|
concurrency:parseInt($('in-conc').value||'1',10)
|
||||||
};
|
};
|
||||||
if(state.venvPython)cfg.task_runner=[state.venvPython,'-m','scimesh.worker.task'];
|
if(state.venvPython)cfg.task_runner=[state.venvPython,'-I','-m','scimesh.worker.task'];
|
||||||
return cfg;
|
return cfg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user