Skip to content

ComfyUI Base 3.20.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 16:23
· 6 commits to main since this release
9168730

ComfyUI Base 3.20.1: the testbed names a port's holder on Linux without lsof (#37)

Workspace integration run 39045535460 (job `workspace`, on the free
`soulcraft-hf` runner, a Hugging Face CPU Space container) failed two
base unit tests in `suite/test_newest.py`:

`test_unit_testbed_stops_only_the_server_it_started_and_refuses_a_foreign_port`
(line 482): expected `port N is already in use by pid `, got
`pid ?`.

`test_unit_testbed_owned_names_only_its_own_server_and_each_run_folder_gets_its_own`
(line 530): got `is held by pid ?, which this testbed did not start`.

Cause: that container has no `lsof`, and `testbed.sh`'s
`port_holders` answered `?` for any port that accepts a connection
when lsof is missing. GitHub's ubuntu runners have lsof, so the base's
own CI passed.

Change

  • `testbed.sh`: `port_holders` tries lsof, then (Linux) a new
    `proc_port_holders`: the LISTEN rows (st `0A`) of `/proc/net/tcp`
    and `tcp6` for the port give socket inodes, and one `ls -l
    /proc/[0-9]*/fd` gives the pids whose fds link those inodes (every
    process of this user, no extra tools, busybox-safe). `?` remains only
    for a port that answers when neither lsof nor /proc can name the holder.
    An lsof that is present but sees nothing now also falls through to
    /proc.
  • `suite/test_newest.py`: a `_holder(p, port)` helper decides,
    independently of `testbed.sh`, whether this host can see the listener
    (`lsof -t` names the pid, or `/proc//fd` holds a socket link).
    Both tests demand the pid whenever it can, and accept `?` only when it
    cannot. So on the HF runner, where /proc is readable, they now demand
    the real pid too. The second assertion also gained the trailing comma
    (`held by pid ,`), so a pid prefix no longer matches.
  • VERSION 3.20.1, handbook line 3 and a §10 entry; `package.py --base`
    rebuilt the zip and `--base --check` says it is current.

Tested

Nothing ran on the Mac (no local suites). `bash -n testbed.sh` and
`py_compile` pass, and the awk parsing was checked by hand against a
sample `/proc/net/tcp`. This PR's CI is the gate on ubuntu (lsof
path); the soulcraft-hf integration run after the pin move is the check
on the /proc path.

🤖 Generated with Claude Code

Co-authored-by: Claude Opus 5.5 noreply@anthropic.com

The zip is what a pod installs. Handbook: comfyui-base-handbook.md