You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit ca2b3b5
Browse filesBrowse the repository at this point in the historyBrowse files
fix(storage): keep renditions, compiled CSS and template loading available when S3 misbehaves
With S3 asset storage on, the JPEG filter now predicts the .jpg file it writes, so warm JPEG
renditions are found on local disk instead of making S3 requests on every request and failing
during an S3 outage. With the flag off the inherited .png prediction is kept, so flag-off cache
paths are unchanged.
When a filter returns its input unchanged (for example a maximum width larger than the image),
the exporter remembers on that node that the predicted output is never produced, so later
requests skip the S3 lookup for it, both per filter and for the chain's final output. Only an
output written at its predicted path is uploaded, and the upload now runs after the image permit
is released.
A failed rendition or compiled CSS upload no longer fails the request. The locally produced
output is served, a warning is logged, and the file stays local only, which eviction already
never removes. CSSAssetStorageTest now asserts this policy instead of the old fail-closed one.
The Sass compiler no longer holds the cache lease while Dart Sass runs; it holds it only while
copying sources and while reading a stored output. The rendition lease still spans the whole
export and is documented as a known limitation.
Focal-point reads treat a permission denial or missing content as no focal point again, as with
the flag off, so $content.image.fpx keeps working for anonymous visitors; only a DotDataException
from the lookup is rethrown.
DotResourceLoader reports a storage failure as a non-cached VelocityException only for the
file-backed loaders (VTL, macros, legacy VL and includes). Container, template, page and other
database loaders keep the cached ResourceNotFoundException.
VTLLoader and IncludeLoader only continue to the restore path for a missing file under the asset
root. A missing file elsewhere is a plain not-found again, instead of a "POSSIBLE HACK ATTACK"
warning.
Adds unit tests for the JPEG prediction, warm JPEG and no-op renditions during an outage, a failed
rendition upload, focal-point lookups and the Velocity loader failure handling, and updates
BINARY_S3_STORAGE.md.
0 commit comments