Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/cache-capacity-recovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@executor-js/app-cache": patch
"apps": patch
---

Include the safe reason in CacheError messages and preserve it when reading through the host transport. Reclaim old, unleased cache entries at aggregate capacity without evicting the current write, and reload catalogs whose cached parts have been evicted.
60 changes: 60 additions & 0 deletions e2e/test-plan.ts
Original file line number Diff line number Diff line change
Expand Up @@ -806,6 +806,66 @@ export const scenarios = plan({
local: na("Hosted profile API fixture; Node adapter exercised by self-host"),
},
},
appCacheEntryCapacity: {
fixtures: "actors",
file: "app-cache-capacity.spec.ts",
title: "App cache reclaims old entries at the entry count limit",
targets: {
"self-host": scheduled,
cloud: sourceStorageCloud,
local: na("Hosted API fixture; the cache implementation is shared with Local"),
},
},
appCacheCatalogCapacity: {
fixtures: "actors",
file: "app-cache-capacity.spec.ts",
title: "App catalogs recover when pressure evicts parts of a retained manifest",
targets: {
"self-host": scheduled,
cloud: scheduled,
local: na("Hosted API fixture; the catalog cache implementation is shared with Local"),
},
},
appCacheManifestCapacity: {
fixtures: "actors",
file: "app-cache-capacity.spec.ts",
title: "App catalogs omit optional names when the full manifest exceeds the entry limit",
targets: {
"self-host": scheduled,
cloud: scheduled,
local: na("Hosted API fixture; the catalog cache implementation is shared with Local"),
},
},
appCacheProtectedCapacity: {
fixtures: "actors",
file: "app-cache-capacity.spec.ts",
title: "App cache rolls back pressure when every retained value has a live loader",
targets: {
"self-host": scheduled,
cloud: scheduled,
local: na("Hosted API fixture; the cache implementation is shared with Local"),
},
},
appCacheCapacity: {
fixtures: "actors",
file: "app-cache-capacity.spec.ts",
title: "App cache reclaims old values at capacity and keeps valid calls working",
targets: {
"self-host": scheduled,
cloud: scheduled,
local: na("Hosted API fixture; the cache implementation is shared with Local"),
},
},
appCacheReasons: {
fixtures: "actors",
file: "app-cache-capacity.spec.ts",
title: "App cache errors expose safe reasons to authored callers",
targets: {
"self-host": scheduled,
cloud: scheduled,
local: na("Hosted API fixture; the cache implementation is shared with Local"),
},
},
appCacheEvaluation: {
fixtures: "actors",
file: "app-cache-evaluation.spec.ts",
Expand Down
Loading