I am trying to access ignite cache data from other nodes , I am able to access the ignite cache but cache is completely empty and hence throwing nullpointerException when I am trying to do cache.get(key).
I have tried using both REPLICATED and PARTITONED MODE for workflowRunState Cache. Here is the xml configuration <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- Ignite configuration with all defaults and enabled p2p deployment and enabled events. --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <context:property-placeholder location="classpath:app.properties"/> <bean abstract="true" id="ignite-data.cfg" class="org.apache.ignite.configuration.IgniteConfiguration"> <!-- Set to true to enable distributed class loading for examples, default is false. --> <property name="peerClassLoadingEnabled" value="true"/> <!-- Ignite predicate filter to separate data nodes from service nodes --> <property name="userAttributes"> <map key-type="java.lang.String" value-type="java.lang.Boolean"> <entry key="data.node" value="true"/> </map> </property> <property name="cacheConfiguration"> <list> <bean class="org.apache.ignite.configuration.CacheConfiguration"> <!-- Set a cache name. --> <property name="name" value="${cache.workflow.name}"/> <!-- Set cache mode. --> <property name="cacheMode" value="PARTITIONED"/> <property name="backups" value="2"/> <property name="statisticsEnabled" value="true"/> <property name="nodeFilter"> <bean class="com.mediaiq.caps.platform.choreography.commons.filter.DataNodeFilter"/> </property> </bean> <bean class="org.apache.ignite.configuration.CacheConfiguration"> <!-- Set a cache name. --> <property name="name" value="${cache.workflow-run.name}"/> <!-- Set cache mode. --> <property name="cacheMode" value="REPLICATED"/> <!-- This is a transactional cache as many keys need to be updated together --> <property name="atomicityMode" value="TRANSACTIONAL"/> <property name="backups" value="1"/> <property name="statisticsEnabled" value="true"/> <property name="nodeFilter"> <bean class="com.mediaiq.caps.platform.choreography.commons.filter.DataNodeFilter"/> </property> </bean> <bean class="org.apache.ignite.configuration.CacheConfiguration"> <!-- Set a cache name. --> <property name="name" value="${cache.workflow-pause.name}"/> <!-- Set cache mode. --> <property name="cacheMode" value="PARTITIONED"/> <property name="backups" value="1"/> <property name="statisticsEnabled" value="true"/> <property name="nodeFilter"> <bean class="com.mediaiq.caps.platform.choreography.commons.filter.DataNodeFilter"/> </property> </bean> </list> </property> <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. --> <property name="discoverySpi"> <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> <property name="ipFinder"> <!-- Ignite provides several options for automatic discovery that can be used instead os static IP based discovery. For information on all options refer to our documentation: http://apacheignite.readme.io/docs/cluster-config --> <!-- Uncomment static IP finder to enable static-based discovery of initial nodes. --> <!--<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">--> <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"> <property name="addresses"> <list> <!-- In distributed environment, replace with actual host IP address. --> <value>127.0.0.1:47500..47509</value> </list> </property> </bean> </property> </bean> </property> </bean> <bean parent="ignite-data.cfg"/> </beans> All these caches are deployed in Data Node. Now after doing some operations I had populated data in workflowRunstateCache which I verified in web console as well. But when I try to access the same cache from different server node , no data is available in that. In the following code I am trying to access workflowrunStateCache from different server node , it shows me that containsKey as false and thows NullpointerException in debug mode when I do workflowRunStateCache.get(); while (true) { try (Transaction tx = ignite.transactions().txStart(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.SERIALIZABLE)) { System.out.println("Conatins Key" + workflowRunStateIgniteCache.containsKey(updatedKeys.get(0))); System.out.println("Conatins Key" + workflowRunStateIgniteCache); Boolean flowProcessable = updatedKeys.stream() // check if there is at least one event in each cache entry to be processed .map(updatedKey -> workflowRunStateIgniteCache.get(updatedKey).getFlowRunEvents().size() > 0) .reduce(true, (a, b) -> a && b).booleanValue(); List<Event> inputEvents = null; if (flowProcessable) { inputEvents = updatedKeys .stream() .map(updatedKey -> { try { return workflowRunStateIgniteCache.get(updatedKey).getFlowRunEvents().take(); } catch (InterruptedException e) { e.printStackTrace(); } return null; }).collect(Collectors.toList()); } tx.commit(); break; } catch (TransactionOptimisticException e) { // todo: emit a monitoring metric TRANSACTIONS_FAILED here System.out.println("Transaction failed. Retrying..."); } } System.out logs: Conatins Keyfalse