Skip to content

fix(sources): keep getObjectContents body when metadata fails - #79

Open
Ibochkarev wants to merge 1 commit into
3.xfrom
fix/s3-getobjectcontents-path-normalization
Open

fix(sources): keep getObjectContents body when metadata fails#79
Ibochkarev wants to merge 1 commit into
3.xfrom
fix/s3-getobjectcontents-path-normalization

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Aug 21, 2026

Copy link
Copy Markdown
Member

Что сделано

modMediaSource::getObjectContents() по-прежнему сначала читает файл. Если fileSize, lastModified или mimeType выбрасывают UnableToRetrieveMetadata, он сохраняет body и заполняет мягкие дефолты (size/last_modified false, mime application/octet-stream) вместо возврата пустого массива.

Более ранний S3-only override нормализации пути убран: Flysystem уже нормализует разделители, и это изменение не адресовало пустой контент.

Зачем нужно

На S3 вызовы метаданных часто падают, даже когда read() успешен (тот же класс проблем, что опустошал листинги контейнера после миграции Flysystem v2). Вызывающие тогда видели $result['content'] отсутствующим, потому что весь ответ был [] (modxcms#16497).

Как проверить

  1. phpunit --filter MediaSourceGetObjectContentsTest
  2. С S3 media source вызовите $source->getObjectContents($filePath) для существующего объекта и подтвердите, что content непустой, даже когда Content-Type метаданные отсутствуют.
  3. Filesystem media source: откройте обычный файл в менеджере и подтвердите, что content/метаданные по-прежнему грузятся.

Связанные

Refs modxcms#16497

Оригинал: modxcms#16847

S3 adapters can throw UnableToRetrieveMetadata for mime/size/mtime after
a successful read. Returning [] discarded the payload (modxcms#16497). Soft-fail
metadata instead, and cover the regression with a mock filesystem test.
@Ibochkarev Ibochkarev changed the title fix(sources): сохранять body getObjectContents при ошибке метаданных fix(sources): keep getObjectContents body when metadata fails Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant