Guys, I have been playing with TTL-based expirations for streaming and am noticing that often the TTL thread cannot cope with the load a data-streamer can generate.
Our current approach for TTL is implemented with a thread that keeps all cache entries in sorted-by-expire-time order and scans this ordered list every time something expires. The scan is optimized, such that once an entry that does not need to expire yet is touched, the thread goes into wait mode until TTL time for that entry expires. However even with this optimization, this thread cannot expire the entries fast enough. I think if we handle TTL expirations the same way as we handle evictions, through eviction policies, this problem would go away, because all the threads that add entries to eviction queue are also responsible to evict the excess entries as well. I have created a parent ticket for this issue: https://issues.apache.org/jira/browse/IGNITE-729 Would be nice to implement them in the next couple of weeks. D.
