Working Branch for PLP fixes#271
Merged
Merged
Conversation
sirugh
commented
Apr 30, 2026
| */ | ||
|
|
||
| // Mock implementation of @adobe/helix-shared-string for Jest tests | ||
| /** |
Collaborator
Author
There was a problem hiding this comment.
Tests the path sanitization change. Move this to plp branch regardless.
sirugh
commented
May 1, 2026
…mory Signed-off-by: Stephen Rugh <rugh@adobe.com>
Signed-off-by: Stephen Rugh <rugh@adobe.com>
…talog 100-product limit Passing all published SKUs in a single query fails when the catalog exceeds 100 products (observed at 23,398 SKUs: "Product count exceeds the maximum allowed (100)"). With no query result, every published product appears redundant and risks mass unpublishing. Fix: split SKUs into batches of 50 (reusing createBatches/BATCH_SIZE) and fan out requests in parallel, then merge results before the redundancy check. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ability. add watchdog exit script to exit early incase of recurring failures at commerce api (504, etc).
keoko
reviewed
May 5, 2026
keoko
reviewed
May 5, 2026
keoko
reviewed
May 5, 2026
emipallares
reviewed
May 5, 2026
Co-authored-by: Natxo Cabré <natxo.cabre@gmail.com>
…r-all-categories; output to local-data/
- adds render-all-categories prefix alongside check-product-changes
- saves files to local-data/{prefix}/ (project-root-anchored via __dirname)
- uses path.basename instead of replace to derive local filenames
- anchors dotenv to project root so script works from any cwd
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…p-clean-up
Catalog Service GraphQL rejects queries with >100 SKUs ("Product count exceeds
the maximum allowed (100)"). The batching added in 4625e42 originally used
BATCH_SIZE=50, which was safe, but 22f211d raised BATCH_SIZE to 600 for the
AEM Admin rate limit, inadvertently breaking the catalog query batching.
Fix: add CATALOG_BATCH_SIZE=100 constant, make createBatches accept an optional
size param (defaulting to BATCH_SIZE), and pass CATALOG_BATCH_SIZE explicitly
at the GetUrlKeyQuery call site. The AEM unpublish batches keep BATCH_SIZE=600.
Limit confirmed against live API: 100 SKUs succeed, 101 fails.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tWithRenderedHash Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
keoko
approved these changes
May 6, 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
This branch extends the
plpbranch with stability, observability, and local-development improvements across the prerender pipeline. Some of these changes can probably get made directly to the upstream main branch, and some even to the upstreamplpbranch.Changes
Watchdog timer (
poller.js)Added a 5-minute idle watchdog to the
check-product-changespoller. If no render completes within that window, the action aborts immediately (clearing the mutex) rather than burning the full 3-hour timeout. UsesPromise.racebetween locale processing and the watchdog promise.Action timeout & memory (
app.config.yaml,check-product-changes/index.js)check-product-changestimeout from 1 hour → 3 hours and memory from 512 MB → 4 GB to support large catalog runs.ACTION_TIMEOUT_MSso the lock auto-expires if the runtime kills the process unexpectedly.AEM Admin API tuning (
aem.js)Max of 600 paths from an overlay can be requested per minute. Changes were made to invoke bulk admin api calls once per minute with 600 paths per.
MAX_PENDING_JOBSfrom 20 → 4 and increasedJOB_STATUS_POLL_INTERVAL_MSfrom 5s → 15s to match the higherBATCH_SIZE=600(up from 50), reducing memory backlog and polling overhead.abortProcessing()for the watchdog path to skip draining queues on a frozen action.mark-up-clean-upbatching (mark-up-clean-up/index.js)Batches
GetUrlKeyGraphQL queries to stay within the catalog 100-product limit (was sending all SKUs in a single request).LOCAL_FSmode (localFilesLib.js, all four actions, runners)New
LOCAL_FS=trueenv flag redirects allaio FilesI/O to./local-data/on disk, allowing the full pipeline to run locally without aio storage credentials or App Builder action timeouts. Note - the preview/publish invocation will still use the site's configured overlay - there is no way to preview/publish from a local machine.Tooling
check-errors.sh— shell script to paginateaio rt activation list, find error activations, and print their full logs/results; wired up as a Claude slash command (/check-aio-errors)tools/get-state-csv.js— script to fetch and print the current state CSV from aio storageRUNBOOK.md— added note about long-running activations not appearing inaio rt activation listuntil they finish; addedLOCAL_FSusage docsCLAUDE.md— added project rule to usenpm run deployinstead ofaio app deploy