Hi, I am trying to handle lost partition scenario. I have written event listener listening to EventType.EVT_CACHE_REBALANCE_PART_DATA_LOST event. I want to reset lost partition state of cache after cache loading is done. *Issue:* ignite.resetLostPartitions(caheName) is getting blocked and not completing.
Please find the code for Event Listener. Someone can help on this. *Why this resetLostPartitions getting blocked.* public class IgniteEventListner implements IgnitePredicate<CacheRebalancingEvent> { private static final Logger LOGGER = LoggerFactory.getLogger(IgniteEventListner.class); private final Ignite ignite; public IgniteEventListner(Ignite ignite) { this.ignite = ignite; } @Override public boolean apply(CacheRebalancingEvent evt) { IgniteCache<DefaultDataAffinityKey, AssetGroupData> cache = ignite.getOrCreateCache(CacheName.ASSET_GROUP_CACHE.name()); Collection<Integer> lostPartitions = cache.lostPartitions(); reloadCache(lostPartitions); //perform partition based cache loading * ignite.resetLostPartitions(Arrays.asList(CacheName.ASSET_GROUP_CACHE.name())); //Reset partitions* System.out.println("Check-1, Partition lost event processed"); return true; } } *Cache Configuration* private CacheConfiguration assetGroupCacheCfg() { CacheConfiguration assetGroupCacheCfg = new CacheConfiguration<>(CacheName.ASSET_GROUP_CACHE.name()); assetGroupCacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL); assetGroupCacheCfg.setWriteThrough(false); assetGroupCacheCfg.setReadThrough(false); assetGroupCacheCfg.setRebalanceMode(CacheRebalanceMode.ASYNC); assetGroupCacheCfg.setBackups(0); assetGroupCacheCfg.setCacheMode(CacheMode.PARTITIONED); assetGroupCacheCfg.setIndexedTypes(DefaultDataAffinityKey.class, AssetGroupData.class); assetGroupCacheCfg.setSqlIndexMaxInlineSize(100); RendezvousAffinityFunction affinityFunction = new RendezvousAffinityFunction(); assetGroupCacheCfg.setAffinity(affinityFunction); assetGroupCacheCfg.setStatisticsEnabled(true); assetGroupCacheCfg.setPartitionLossPolicy(PartitionLossPolicy.READ_WRITE_SAFE); return assetGroupCacheCfg; } *Ignite Configuration* private IgniteConfiguration getIgniteConfiguration() { TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder(); String[] hosts = {"127.0.0.1:47500..47509"}; ipFinder.setAddresses(Arrays.asList(hosts)); TcpDiscoverySpi discoSpi = new TcpDiscoverySpi(); discoSpi.setIpFinder(ipFinder); IgniteConfiguration cfg = new IgniteConfiguration(); cfg.setDiscoverySpi(discoSpi); cfg.setIgniteInstanceName("springDataNode"); cfg.setPeerClassLoadingEnabled(false); cfg.setRebalanceThreadPoolSize(4); DataStorageConfiguration storageCfg = new DataStorageConfiguration(); DataRegionConfiguration regionConfiguration = new DataRegionConfiguration(); regionConfiguration.setInitialSize(3L * 1024 * 1024 * 1024); regionConfiguration.setMaxSize(3L * 1024 * 1024 * 1024); regionConfiguration.setMetricsEnabled(true); storageCfg.setDefaultDataRegionConfiguration(regionConfiguration); storageCfg.setStoragePath("c:/ignite-storage/storage"); storageCfg.setWalPath("c:/ignite-storage/storage/wal"); storageCfg.setWalArchivePath("c:/ignite-storage/storage/wal-archive"); storageCfg.setMetricsEnabled(true); cfg.setDataStorageConfiguration(storageCfg); cfg.setIncludeEventTypes(EventType.EVT_CACHE_REBALANCE_PART_DATA_LOST,EventType.EVT_NODE_FAILED); cfg.setCacheConfiguration(getCacheConfigurations()); return cfg; } Thanks, Akash