Can you share code snippet which shows how you put data to the cache?

On Tue, Dec 12, 2017 at 12:26 PM, Harshil garg <harshilbi...@gmail.com>
wrote:

> Sorry , forgot to attach the xml used for configuring cache.
>
> <?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>
>
>
> On Tue, Dec 12, 2017 at 2:55 PM, Harshil garg <harshilbi...@gmail.com>
> wrote:
>
>> Hi Nikolai
>>
>> I haven't removed any data from other nodes. How data can be removed
>> manually from cache manually ??
>> I have three cache deployed in Data Node which is configured using this
>> below xml.
>>
>> I have data getting saved in workflowRunStateCache which I verified in
>> web console. But when I am trying to access this cache from different
>> server node , cache is coming completely empty .
>>
>> What could be the possible reasons ??
>> Need some solid inputs regarding the same.
>>
>> Any help will be highly appreciated.
>>
>> <?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>
>>
>>
>>
>>
>> On Mon, Dec 11, 2017 at 8:29 PM, Nikolai Tikhonov <ntikho...@apache.org>
>> wrote:
>>
>>> Hello!
>>>
>>> It looks weird for me. You should see the same data set from all nodes
>>> of cluster. I think you or remove data from other nodes or performe an
>>> operations under another cache. Can you share simple maven project which
>>> reproduces the problem?
>>>
>>> On Mon, Dec 11, 2017 at 5:22 PM, Harshil garg <harshilbi...@gmail.com>
>>> wrote:
>>>
>>>> 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
>>>>
>>>>
>>>
>>
>

Reply via email to