The client node itself starts after making the change, but getting the
below error trying to access the cache:
[12:16:45] Topology snapshot [ver=2, servers=1, clients=1, CPUs=4,
heap=1.4GB]
>>> Cache node started.
[12:16:45,439][SEVERE][exchange-worker-#38%null%][GridDhtPartitionsExchangeFuture]
Failed to reinitialize local partitions (preloading will be stopped):
GridDhtPartitionExchangeId [topVer=AffinityTopologyVersion [topVer=2,
minorTopVer=1], nodeId=2bf10735, evt=DISCOVERY_CUSTOM_EVT]
PlatformNoCallbackException []
at
org.apache.ignite.internal.processors.platform.callback.PlatformCallbackUtils.cacheStoreCreate(Native
Method)
at
org.apache.ignite.internal.processors.platform.callback.PlatformCallbackGateway.cacheStoreCreate(PlatformCallbackGateway.java:63)
at
org.apache.ignite.internal.processors.platform.dotnet.PlatformDotNetCacheStore.initialize(PlatformDotNetCacheStore.java:338)
at
org.apache.ignite.internal.processors.platform.PlatformProcessorImpl.registerStore0(PlatformProcessorImpl.java:347)
at
org.apache.ignite.internal.processors.platform.PlatformProcessorImpl.registerStore(PlatformProcessorImpl.java:317)
at
org.apache.ignite.internal.processors.cache.store.CacheOsStoreManager.start0(CacheOsStoreManager.java:60)
at
org.apache.ignite.internal.processors.cache.GridCacheManagerAdapter.start(GridCacheManagerAdapter.java:50)
at
org.apache.ignite.internal.processors.cache.GridCacheProcessor.startCache(GridCacheProcessor.java:1051)
at
org.apache.ignite.internal.processors.cache.GridCacheProcessor.prepareCacheStart(GridCacheProcessor.java:1648)
at
org.apache.ignite.internal.processors.cache.GridCacheProcessor.prepareCachesStart(GridCacheProcessor.java:1563)
at
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.startCaches(GridDhtPartitionsExchangeFuture.java:956)
at
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:523)
On Sun, Apr 17, 2016 at 10:49 AM, Pavel Tupitsyn <[email protected]>
wrote:
> This exception appears due to the fact that .NET store can't be
> initialized on C++ node.
>
> Add the following line to C++ config to run the node in client mode, so it
> does not store cache data and initialize cache store:
> <property name="clientMode" value="true"/>
>
> Let me know if this helps.
>
> Pavel.
>
> On Sun, Apr 17, 2016 at 2:35 PM, Murthy Kakarlamudi <[email protected]>
> wrote:
>
>> Hi Pavel...such an obvious thing that I missed. I was always looking at
>> the .net node config as the error said remote node. Thanks for pointing it
>> out. I am now getting a different error. I do have a question. As I
>> mentioned node that gets started from .net acts as server node and loads
>> the database into cache. So its config has all the CacheStore relation
>> information. In my c++ node, acting as a client, what should go in its
>> config? As it does not access DB, I assumed CacheStore related information
>> is not needed in its config. So I am not sure what should go into my c++
>> config. If I do have to have the CacheStore info in the c++ client node, Is
>> there a c++ cachestore implementation example?
>>
>> Below is the error I am getting:
>> [07:18:03,292][SEVERE][main][IgniteKernal] Got exception while starting
>> (will rollback startup routine).
>> PlatformNoCallbackException []
>> at
>> org.apache.ignite.internal.processors.platform.callback.PlatformCallbackUtils.cacheStoreCreate(Native
>> Method)
>> at
>> org.apache.ignite.internal.processors.platform.callback.PlatformCallbackGateway.cacheStoreCreate(PlatformCallbackGateway.java:63)
>> at
>> org.apache.ignite.internal.processors.platform.dotnet.PlatformDotNetCacheStore.initialize(PlatformDotNetCacheStore.java:338)
>> at
>> org.apache.ignite.internal.processors.platform.PlatformProcessorImpl.registerStore0(PlatformProcessorImpl.java:347)
>> at
>> org.apache.ignite.internal.processors.platform.PlatformProcessorImpl.registerStore(PlatformProcessorImpl.java:317)
>> at
>> org.apache.ignite.internal.processors.cache.store.CacheOsStoreManager.start0(CacheOsStoreManager.java:60)
>> at
>> org.apache.ignite.internal.processors.cache.GridCacheManagerAdapter.start(GridCacheManagerAdapter.java:50)
>> at
>> org.apache.ignite.internal.processors.cache.GridCacheProcessor.startCache(GridCacheProcessor.java:1051)
>> at
>> org.apache.ignite.internal.processors.cache.GridCacheProcessor.onKernalStart(GridCacheProcessor.java:787)
>> at
>> org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:946)
>> at
>> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1688)
>> at
>> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1547)
>> at
>> org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1003)
>> at
>> org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:534)
>> at
>> org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:515)
>> at org.apache.ignite.Ignition.start(Ignition.java:322)
>> at
>> org.apache.ignite.internal.processors.platform.PlatformAbstractBootstrap.start(PlatformAbstractBootstrap.java:36)
>> at
>> org.apache.ignite.internal.processors.platform.PlatformIgnition.start(PlatformIgnition.java:72)
>> [07:18:03] Ignite node stopped OK [uptime=00:00:08:267]
>> An error occurred: Callback handler is not set in native platform.
>>
>> On Sun, Apr 17, 2016 at 4:15 AM, Pavel Tupitsyn <[email protected]>
>> wrote:
>>
>>> Hi,
>>>
>>> > Remote node has peer class loading enabled flag different from local
>>> As the error message says, peerClassLoading flag has to be the same on
>>> all nodes.
>>>
>>> Please remove the following line from your C++ config:
>>> <property name="peerClassLoadingEnabled" value="true"/>
>>>
>>> Pavel.
>>>
>>> On Sun, Apr 17, 2016 at 2:29 AM, Murthy Kakarlamudi <[email protected]>
>>> wrote:
>>>
>>>> Hi,
>>>> In my use case, I am starting a node from .net which loads data from
>>>> SQL Server table into cache upon start up. I have to read those entries
>>>> from cache from a c++ node that acts as a client. I am getting the below
>>>> error trying to start the node from c++.
>>>>
>>>> [19:08:57] Security status [authentication=off, tls/ssl=off]
>>>> [19:08:58,163][SEVERE][main][IgniteKernal] Failed to start manager:
>>>> GridManagerAdapter [enabled=true,
>>>> name=o.a.i.i.managers.discovery.GridDiscoveryManager]
>>>> class org.apache.ignite.IgniteCheckedException: Remote node has peer
>>>> class loading enabled flag different from local [locId8=f02445af,
>>>> locPeerClassLoading=true, rmtId8=8e52f9c9, rmtPeerClassLoading=false,
>>>> rmtAddrs=[LAPTOP-QIT4AVOG/0:0:0:0:0:0:0:1, LAPTOP-QIT4AVOG/127.0.0.1,
>>>> LAPTOP-QIT4AVOG/192.168.0.5,
>>>> LAPTOP-QIT4AVOG/2001:0:9d38:90d7:145b:5bf:bb9b:11d9,
>>>> LAPTOP-QIT4AVOG/2600:8806:0:8d00:0:0:0:1,
>>>> /2600:8806:0:8d00:3ccf:1e94:1ab4:83a9,
>>>> /2600:8806:0:8d00:f114:bf30:2068:352d]]
>>>> at
>>>> org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.checkAttributes(GridDiscoveryManager.java:1027)
>>>> at
>>>> org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:680)
>>>> at
>>>> org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1505)
>>>> at
>>>> org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:917)
>>>> at
>>>> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1688)
>>>> at
>>>> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1547)
>>>> at
>>>> org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1003)
>>>> at
>>>> org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:534)
>>>> at
>>>> org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:515)
>>>> at org.apache.ignite.Ignition.start(Ignition.java:322)
>>>> at
>>>> org.apache.ignite.internal.processors.platform.PlatformAbstractBootstrap.start(PlatformAbstractBootstrap.java
>>>>
>>>> Below if my config for .net node:
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>
>>>> <beans xmlns="http://www.springframework.org/schema/beans"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:schemaLocation="
>>>> http://www.springframework.org/schema/beans
>>>> http://www.springframework.org/schema/beans/spring-beans.xsd">
>>>> <bean id="ignite.cfg"
>>>> class="org.apache.ignite.configuration.IgniteConfiguration">
>>>> <property name="connectorConfiguration">
>>>> <bean
>>>> class="org.apache.ignite.configuration.ConnectorConfiguration">
>>>> <property name="idleTimeout" value="20000"/>
>>>> </bean>
>>>> </property>
>>>>
>>>> <property name="cacheConfiguration">
>>>> <list>
>>>> <bean
>>>> class="org.apache.ignite.configuration.CacheConfiguration">
>>>> <property name="name" value="BU"/>
>>>> <property name="writeThrough" value="true"/>
>>>> <property name="readThrough" value="true"/>
>>>> <property name="writeBehindEnabled" value="true"/>
>>>> <property name="writeBehindFlushFrequency" value="120000"/>
>>>> <property name="cacheStoreFactory">
>>>> <bean
>>>> class="org.apache.ignite.platform.dotnet.PlatformDotNetCacheStoreFactory">
>>>> <property name="typeName"
>>>> value="TestIgniteDAL.SQLServerStore, TestIgniteDAL"/>
>>>> </bean>
>>>> </property>
>>>> <property name ="typeMetadata">
>>>> <list>
>>>> <bean class="org.apache.ignite.cache.CacheTypeMetadata">
>>>> <!-- Type to query. -->
>>>> <property name="valueType" value="BusinessUnit"/>
>>>> <!-- Fields to be queried. -->
>>>> <property name="queryFields">
>>>> <map>
>>>> <entry key="BUID" value="java.lang.Integer"/>
>>>> <entry key="BUName" value="java.lang.String"/>
>>>> <entry key="CreatedByID" value="java.lang.Integer"/>
>>>> <entry key="CreatedDate" value="java.util.Date"/>
>>>> <entry key="ModifiedByID"
>>>> value="java.lang.Integer"/>
>>>> <entry key="ModifiedDate" value="java.util.Date"/>
>>>> </map>
>>>> </property>
>>>> <!-- Fields to index in ascending order. -->
>>>> <property name="ascendingFields">
>>>> <map>
>>>> <entry key="BUID" value="java.lang.Integer"/>
>>>> </map>
>>>> </property>
>>>> </bean>
>>>> </list>
>>>> </property>
>>>> </bean>
>>>> </list>
>>>> </property>
>>>>
>>>> <property name="communicationSpi">
>>>> <bean
>>>> class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
>>>> <property name="sharedMemoryPort" value="-1"/>
>>>> </bean>
>>>> </property>
>>>>
>>>> <property name="discoverySpi">
>>>> <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
>>>> <property name="ipFinder">
>>>> <bean
>>>> class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
>>>> <property name="addresses">
>>>> <list>
>>>> <value>127.0.0.1:47500..47509</value>
>>>> </list>
>>>> </property>
>>>> </bean>
>>>> </property>
>>>> </bean>
>>>> </property>
>>>> </bean>
>>>> </beans>
>>>>
>>>>
>>>> Below is my config for node from c++:
>>>> <?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.
>>>> -->
>>>>
>>>> <beans xmlns="http://www.springframework.org/schema/beans"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xmlns:util="http://www.springframework.org/schema/util"
>>>> xsi:schemaLocation="
>>>> http://www.springframework.org/schema/beans
>>>> http://www.springframework.org/schema/beans/spring-beans.xsd
>>>> http://www.springframework.org/schema/util
>>>> http://www.springframework.org/schema/util/spring-util.xsd">
>>>> <bean id="grid.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"/>
>>>>
>>>> <property name="cacheConfiguration">
>>>> <list>
>>>> <!--
>>>> Partitioned cache example configuration with binary
>>>> objects enabled.
>>>> Used in .NET example that is available only in
>>>> enterprise edition.
>>>> -->
>>>> <bean
>>>> class="org.apache.ignite.configuration.CacheConfiguration">
>>>> <property name="atomicityMode" value="ATOMIC"/>
>>>> <property name="backups" value="1"/>
>>>> </bean>
>>>>
>>>> <!--
>>>> Partitioned cache example configuration.
>>>> Used in .NET cache store example that is available
>>>> only in enterprise edition.
>>>> -->
>>>> <bean
>>>> class="org.apache.ignite.configuration.CacheConfiguration">
>>>> <property name="name" value="tx"/>
>>>> <property name="atomicityMode"
>>>> value="TRANSACTIONAL"/>
>>>> <property name="backups" value="1"/>
>>>> </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.
>>>> -->
>>>> <!-- 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..47501</value>
>>>> </list>
>>>> </property>
>>>> </bean>
>>>> </property>
>>>> </bean>
>>>> </property>
>>>> </bean>
>>>> </beans>
>>>>
>>>> Below c++ code is trying to access the cache:
>>>> int main()
>>>> {
>>>> IgniteConfiguration cfg;
>>>>
>>>> cfg.jvmInitMem = 512;
>>>> cfg.jvmMaxMem = 512;
>>>>
>>>> //cfg.springCfgPath = "platforms/cpp/examples/config/example-cache.xml";
>>>> cfg.springCfgPath = "config/example-cache.xml";
>>>> try
>>>> {
>>>> // Start a node.
>>>> Ignite grid = Ignition::Start(cfg);
>>>> std::cout << std::endl;
>>>> std::cout << ">>> Cache node started." << std::endl;
>>>> std::cout << std::endl;
>>>>
>>>> //string key
>>>> Cache<std::string, CBusinessObject> cache = grid.GetCache<std::string,
>>>> CBusinessObject>("BU");
>>>> cache.Clear();
>>>> CBusinessObject obj("MSFT", 45.23);
>>>> //save in cache
>>>> cache.Put("MSFT", obj);
>>>>
>>>> //retreive from cache
>>>> CBusinessObject result = cache.Get("MSFT");
>>>>
>>>> std::cout << result.ToString();
>>>>
>>>> // Stop node.
>>>> Ignition::StopAll(false);
>>>> }
>>>> catch (IgniteError& err)
>>>> {
>>>> std::cout << "An error occurred: " << err.GetText() << std::endl;
>>>> }
>>>>
>>>> std::cout << std::endl;
>>>> std::cout << ">>> Execution finished, press any key to exit ..." <<
>>>> std::endl;
>>>> std::cout << std::endl;
>>>>
>>>> std::cin.get();
>>>>
>>>> return 0;
>>>> }
>>>>
>>>> Thanks for any help.
>>>>
>>>
>>>
>>
>