feat(package-vulnerability-scanner): batch package reads with per-item resilience - #457
Draft
amylin1249 wants to merge 4 commits into
Draft
feat(package-vulnerability-scanner): batch package reads with per-item resilience#457amylin1249 wants to merge 4 commits into
amylin1249 wants to merge 4 commits into
Conversation
This was referenced Jul 29, 2026
amylin1249
force-pushed
the
pvs-05-packages-engine
branch
from
July 29, 2026 17:50
4c24b3d to
23c9075
Compare
Contributor
Extension release summary😴 Changed but won't releaseThe following extensions have code changes but the manifest version hasn't been incremented:
If you intended to release these changes, update the See the contributing guide for details. |
amylin1249
marked this pull request as draft
July 31, 2026 15:43
amylin1249
force-pushed
the
pvs-05-packages-engine
branch
from
August 1, 2026 01:26
23c9075 to
db3b32b
Compare
amylin1249
force-pushed
the
pvs-05-packages-engine
branch
3 times, most recently
from
August 1, 2026 04:58
d000879 to
15810ab
Compare
amylin1249
force-pushed
the
pvs-05-packages-engine
branch
from
August 1, 2026 05:46
15810ab to
6e13c22
Compare
…m resilience
Replace the single-item GET /api/packages/{guid} with a batched
POST /api/packages that reads every requested item in one request instead of
one round trip per content item. An unreadable item is reported on that item
(with the human-readable Connect message, not a raw dump) rather than
failing the whole scan; a missing Visitor API Key integration still fails
the whole request so the setup screen shows.
Adds the administrator "all content" path, which reads the server-wide
packages endpoint once and groups by guid instead of one request per item,
since that's the only way thousands of items stay fast.
packages.ts keeps fetchPackagesForContent and clearAllPackages as thin
compatibility shims for ContentList.vue's not-yet-updated caller; both go
away when that file is rewritten in a later PR.
…ecord fail the whole admin scan
… its own timeout budget The administrator "all content" read paginates every package record on the server, so its runtime scales with the deployment, not with one request. Under the shared 30s per-call budget a large server would time out partway through, retry the whole pass twice more, and then fail the scan the batching was added to make possible. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… when there is nothing left to fetch Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
amylin1249
force-pushed
the
pvs-05-packages-engine
branch
from
August 1, 2026 15:45
6e13c22 to
64a14cc
Compare
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.
Split out of #428 into small, reviewable PRs (tracking issue #415). Stacked 5/10 — stacked on #456, merge bottom-up.
Replaces the single-item
GET /api/packages/{guid}with a batchedPOST /api/packagesthat reads every requested item in one request, plus an administrator "all content" path that reads Connect's server-wide packages endpoint once instead of item by item. An unreadable item is reported on that item rather than failing the whole scan.The server-wide read gets its own
SERVER_WIDE_TIMEOUT_SECONDS(300s) rather than the 30s per-call budget: it paginates every package record on the server, so its runtime scales with the size of the deployment. Under the shared budget a large server would time out partway through, retry the whole pass twice more, and then fail the scan this batching exists to make possible.The packages store also clears its previous failure before the empty-list early return, so a caller that ends up with nothing left to fetch still retires the last attempt's error (see #459, which depends on this).