fix: upgrade to node:24-trixie and rebuild sqlite3 from source#1576
Merged
Conversation
79db177 to
c696cb0
Compare
e3e8ae9 to
4d3601e
Compare
4d3601e to
9e9c812
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: Container cleanup skipped when health checks fail
- Added an EXIT trap in the smoke-test run block so
cadt-testis always removed even when health checks or early exits fail.
- Added an EXIT trap in the smoke-test run block so
Or push these changes by commenting:
@cursor push a446245e02
Preview (a446245e02)
diff --git a/.github/workflows/docker-smoke-test.yml b/.github/workflows/docker-smoke-test.yml
--- a/.github/workflows/docker-smoke-test.yml
+++ b/.github/workflows/docker-smoke-test.yml
@@ -33,6 +33,7 @@
- name: Verify container starts and health endpoints respond
run: |
+ trap 'docker rm -f cadt-test > /dev/null 2>&1 || true' EXIT
docker run -d --name cadt-test \
-e USE_SIMULATOR=true \
-e BIND_ADDRESS=0.0.0.0 \This Bugbot Autofix run was free. To enable autofix for future PRs, go to the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 9e9c812. Configure here.
The node:24 image defaults to Debian Bookworm (glibc 2.36), but the sqlite3 prebuilt binary requires glibc 2.38. This causes a fatal GLIBC_2.38-not-found crash at startup, putting all CADT pods into CrashLoopBackOff. Two-part fix: - Switch base image from node:24 (Bookworm) to node:24-trixie (Debian 13 stable, glibc 2.41) so prebuilt native binaries are compatible with the container's C library - Add npm rebuild sqlite3 --build-from-source as a safety net so the native addon is always compiled against the container's actual glibc
9e9c812 to
4947c31
Compare
Build the Docker image and verify it works on every PR and push to develop/main/v2-*. Two checks: 1. Native module load — catches glibc mismatches like the GLIBC_2.38 error that put all CADT pods into CrashLoopBackOff 2. Container startup — runs the app with USE_SIMULATOR=true and waits for the "Server listening" log message
4947c31 to
a1b24fd
Compare
Starttoaster
approved these changes
Apr 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
node:24Docker image defaults to Debian Bookworm (glibc 2.36)sqlite3npm package (v6.0.1) downloads a prebuilt native binary viaprebuild-installthat requires glibc 2.38GLIBC_2.38 not founderror at container startup, putting CADT pods into CrashLoopBackOff across all chiamanaged namespacesChanges
node:24(Bookworm / glibc 2.36) tonode:24-trixie(Debian 13 stable since Aug 2025 / glibc 2.41) — prebuilt native binaries are now compatible with the container's C librarynpm rebuild sqlite3 --build-from-sourceas a safety net — compiles the native addon against the container's actual glibc, guarding against future prebuilt binary mismatchesTest plan
Docker Smoke TestCI workflow passes on this PRGLIBC_2.38 not founderrorNote
Medium Risk
Moderate risk because it changes the production container base image and native module build behavior, which can affect runtime compatibility and image size/build time.
Overview
Fixes a container startup failure caused by
sqlite3native binary/glibc incompatibility by switching the Docker base image fromnode:24tonode:24-trixieand forcingsqlite3to rebuild from source duringnpm install.Adds a GitHub Actions
Docker Smoke Testworkflow that builds the image, verifiesrequire('sqlite3')works, starts the container, and checks/health,/v1/health, and/v2/healthendpoints on PRs and pushes todevelop/main/v2-*.Reviewed by Cursor Bugbot for commit a1b24fd. Bugbot is set up for automated code reviews on this repo. Configure here.