Adding a `filter` call downstream of anything that has a state store, e.g. a table source, results in spurious tombstones being emitted from the topology for any key where a new entry doesn't match the filter, even when no previous value existed for the row.
To put this another way: a filer downstream of a state-store will output a tombstone on an INSERT the doesn't match the filter, when it should only output a tombstone on an UPDATE.
This code shows the problem:
These spurious tombstones can cause a LOT of noise when, for example, the filter is looking for a specific key. In such a situation, every input record that does not have that key results in a tombstone! meaning there are many more tombstones than useful data.
I believe the fix is to turn on KTableImpl::enableSendingOldValues for any filter that is downstream of a statestore