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
Verify tiered event-store existence and write-routing behavior #609
TieredEventStore has no recorded line coverage in the October 5, 2026 .NET 10 coverage run. Its public behavior needs tests independent of the existing TieredEventReader tests. You can view a test coverage report I generated here: index.html
There is also a potential correctness bug: StreamExists returns hotExists && archiveExists. A stream present in only one tier is therefore reported as missing, even though the tiered reader can read from that tier. This is a code-review finding; add a reproducing test and confirm the intended contract before changing the implementation.
Exercise stream existence when the stream is present in hot storage only, archive storage only, both stores, or neither store.
Read through the tiered store's public forward and backward APIs, including a stream spanning both tiers. Assert event order, requested counts, and absence of duplicates.
Append through both the single-stream and batch APIs. Verify that events reach hot storage and do not alter the archive.
Truncate and delete through the tiered store. Verify that these operations affect only hot storage.
Establish the existence-check contract when the archive implements only IEventReader, which does not expose StreamExists.
Acceptance criteria
Tests reproduce the current behavior for streams present in only one tier.
The intended existence contract is documented in the tests; any confirmed bug is fixed with a regression test.
Reads, appends, truncation, and deletion are tested through the public tiered-store API with assertions on stored events.
Archive-only readers are handled according to an explicit contract.
Tests use isolated in-memory stores or controlled store implementations and do not require Docker.
Validation
Run the affected persistence/application test project and collect focused coverage for TieredEventStore. Use behavioral assertions as the completion criterion, not a percentage target. A full provider-suite rerun is not required for this isolated work.
I’ve implemented this locally with regression tests. I’m waiting for a prerequisite PR 603 to merge so I can rebase and open a focused PR. I’ll link it here once it’s ready.
Confirmed with regression tests: StreamExists returns false when a stream exists only in hot storage or only in the archive, even though the tiered reader can read it. The implementation currently requires both tiers to contain the stream (hotExists && archiveExists).
The fix in #623 recognizes streams present in either tier. For archives implementing only IEventReader, it probes a read and treats StreamNotFound as absence, preserving other errors and cancellation.
Tests also cover reads across tiers and verify that appends, truncation, and deletion affect only hot storage.
Activity
linear commentedon Oct 6, 2026
EVE-260
nmummau commentedon Oct 6, 2026
I’ve implemented this locally with regression tests. I’m waiting for a prerequisite PR 603 to merge so I can rebase and open a focused PR. I’ll link it here once it’s ready.
fix(persistence): recognize streams present in either tier
nmummau commentedon Oct 14, 2026
Confirmed with regression tests: StreamExists returns false when a stream exists only in hot storage or only in the archive, even though the tiered reader can read it. The implementation currently requires both tiers to contain the stream (hotExists && archiveExists).
The fix in #623 recognizes streams present in either tier. For archives implementing only IEventReader, it probes a read and treats StreamNotFound as absence, preserving other errors and cancellation.
Tests also cover reads across tiers and verify that appends, truncation, and deletion affect only hot storage.