Skip to content

chore: bump process-compose from v1.110.0 to v1.116.0 (#2915) - #2916

Merged
mikeland73 merged 5 commits into
jetify-com:mainfrom
jefft:jefft/process-compose-1.116-fix-2915
Sep 13, 2026
Merged

mikeland73 merged 5 commits into
jetify-com:mainfrom
jefft:jefft/process-compose-1.116-fix-2915

Conversation

@jefft

@jefft jefft commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary

This bump fixes a process-compose bug where services with process_healthy dependencies would hang forever (stuck in Pending state) when the target process had no readiness_probe or liveness_probe configured.

process-compose v1.116.0 (commit 85686e5) adds a nil-check in waitIfNeeded() that returns a clear error instead of blocking on a channel that is never closed for processes without probes.

Changes made:

  1. go.mod: changed github.com/f1bonacc1/process-compose v1.64.1 to v1.116.0
  2. internal/devbox/util.go: changed const processComposeVersion = "1.110.0" to "1.116.0"
  3. go mod tidy: updated go.sum and indirect dependencies

Fixes #2915

How was it tested?

First build a devbox with a working #2909 isolated #2906 mariadb plugin (unless those have been merged), plus this PR:

cd /tmp
git clone git@github.com:jetify-com/devbox.git
direnv allow /tmp/devbox
cd devbox
git remote add jefft git@github.com:jefft/devbox.git
git fetch jefft
git checkout -b merge-plugin-fixes main
git merge jefft/jefft/nginx-plugin-fix-2908
git merge jefft/jefft/mysql-plugin-ignore-etc-mysql
git merge jefft/jefft/process-compose-1.116-fix-2915
devbox run build

Then using modified repro script from #2915:

cat > /tmp/mariadb_testhealth.sh <<'EOF'
#!/bin/bash -eu

if [[ -d /tmp/mariadb_testhealth ]]; then
        ( cd /tmp/mariadb_testhealth && devbox services down >/dev/null 2>&1 || : )
  rm -r /tmp/mariadb_testhealth
fi
mkdir /tmp/mariadb_testhealth
cd /tmp/mariadb_testhealth
devbox init
devbox add mariadb
echo "port = $(( 10000 + RANDOM % 50000))" >> devbox.d/mariadb/my.cnf
cat > my_database_using_app <<'EOF2'
#!/bin/bash
# Connect to MariaDBD via unix socket as root.
sudo mariadb --show-warnings -u root --socket "$MYSQL_UNIX_PORT" -e "select 1;"
EOF2
chmod +x ./my_database_using_app

cat > process-compose.yml <<'EOF2'
version: "0.5"

processes:

  myapp:
    depends_on:
      mariadb:
        condition: process_healthy
    command: ./my_database_using_app
EOF2
devbox services up -b
sleep 1
echo "myapp should be Skipped:"
devbox services ls
echo "We should see an error in the process-compose log:"
grep ERR /tmp/process-compose-$USER.log
EOF

# Put our compiled version of devbox ahead of others in PATH
PATH=/tmp/devbox/dist:$PATH bash /tmp/mariadb_testhealth.sh

With the fixed process-compose the myapp service is in Skipped, and the log contains a clear error message:

Starting all services: mariadb_logs, myapp, mariadb 
Process-compose is now running on port 40249
To stop your services, run `devbox services stop`
myapp should be Skipped:
Services running in process-compose:
PID            NAME                NAMESPACE        STATUS         AGE        HEALTH        RESTARTS        EXIT CODE
1673011        mariadb             default          Running        1s         -             0               0
1673058        mariadb_logs        default          Running        0s         -             1               1
0              myapp               default          Skipped        0s         -             0               1
We should see an error in the process-compose log:
26-07-11 02:46:21.849 ERR health dependency defined in 'myapp' but no health check exists in 'mariadb'
26-07-11 02:46:21.850 ERR Error: health dependency defined in 'myapp' but no health check exists in 'mariadb'
26-07-11 02:46:21.850 ERR Error: process myapp won't run
jturner@jturner-desktop:/tmp/devbox$ 

Community Contribution License

All community contributions in this pull request are licensed to the project
maintainers under the terms of the
Apache 2 License.

By creating this pull request, I represent that I have the right to license the
contributions to the project maintainers under the Apache 2 License as stated in
the
Community Contribution License.

This bump fixes a process-compose bug where services with
process_healthy dependencies would hang forever (stuck in Pending state)
when the target process had no readiness_probe or liveness_probe
configured.

v1.116.0 (commit 85686e5) adds a nil-check in waitIfNeeded() that
returns a clear error instead of blocking on a channel that is never
closed for processes without probes.

Fixes jetify-com#2915
mikeland73 and others added 2 commits August 16, 2026 09:48
…-1.116-fix-2915

# Conflicts:
#	go.mod
#	go.sum
The process-compose binary pinned in processComposeVersion and the
process-compose library required in go.mod are independent pins that
nothing keeps in sync. They had already diverged: go.mod sat at v1.64.1
while processComposeVersion had moved on to 1.110.0.

The skew matters because internal/services decodes the running daemon's
REST responses into the library's types, so a JSON tag that changes
between the two versions makes `devbox services ls` misreport state
rather than fail loudly.

Add a test that parses go.mod and asserts the two versions match.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
mikeland73 and others added 2 commits August 16, 2026 12:53
The flake pins a fixed-output hash of the vendored Go module set, so any
go.mod/go.sum change has to be accompanied by `devbox run update-hash`
(as devbox.json's `tidy` script encodes). The process-compose bump
changed the module set without regenerating it, so `nix build .` failed:

    error: hash mismatch in fixed-output derivation 'devbox-0.17.3-go-modules.drv':
             specified: sha256-Tw514qHKDA92LTpTDvEyUFulrR+FIcnqtD/qo6AzBX0=
                got:    sha256-Jyql54LvdqnTHAlyLP1M8hHZGyhFWVCGgWC505AjpQ4=

This broke both the "Test Flake Build" job and the
python_patch_old_glibc testscript, which builds devbox from source
through the glibc-patch flake and so hit the same stale hash.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mikeland73
mikeland73 merged commit 63ef918 into jetify-com:main Sep 13, 2026
27 checks passed
mikeland73 pushed a commit that referenced this pull request Sep 13, 2026
…cies (#2915) (#2917)

## Summary

Adds readiness_probe to mariadb, mysql, redis, valkey (using native CLI
ping commands), and apache, nginx (using http_get probes).  PostgreSQL
already had one (pg_isready).

This enables consumers to use `condition: process_healthy` in their
depends_on configuration, ensuring downstream services do not start
until their dependencies are actually accepting connections.

Fixes (along with #2916) #2915

## How was it tested?

First build a devbox with a working
#2909 isolated
#2906 mariadb plugin (unless
those have been merged), plus this PR:

```sh
cd /tmp
git clone git@github.com:jetify-com/devbox.git devbox-2915
direnv allow /tmp/devbox-2915
cd devbox-2915
git remote add jefft git@github.com:jefft/devbox.git
git fetch jefft
git checkout -b merge-plugin-fixes main
git merge --no-edit jefft/jefft/nginx-plugin-fix-2908
git merge --no-edit jefft/jefft/mysql-plugin-ignore-etc-mysql
git merge --no-edit jefft/jefft/plugin_readiness_probes-fix-2915
devbox run build
```

Then to illustrate scripts waiting for their services to come up:

```bash
cat > /tmp/testhealth.sh <<'EOF'
#!/bin/bash -eu

if [[ -d /tmp/testhealth ]]; then
        ( cd /tmp/testhealth && devbox services down >/dev/null 2>&1 || : )
  rm -r /tmp/testhealth
fi
mkdir /tmp/testhealth
cd /tmp/testhealth

cat > devbox.json <<'EOF2'
{
  "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/main/.schema/devbox.schema.json",
  "packages": [
    "mariadb@latest",
    "apache@latest",
    "nginx@latest",
    "redis@latest",
    "valkey@latest"
  ],
  "env": { 
    "HTTPD_PORT": "11101",
    "NGINX_WEB_PORT": "11102",
    "VALKEY_PORT": "11103"
  },
  "shell": {
    "init_hook": [
      "echo 'Welcome to devbox!' > /dev/null"
    ],
    "scripts": {
      "test": [
        "echo \"Error: no test specified\" && exit 1"
      ]
    }
  }
}
EOF2
devbox services ls   # create devbox.d/* dirs

echo "port = $(( 10000 + RANDOM % 50000))" >> devbox.d/mariadb/my.cnf
cat > my_database_using_app <<'EOF2'
#!/bin/bash
# Connect to MariaDBD via unix socket as root.
sudo mariadb --show-warnings -u root --socket "$MYSQL_UNIX_PORT" -e "select 1;"
EOF2
chmod +x ./my_database_using_app

cat > process-compose.yml <<'EOF2'
version: "0.5"

processes:

  mariadb_tester:
    depends_on:
      mariadb:
        condition: process_healthy
    command: ./my_database_using_app

  apache_tester:
    depends_on:
      apache:
        condition: process_healthy
    command: curl http://localhost:11101

  nginx_tester:
    depends_on:
      nginx:
        condition: process_healthy
    command: curl http://localhost:11102

  valkey_tester:
    depends_on:
      valkey:
        condition: process_healthy
    command: valkey-cli -p $VALKEY_PORT ping

EOF2
which devbox
devbox services up
EOF

# Put our compiled version of devbox ahead of others in PATH
PATH=/tmp/devbox-2915/dist:$PATH bash /tmp/testhealth.sh
```

The `*_tester` dependent services now work, coming up (after a delay) as
Completed::

```bash
jturner@jturner-desktop:/tmp/testhealth$ devbox services ls
Services running in process-compose:
PID            NAME                  NAMESPACE        STATUS           AGE        HEALTH        RESTARTS        EXIT CODE
1982981        mariadb_logs          default          Running          5s         -             0               0
1982980        redis                 default          Running          5s         Ready         0               0
1982983        apache                default          Running          5s         Ready         0               0
1982984        apache-access         default          Running          5s         -             0               0
1983151        mariadb_tester        default          Completed        0s         -             0               0
1983126        apache_tester         default          Completed        0s         -             0               0
1983127        valkey_tester         default          Completed        0s         -             0               0
1982982        nginx                 default          Running          5s         Ready         0               0
1982978        nginx-error           default          Running          5s         -             0               0
1982974        nginx-access          default          Running          5s         -             0               0
1982977        valkey                default          Running          5s         Ready         0               0
1982976        apache-error          default          Running          5s         -             0               0
1983125        nginx_tester          default          Completed        0s         -             0               0
1982973        mariadb               default          Running          5s         Ready         0               0
```


[devbox_dependent_services.webm](https://github.com/user-attachments/assets/51e78b8f-a848-4a36-9ac0-2745852f8e4a)


## Community Contribution License

All community contributions in this pull request are licensed to the
project
maintainers under the terms of the
[Apache 2 License](https://www.apache.org/licenses/LICENSE-2.0).

By creating this pull request, I represent that I have the right to
license the
contributions to the project maintainers under the Apache 2 License as
stated in
the
[Community Contribution
License](https://github.com/jetify-com/opensource/blob/main/CONTRIBUTING.md#community-contribution-license).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

Fix process-compose bug and implement readiness_probes to allow dependencies on plugin services

2 participants