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
Fix find_fragment timestamp predicate and add property-based tests
`find_fragment` used `Ts >= FTs` to select the manifest fragment for a
timestamp subscription. This predicate finds the last fragment whose
first timestamp is at or before `Ts`. When `Ts` falls between two
fragments — after fragment N's `LTs` but before fragment N+1's `FTs` —
the predicate incorrectly returns fragment N instead of N+1, causing the
reader to start from the wrong position.
The correct predicate is `Ts >= LTs`: find the first fragment whose last
timestamp is greater than or equal to `Ts`. This correctly identifies
the fragment whose range contains `Ts`, or the earliest fragment after
`Ts` if `Ts` falls in a gap between fragments.
The index position calculation for the timestamp case uses
`min(Idx0, NumEntries - 1)` rather than `saturating_decr` because the
partition point already identifies the target fragment directly.
The `read_from_remote_tier_by_timestamp` integration test is also fixed:
`Timestamp3` must be captured before publishing offset 2 so that
`find_index_position` returns offset 2 rather than offset 3.
- Fix `init_offset_reader/2` calling `osiris_log` directly for the local
path; route through `init_local_reader/2` instead
- Fix `range_spec_to_location_number/2`: suffix range used addition
instead of subtraction; open-ended byte range returned `infinity`
instead of the remaining file size
- Preserve `?C_OSIRIS_LOG_FIRST_OFFSET` after local segment deletion;
only update the shared atomic used for local/remote tier routing
- Upload CT logs as an artifact on test failure
- Reduce `?MAX_SEGMENT_SIZE_BYTES` to 1 MiB in test builds to trigger
segment rolls without large payloads
- Add integration tests for reading stream data from the remote tier by
offset and timestamp
- Convert `unit_SUITE` to use PropEr; add property-based tests for
`range_spec_to_location_number/2`
- Add property-based tests for `find_fragment` timestamp behaviour,
covering timestamps within fragment ranges, in gaps between fragments,
and after all fragments
- Add property-based tests for `rabbitmq_stream_s3_array`:
`partition_point`, `binary_search_by`, `rfind`, and `fold`
- Add property-based tests for `find_index_position` offset and
timestamp specs
- Add diagnostic logging to `read_from_remote_tier_by_timestamp` to
surface manifest entry timestamps and captured timestamps in CI output
- Add `get_range_by_reference/1` and `get_manifest_by_reference/1` test
helpers to `rabbitmq_stream_s3_server`
- Support container credentials in the integration test group
0 commit comments