============================= test session starts ============================== platform darwin -- Python 3.13.9, pytest-8.4.2, pluggy-1.6.0 -- /nix/store/xcjk9ill54kjk8mzgq6yydnx9015lidg-python3-3.13.9/bin/python3.13 cachedir: .pytest_cache rootdir: /nix/var/nix/builds/nix-49889-4089974294 collected 23 items tests-functional/test_eval.py::test_flake PASSED [ 4%] tests-functional/test_eval.py::test_query_cache_status PASSED [ 8%] tests-functional/test_eval.py::test_expression PASSED [ 13%] tests-functional/test_eval.py::test_input_drvs PASSED [ 17%] tests-functional/test_eval.py::test_eval_error PASSED [ 21%] tests-functional/test_eval.py::test_no_gcroot_dir PASSED [ 26%] tests-functional/test_eval.py::test_daemon_only_settings_do_not_warn PASSED [ 30%] tests-functional/test_eval.py::test_constituents PASSED [ 34%] tests-functional/test_eval.py::test_constituents_all PASSED [ 39%] tests-functional/test_eval.py::test_constituents_glob_misc PASSED [ 43%] tests-functional/test_eval.py::test_constituents_cycle PASSED [ 47%] tests-functional/test_eval.py::test_constituents_error PASSED [ 52%] tests-functional/test_eval.py::test_empty_needed PASSED [ 56%] tests-functional/test_eval.py::test_apply PASSED [ 60%] tests-functional/test_eval.py::test_select_flake PASSED [ 65%] tests-functional/test_eval.py::test_recursion_error PASSED [ 69%] tests-functional/test_eval.py::test_no_instantiate_mode PASSED [ 73%] tests-functional/test_eval.py::test_fod_with_uncached_input_issue413[file] PASSED [ 78%] tests-functional/test_eval.py::test_fod_with_uncached_input_issue413[http] PASSED [ 82%] tests-functional/test_eval.py::test_worker_log_format_survives_fork PASSED [ 86%] tests-functional/test_eval.py::test_worker_restart_on_last_job_exits_cleanly PASSED [ 91%] tests-functional/test_eval.py::test_fetchers_survive_worker_restart PASSED [ 95%] tests-functional/test_eval.py::test_workers_do_not_race_flake_fetch FAILED [100%] =================================== FAILURES =================================== _____________________ test_workers_do_not_race_flake_fetch _____________________ tmp_path = PosixPath('/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0') def test_workers_do_not_race_flake_fetch(tmp_path: Path) -> None: """Workers fetching the same flake input concurrently spam "waiting for another Nix process to finish fetching input" (issue #432).""" env = _hermetic_nix_env(tmp_path) repo = tmp_path / "flake" repo.mkdir() jobs = "\n".join( f""" job-{i} = derivation {{ name = "race-{i}"; system = "x86_64-linux"; builder = "/bin/sh"; args = [ "-c" "echo {i} > $out" ]; }};""" for i in range(8) ) repo.joinpath("flake.nix").write_text(f"{{ outputs = _: {{ hydraJobs = {{ {jobs} }}; }}; }}") subprocess.run(["git", "init", "-q"], cwd=repo, check=True, env=env) subprocess.run(["git", "add", "flake.nix"], cwd=repo, check=True, env=env) subprocess.run( ["git", "-c", "user.email=t@t", "-c", "user.name=t", "commit", "-qm", "init"], cwd=repo, check=True, env=env, ) res = subprocess.run( [ str(BIN), "--gc-roots-dir", str(tmp_path / "gc"), "--workers", "8", "-vvvv", # TODO: drop after darwin fast-path debugging *COMMON_FLAGS, "--flake", f"git+file://{repo}#hydraJobs", ], env=env, text=True, check=True, capture_output=True, ) assert len(res.stdout.splitlines()) == 8 debug = [ line for line in res.stderr.splitlines() if "substitut" in line or "waiting for another" in line or "cached input" in line ] > assert "waiting for another Nix process" not in res.stderr, "\n".join(debug) E AssertionError: substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': created E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': woken up E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': init E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': done E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': in final_awaiter E worker event loop worked goal 'substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source'' for 6.095ms E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': goal destroyed E substitution of input 'git+file:///nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/flake?ref=refs/heads/master&rev=654d100861eb0d4244b7f5a1081565c738143af6' failed: error: path '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source' is required, but there is no substituter that can build it E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': created E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': woken up E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': init E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': created E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': woken up E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': init E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': created E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': woken up E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': init E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': done E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': in final_awaiter E worker event loop worked goal 'substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source'' for 8.675ms E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': goal destroyed E substitution of input 'git+file:///nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/flake?ref=refs/heads/master&rev=654d100861eb0d4244b7f5a1081565c738143af6' failed: error: path '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source' is required, but there is no substituter that can build it E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': created E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': woken up E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': init E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': created E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': woken up E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': init E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': created E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': woken up E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': init E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': done E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': in final_awaiter E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': created E worker event loop worked goal 'substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source'' for 7.492ms E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': woken up E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': init E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': goal destroyed E substitution of input 'git+file:///nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/flake?ref=refs/heads/master&rev=654d100861eb0d4244b7f5a1081565c738143af6' failed: error: path '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source' is required, but there is no substituter that can build it E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': done E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': in final_awaiter E worker event loop worked goal 'substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source'' for 6.866ms E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': goal destroyed E substitution of input 'git+file:///nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/flake?ref=refs/heads/master&rev=654d100861eb0d4244b7f5a1081565c738143af6' failed: error: path '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source' is required, but there is no substituter that can build it E waiting for another Nix process to finish fetching input 'git+file:///nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/flake?ref=refs/heads/master&rev=654d100861eb0d4244b7f5a1081565c738143af6'... E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': done E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': done E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': in final_awaiter E worker event loop worked goal 'substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source'' for 6.608ms E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': in final_awaiter E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': goal destroyed E worker event loop worked goal 'substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source'' for 6.295ms E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': goal destroyed E substitution of input 'git+file:///nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/flake?ref=refs/heads/master&rev=654d100861eb0d4244b7f5a1081565c738143af6' failed: error: path '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source' is required, but there is no substituter that can build it E substitution of input 'git+file:///nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/flake?ref=refs/heads/master&rev=654d100861eb0d4244b7f5a1081565c738143af6' failed: error: path '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source' is required, but there is no substituter that can build it E waiting for another Nix process to finish fetching input 'git+file:///nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/flake?ref=refs/heads/master&rev=654d100861eb0d4244b7f5a1081565c738143af6'... E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': done E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': in final_awaiter E worker event loop worked goal 'substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source'' for 5.775ms E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': goal destroyed E substitution of input 'git+file:///nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/flake?ref=refs/heads/master&rev=654d100861eb0d4244b7f5a1081565c738143af6' failed: error: path '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source' is required, but there is no substituter that can build it E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': done E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': in final_awaiter E worker event loop worked goal 'substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source'' for 5.593ms E substitution of '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source': goal destroyed E substitution of input 'git+file:///nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/flake?ref=refs/heads/master&rev=654d100861eb0d4244b7f5a1081565c738143af6' failed: error: path '/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/store/ymfllf1cyi2lh9iflx6ckp9dvmlkrhv3-source' is required, but there is no substituter that can build it E assert 'waiting for... Nix process' not in 'executing N...cess 50048\n' E E 'waiting for another Nix process' is contained here: E executing Nix database schema migration '20260309-drop-redundant-indexreferrer'... E evaluating file '«nix-internal»/derivation-internal.nix' E locking path "/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/home/.cache/nix/fetcher-locks/edda52db1b279b22dafb6a6cdedec2acbb28f6a696964798c93707cdaf9bba49" E lock acquired on "/nix/var/nix/builds/nix-49889-4089974294/pytest-of-_nixbld1/pytest-0/test_workers_do_not_race_flake0/home/.cache/nix/fetcher-locks/edda52db1b279b22daf... E E ...Full output truncated (603 lines hidden), use '-vv' to show tests-functional/test_eval.py:907: AssertionError =========================== short test summary info ============================ FAILED tests-functional/test_eval.py::test_workers_do_not_race_flake_fetch - AssertionError: substitution of '/nix/var/nix/builds/nix-49889-4089974294/p... ========================= 1 failed, 22 passed in 3.88s =========================