TieredEventStore reports existing streams as missing
I maintainer di solito rispondono entro 7 giorni
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 1/100
Direzione di ricerca
The issue names TieredEventStoreTests.cs in src/Core/test/Eventuous.Tests.Application and the TieredEventStore implementation. Start by reviewing the committed change on fix/issue-609-tiered-store and its 15 tiered-store tests; the issue reports that all 36 application tests pass. The fix is already committed locally, so this work is underway and is not a suitable first contribution.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Related test issue
Discovered while implementing #609 — tiered event-store coverage.
Problem
TieredEventStore.StreamExists effectively requires a stream to exist in both the hot and archive stores. Streams that exist in only one tier are incorrectly reported as missing. Existence checks also fail to account for an archive exposed only through IEventReader, which the constructor accepts.
This makes the existence result inconsistent with readable data: an archived stream can still be read after hot-store deletion, yet StreamExists returns false.
Reproduction
- Create separate hot and archive
InMemoryEventStoreinstances. - Append events to a stream in only the hot store.
- Construct
TieredEventStore(hot, archive)and callStreamExistsfor that stream. - Repeat with events in only the archive store.
Actual: both single-tier cases return false.
Expected: a stream exists if either tier contains it.
| Hot tier | Archive tier | Expected result |
|---|---|---|
| Missing | Missing | false |
| Present | Missing | true |
| Missing | Present | true |
| Present | Present | true |
Fix and acceptance criteria
- Return
truewhen the hot store contains the stream, without requiring an archive lookup. - Otherwise check archive existence directly when it implements
IEventStore. - For an archive implementing only
IEventReader, establish existence with a bounded read according to that interface's missing-stream contract. - A successful empty read represents an existing empty stream;
StreamNotFoundrepresents absence. - Archive failures and cancellation propagate rather than being converted into
false. - Dispose the archive enumerator and forward cancellation to the read.
- Deleting the hot copy does not make an existing archive copy disappear from the existence result.
- Preserve existing cross-tier read behavior and hot-only append, truncate, and delete behavior.
Existing regression tests and implementation
TieredEventStoreTests.cs in src/Core/test/Eventuous.Tests.Application reproduced five failing cases before the fix:
- Hot-only stream existence.
- Archive-only stream existence.
- An existing stream in an archive exposed only as
IEventReader. - An empty existing stream in a read-only archive.
- Existence after deleting the hot copy while retaining the archive copy.
Additional tests cover archive failures, cancellation, an unavailable archive when the hot stream exists, bounded reads across tiers, and hot-only mutations.
An implementation is already committed locally on fix/issue-609-tiered-store, commit 1639f36c. All 36 tests in the application test project pass on .NET 10, including 15 tiered-store cases. The branch has not been published or merged as part of this work.
- Lingua principale
- C#
- Stelle
- 512
- Fork
- 99
- Merge medio
- 5g 6h
- PR unite (30g)
- 5
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Eventuous/eventuous
-
MongoDB integration tests fail on newer GitHub Actions runner kernelsForse già presa @nmummau l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
Eventuous/eventuous#626 · 2 commenti ·
I maintainer di solito rispondono entro 7 giorni
-
`dotnet format style --verify-no-changes` fails with naming violations and unnecessary importsForse già presa @nmummau l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
Eventuous/eventuous#624 · 1 commento ·
I maintainer di solito rispondono entro 7 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Eventuous/eventuous#627 · 1 commento ·
I maintainer di solito rispondono entro 7 giorni
-
SQL Server: `append_events` does not need the `@inserted` table variableForse già presa @nmummau l’ha presa 6 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 20/100
Eventuous/eventuous#619 · 1 commento ·
I maintainer di solito rispondono entro 7 giorni
-
SQL Server: stream reads do one key lookup per event, and `IDX_EventsStream` duplicates `UQ_StreamIdAndStreamPosition`Forse già presa @nmummau l’ha presa 6 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 18/100
Eventuous/eventuous#618 · 1 commento ·
I maintainer di solito rispondono entro 7 giorni
Tutte le issue di Eventuous/eventuous
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
gavin-wolfe/wolfden#104 ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] Still libmicrohttpd dependency is not removed properly from External-Dependency-Info.txt fileApertatype/bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
area:framework
Difficoltà 1/5 1-3 ore Idoneità per principianti 72/100
nunit/docs#1262 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[辞書] かんそうりつ->乾燥率Aperta辞書
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
thomhurst/TUnit#7201 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno