build(deps): bump python from 3.12-slim to 3.14-slim in /admin-api in the docker-admin-api-minor-patch group#1
Closed
dependabot[bot] wants to merge 1 commit into
Conversation
Bumps the docker-admin-api-minor-patch group in /admin-api with 1 update: python. Updates `python` from 3.12-slim to 3.14-slim --- updated-dependencies: - dependency-name: python dependency-version: 3.14-slim dependency-type: direct:production dependency-group: docker-admin-api-minor-patch ... Signed-off-by: dependabot[bot] <support@github.com>
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
ciprianiacobescu
approved these changes
May 16, 2026
Contributor
ciprianiacobescu
left a comment
There was a problem hiding this comment.
Bulk approval of Dependabot dependency update. Manual merge after CI workflow remediation completes.
14 tasks
Contributor
Author
|
Looks like python is no longer updatable, so this is no longer needed. |
ciprianiacobescu
pushed a commit
that referenced
this pull request
May 23, 2026
…vices, errors surface
Three restore-correctness bugs surfaced when validating that
backup → down -v → restore actually achieves the user's success
criterion ("after a restore I do not need to change anything").
Bug #4: dev-backup.sh:367 — `pg_dump` was called without `--clean
--if-exists`. The resulting dump had no DROP statements. When
dev-restore.sh piped it into psql against a non-empty schema (e.g.,
a freshly-seeded one), every INSERT failed with duplicate-key /
already-exists errors. Fix: add `--clean --if-exists` so the dump
emits `DROP INDEX IF EXISTS` + `DROP TABLE IF EXISTS` at the head.
Bug #5: dev-restore.sh:441 — `psql ... 2>/dev/null` silenced ALL
postgres errors. A 100%-broken restore would report "✅ pg_dump
restored to mintkey database" and the operator would not know.
Fix: remove `2>/dev/null`; add `--set ON_ERROR_STOP=on` so psql
exits non-zero on the FIRST error (rather than racing through
the dump leaving the DB partly-applied).
Bug #6: dev-restore.sh — did NOT stop services that hold open
postgres connections (keycloak, admin-api, mcp-server, broker,
kong-syncer, admin-ui). With the new `--clean` dump, the DROP
TABLE statements would block on row locks held by those services.
Fix: `docker compose stop` the connection-holders before psql,
then `docker compose up -d --wait` after.
Verification (this commit):
- Took a backup with the fix; decrypted+gunzipped the dump:
DROP TABLE statements: ~110
DROP INDEX statements: ~300
CREATE TABLE statements: ~106
INSERT INTO statements: ~5 (just the seed-job-default rows)
→ Bug #4 confirmed fixed.
End-to-end round-trip test (backup → down -v → restore → verify
agent+service intact) is the next step; user will create an
agent + service first so there's real data to round-trip.
Counts now of session-discovered backup/restore bugs:
#1 ✅ fixed (51e7077) pg_dump silently skipped — Service field
#2 ✅ fixed (a47a4e6) vault-adapter detection — same class
#3 ✅ fixed (49d519a) host-file admin_password drift
#3a ✅ fixed (77ab040) Makefile colon-pattern blocked make admin-password
#4 ✅ fixed (this commit) pg_dump --clean
#5 ✅ fixed (this commit) psql errors surfaced
#6 ✅ fixed (this commit) restore stops dependent services
ciprianiacobescu
pushed a commit
that referenced
this pull request
May 23, 2026
…pter + proxy-plugin Round-trip validation surfaced 2 more bugs after #4 #5 #6 were fixed. Bug #7: dev-backup.sh:367 — pg_dump was called with `--no-privileges`, which strips ALL `GRANT` / `REVOKE` statements from the dump. After restore (DROP TABLE + CREATE TABLE), `mintkey_app` and `mintkey_subscriber` had zero privileges on every table → every query from admin-api / mcp-server / kong-syncer / proxy-plugin failed with "permission denied for table services|agents|...". Fix: drop `--no-privileges`. The dump now emits the same GRANTs that liquibase migration 009-roles.yaml normally creates (212 GRANTs in a fresh dump vs 0 before). Verified post-restore: agent key → 200 OK without manual GRANT intervention. Bug #8: dev-restore.sh — the service stop-list before the postgres restore did not include `vault-adapter` or `proxy-plugin`. Two distinct failures result: - vault-adapter holds an open SQLite file handle on /var/lib/vault/vault.db inside the vault_data volume. When that volume is replaced from the backup tarball, the kernel keeps serving the OLD inode to vault-adapter's file descriptor. Net effect: `GetCredential` returns "not found" for every credential even though the restored sqlite file is correct on disk. Proxy call → HTTP 502 "vault error". - proxy-plugin caches DEKs in-memory keyed by service_id. If service IDs survive the restore (they do — same UUIDs in the dump), the cache may shortcut to a stale "not found" or to an encrypted-DEK that the restored KEK can no longer decrypt. Fix: add both to the stop-list. They get cleanly restarted by the post-restore `docker compose up -d --wait`. End-to-end verification with both fixes (round-trip test): - backup → docker compose down -v → up → dev-restore.sh - Zero manual SQL, zero manual restarts needed - Agent key works, request_token issues JWT, proxy call to GitHub API returns 200 authenticated as ciprianiacobescu - make admin-password returns the PRE-backup password - postgres row counts match baseline exactly (1/1/1/1/1/1/8) Counts of session-discovered backup/restore bugs (all fixed): #1 ✅ pg_dump silently skipped — Service field (51e7077) #2 ✅ vault-adapter detection — same class (a47a4e6) #3 ✅ host-file admin_password drift (49d519a) #3a ✅ Makefile colon-pattern blocked `make admin-password` (77ab040) #4 ✅ pg_dump --clean --if-exists (a1dc9e3) #5 ✅ psql errors surfaced (a1dc9e3) #6 ✅ restore stops dependent services (a1dc9e3) #7 ✅ this commit — pg_dump includes GRANTs #8 ✅ this commit — restore stops vault-adapter + proxy-plugin
ciprianiacobescu
pushed a commit
that referenced
this pull request
May 23, 2026
…lthchecks Round-trip validation v3 surfaced 2 more bugs after #4–#8 were fixed. Bug #9: dev-restore.sh processed manifest entries in order. The pg_dump iteration stopped services, applied the dump, restarted them. Then the volume iterations (vault_data, vault_kek, bootstrap_secrets) restored tarballs WHILE vault-adapter / proxy-plugin were already running with stale file handles into those volumes. Net effect: post-restore the volumes were correct on disk, but vault-adapter served "GetCredential not found" from the old inode → proxy → HTTP 502 "vault error". Fix: after the manifest loop completes (so ALL volumes + the pg_dump are restored), restart every data-dependent service ONCE. This drops all stale handles + in-memory caches regardless of manifest order. Bug #10: `docker compose restart` is fire-and-forget. It returns as soon as the docker daemon kicks the containers, NOT when they're actually responsive. End-to-end test showed admin-ui returning fast enough to confuse the verifier into "Connection reset by peer" while uvicorn was still bootstrapping in mcp-server / admin-api. Fix: chain `docker compose up -d --wait --timeout 180` after the restart. up -d is a no-op for already-running containers, but --wait blocks until every service's compose healthcheck passes (or times out). Callers can now hit /v1/tools/list_services immediately after the script returns and get a real response, not Connection-reset. Round-trip test v3 (with #7 #8 #9 #10): backup → docker compose down -v → up → dev-restore.sh → verify WITHOUT ANY manual SQL, manual GRANTs, manual restarts, or sleeps: [1/4] list_services HTTP 200 ✅ [2/4] request_token HTTP 200 ✅ [3/4] proxy → GitHub HTTP 200 ✅ authenticated as ciprianiacobescu [4/4] admin password yAPal2y2J... ✅ matches pre-backup Success criterion met: "after restore I do not need to change anything." Final tally of session-discovered backup/restore bugs (all fixed): #1 ✅ pg_dump silently skipped — Service field (51e7077) #2 ✅ vault-adapter detection — same class (a47a4e6) #3 ✅ host-file admin_password drift (49d519a) #3a ✅ Makefile colon-pattern blocked make admin-password (77ab040) #4 ✅ pg_dump --clean --if-exists (a1dc9e3) #5 ✅ psql errors surfaced (a1dc9e3) #6 ✅ restore stops dependent services (a1dc9e3) #7 ✅ pg_dump includes GRANTs (2fba9c3) #8 ✅ restore stops vault-adapter + proxy-plugin (2fba9c3) #9 ✅ this commit — post-loop service restart, manifest-order independent #10 ✅ this commit — restart waits for healthchecks
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.
Bumps the docker-admin-api-minor-patch group in /admin-api with 1 update: python.
Updates
pythonfrom 3.12-slim to 3.14-slimDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore <dependency name> major versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)@dependabot ignore <dependency name> minor versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)@dependabot ignore <dependency name>will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)@dependabot unignore <dependency name>will remove all of the ignore conditions of the specified dependency@dependabot unignore <dependency name> <ignore condition>will remove the ignore condition of the specified dependency and ignore conditions