Trying to get some help with my stack overflow question here https://stackoverflow.com/questions/64456578/apache-ignite-2-x-can-i-take-advantage-of-offheap-storage-and-also-still-have
Cross posting it here. I am using Apache Ignite 2.8.1 I have a specific cache that I need to store off heap (because otherwise I will be plagued with out of memory conditions). And I also need the cache to be distributed. But I also want a time based eviction policy to evict entries from on/off memory cache. Is this even possible with Apache Ignite 2.x? See the snippet here. I have tried to configure this every which way, but nothing evicts these entries from the cache except doing it manually. When I run the test method below, all the entries remain in the cache. import java.time.LocalDateTime;import java.util.Arrays;import java.util.concurrent.TimeUnit; import javax.cache.expiry.CreatedExpiryPolicy;import javax.cache.expiry.Duration; import org.apache.ignite.Ignite;import org.apache.ignite.Ignition;import org.apache.ignite.cache.CacheAtomicityMode;import org.apache.ignite.cache.CacheMode;import org.apache.ignite.cache.eviction.lru.LruEvictionPolicyFactory;import org.apache.ignite.configuration.CacheConfiguration;import org.apache.ignite.configuration.DataRegionConfiguration;import org.apache.ignite.configuration.DataStorageConfiguration;import org.apache.ignite.configuration.IgniteConfiguration;import org.apache.ignite.configuration.NearCacheConfiguration;import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; public class IgniteCache { private static final String ORG_CACHE = IgniteCache.class.getSimpleName() + "Organizations"; private static Ignite ignite; private static org.apache.ignite.IgniteCache cache; public void start() { IgniteConfiguration igniteConfiguration = new IgniteConfiguration(); DataStorageConfiguration dsCfg = new DataStorageConfiguration(); DataRegionConfiguration dfltDataRegConf = new DataRegionConfiguration(); dfltDataRegConf.setPersistenceEnabled(true); dsCfg.setDefaultDataRegionConfiguration(dfltDataRegConf); dsCfg.setStoragePath("E:\\igniteStorage"); igniteConfiguration.setDataStorageConfiguration(dsCfg); TcpDiscoverySpi tcpDiscoverySpi = new TcpDiscoverySpi(); TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder(); ipFinder.setAddresses(Arrays.asList("127.0.0.1:47500..47509")); tcpDiscoverySpi.setIpFinder(ipFinder); igniteConfiguration.setDiscoverySpi(tcpDiscoverySpi); ignite = Ignition.start(igniteConfiguration); ignite.active(true); CacheConfiguration<Long, X12File> cacheCfg = new CacheConfiguration<>(ORG_CACHE); cacheCfg.setCacheMode(CacheMode.REPLICATED); cacheCfg.setAtomicityMode(CacheAtomicityMode.ATOMIC); cacheCfg.setBackups(1); cacheCfg.setEvictionPolicyFactory(new LruEvictionPolicyFactory<>(50000, 40, 5050)); // this doesn't do anything. cacheCfg.setNearConfiguration( new NearCacheConfiguration<Long, X12File>() .setNearEvictionPolicyFactory(new LruEvictionPolicyFactory<>(1_000_000))); // this doesn't do anything. cache = ignite.getOrCreateCache(cacheCfg); for (long i = 0; i < 4_000_000; i++) { if (i > 0 && i % 10_000 == 0) { System.out.println("Done: " + i); } cache.withExpiryPolicy(new CreatedExpiryPolicy(new Duration(TimeUnit.SECONDS, 1))) // this expiry policy doesn't do anything .put(i, new X12File("x12file" + i, LocalDateTime.now().toString())); } } public void test() { System.out.println("Checking if cache entries are being properly evicted ..."); int matches = 0; for (long i = 0; i < 4_000_000; i++) { if (cache.get(i) != null) { ++matches; } } System.out.println("Matches: " + matches); } } Is this just a shortcoming of Apache Ignite 2.x in my particular use case?