Skip to content

Conversation

@velimir
Copy link
Contributor

@velimir velimir commented Nov 21, 2025

Summary

Adds streaming support to list_object_versions to match the existing pattern used by list_objects and list_objects_v2.

Changes

  • Added stream_object_versions!/3 in ExAws.S3.Lazy with dual-marker pagination (key_marker + version_id_marker) as required by S3 API
  • Updated list_object_versions to support ExAws.stream!() via stream_builder option
  • Added add_version_results/1 helper to combine versions and delete markers

Tests

  • Basic streaming functionality
  • Pagination with uneven last page
  • Delete markers in streams

Test isolation improved: each test now uses a unique bucket to prevent state pollution. Cleanup uses list_object_versions which works for both versioned and non-versioned buckets (non-versioned objects have version_id of "null").

implemented stream_object_versions!/3 in lazy.ex to enable streaming
through paginated object version results using dual-marker pagination
(key_marker + version_id_marker). updated list_object_versions to support
streaming via ExAws.stream!() similar to list_objects and list_objects_v2.

tests now use per-test buckets to eliminate flakiness from shared state.
cleanup simplified to use list_object_versions which works for both
versioned and non-versioned buckets (non-versioned objects have version_id
of "null"). using request!() for cleanup makes failures visible.
verifies basic streaming, pagination with uneven last page (33 versions
across 7 pages with max_keys=5), and proper handling of delete markers
in streams. ensures dual-marker pagination works correctly and that both
versions and delete markers are returned when streaming.
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