Should I expect to see events from soft deleted streams still appear in $all?

We had a job create some “duplicate” events, and our domains aren’t doing versioning, nor doing things idempotently, so we ended up with two events with different IDs, same body, in multiple streams.

The plan was to soft delete those streams and write new, filtered versions of those streams.

We then reindex the store into Elasticsearch using $all.

The streams themselves delete as expected, returning a 404 with an HTTP call (but isstreamdeleted=false in TCP client metadata). However while slicing through $all, it seems the deleted events still surface there.

they will still be in $all until they are in the non-current chunk and
scavenged.

Thanks, that explains the differences seen in test vs. prod.

Any way to force a chunk closed?

no it happens automatically when the size is reached. $all is a
special stream that has an optimized path avoiding checking things.

Thanks.

Thinking about it, probably not an issue. We tested against data captured not long after the issue happened. It has been a week since then. Our fix probably would have worked in production. We will retest with fresh prod data.