When caching is turned on for a window or session store, upon store.put() the cache may gets flushed, trigger the dirty flush listener calling maybeForward(), which calls fetchPrevious().
Unfortunately fetchPrevious() could be a very expensive call to make, and sometimes are not necessary:
1. When KStreamWindowAggregate.process() already gets the previous value when aggregating, so we could passing the old value through the tuple forwarder without calling fetchPrevious again.
2. When we know that sendOldValues flag is turned off.