Pulp Engine v0.44.2 — Release Notes
Patch release. Fixes a Prisma query-engine binary mismatch that caused Postgres mode to crash-loop on startup in all published GHCR images (v0.43.0–v0.44.1). File mode was unaffected and is not changed in this release.
What changed
Fix: Prisma binary target for Debian Bookworm / OpenSSL 3.0.x runtime (apps/api/src/prisma/schema.prisma)
Symptom: When running the published Docker image with STORAGE_MODE=postgres,
the application crash-looped immediately after migrations completed with a
PrismaClientInitializationError. The error was present in every published image from
v0.43.0 through v0.44.1. File mode was not affected because it does not use Prisma.
Root cause: The published images contained only the
libquery_engine-debian-openssl-1.1.x.so.node Prisma query engine binary. The runtime
base image (node:22-slim, Debian Bookworm) links against OpenSSL 3.0.x. Prisma cannot
load the 1.1.x engine binary in a 3.0.x environment, so the process exits before it can
serve any requests.
Without an explicit binaryTargets declaration, the Prisma client generator resolves the
binary target as native at generate time. Depending on the builder environment and any
pre-existing cached binaries, native did not reliably resolve to debian-openssl-3.0.x
for the runtime image, producing the mismatched artifact.
Fix: Add debian-openssl-3.0.x to binaryTargets in the Prisma schema generator
block:
generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "debian-openssl-3.0.x"]
}
The Dockerfile builder stage runs prisma generate twice — once in the full workspace
build and once inside the pnpm deploy bundle — so both passes now embed the correct
OpenSSL 3.0.x engine binary for the Bookworm runtime.
SQL Server: Unaffected by this Prisma binary/runtime issue. The SQL Server storage
adapter uses the raw mssql npm package with parameterized SQL; it does not use Prisma.
Validation
pnpm db:generate— Prisma schema accepted,debian-openssl-3.0.xtarget downloadedpnpm version:check— all fourpackage.jsonfiles at0.44.2, release notes presentpnpm lint— 0 errorspnpm build— clean
Docker artifact proof (required for this release — defect was artifact-level):
# Build local RC image
docker build \
--build-arg VERSION=v0.44.2 \
--build-arg GIT_SHA=$(git rev-parse HEAD) \
--build-arg APP_VERSION=0.44.2 \
-t pulp-engine:v0.44.2-rc .
# Confirm the 3.0.x engine binary is present in the artifact
docker run --rm pulp-engine:v0.44.2-rc \
find /app/node_modules/.prisma/client -name "*.node" -o -name "libquery_engine*"
# Expected: libquery_engine-debian-openssl-3.0.x.so.node is listed
# Postgres smoke test — directly re-tests the failure mode
docker network create pulp-engine-rc
docker run -d --name pg-test --network pulp-engine-rc \
-e POSTGRES_DB=pulp-engine -e POSTGRES_USER=pulp-engine -e POSTGRES_PASSWORD=pulp-engine \
postgres:16-alpine
docker run --rm --network pulp-engine-rc \
-e DATABASE_URL="postgresql://pulp-engine:pulp-engine@pg-test:5432/pulp-engine?schema=public" \
--entrypoint /app/node_modules/.bin/prisma pulp-engine:v0.44.2-rc \
migrate deploy --schema /app/src/prisma/schema.prisma
docker run -d --name pulp-engine-rc --network pulp-engine-rc -p 3000:3000 \
-e STORAGE_MODE=postgres \
-e DATABASE_URL="postgresql://pulp-engine:pulp-engine@pg-test:5432/pulp-engine?schema=public" \
-e API_KEY_ADMIN=test-key \
pulp-engine:v0.44.2-rc
# (allow ~15s for startup)
curl -sf http://localhost:3000/health/ready && echo "READY"
docker rm -f pulp-engine-rc pg-test && docker network rm pulp-engine-rc
App must reach READY without crash-looping.
Upgrade
No breaking changes. No env var changes. No schema changes. Drop-in replacement for v0.44.0 and v0.44.1.
docker pull ghcr.io/OWNER/pulp-engine:v0.44.2
Operators running Postgres mode on any published image before this release should upgrade immediately. File-mode operators are not affected but may upgrade at their convenience.