Return-Path: X-Original-To: apmail-ignite-user-archive@minotaur.apache.org Delivered-To: apmail-ignite-user-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3D758191A9 for ; Thu, 21 Apr 2016 03:41:28 +0000 (UTC) Received: (qmail 54547 invoked by uid 500); 21 Apr 2016 03:41:28 -0000 Delivered-To: apmail-ignite-user-archive@ignite.apache.org Received: (qmail 54495 invoked by uid 500); 21 Apr 2016 03:41:27 -0000 Mailing-List: contact user-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@ignite.apache.org Delivered-To: mailing list user@ignite.apache.org Received: (qmail 54485 invoked by uid 99); 21 Apr 2016 03:41:27 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 21 Apr 2016 03:41:27 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 5E8B0180547 for ; Thu, 21 Apr 2016 03:41:27 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.179 X-Spam-Level: * X-Spam-Status: No, score=1.179 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id WIxRxikAZabF for ; Thu, 21 Apr 2016 03:41:20 +0000 (UTC) Received: from mail-oi0-f42.google.com (mail-oi0-f42.google.com [209.85.218.42]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 3315960CDD for ; Thu, 21 Apr 2016 03:41:20 +0000 (UTC) Received: by mail-oi0-f42.google.com with SMTP id x201so66048949oif.3 for ; Wed, 20 Apr 2016 20:41:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to; bh=0uftbffhvPWuHUrRmRFv7e4EtSCgQf9H6f9Ds2Jzfk8=; b=SAk34kpZV61TSYFa7CGxfd/GqgB49O2RCr/NOifNZwmVcyWlTJf1fMX71Or+vnHRy/ KqjqJeAGf1NcQuUXqF8Ry9dyhotYEm5A7tMxN0z48Q73fX6Rd0tCEyWLoDAAbeIWKgbt RRSwqwnqA0kjhOlKA17uMpl/oka6+bB/jSfNZE2Gdw7oAzYF7pxBjCfxRqYHJH3EkUKu w6QGPu1BYY/oI7i4j75mP7DQNCDREwPTa3l+RCUF1BzSxYBJktRXt1gUqEEomorieb3J fRXnw3yJAGL0KYqYiHCE8UE5kNuDaxNIhAvlbOGBl/hWnNYUTGmM4ABspiZ880iONCYi gqXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to; bh=0uftbffhvPWuHUrRmRFv7e4EtSCgQf9H6f9Ds2Jzfk8=; b=SDSIGTZhmk2i15YrxQxYLy57RxGORH8Ce5YbEvIg9TJAb0VaGwALFzZ08fzbUJ3Cpq 48MdreHbXo2dPOWk7ON2prdOwUUWekB35hb9kX5IcpkW/cDn7dkg2h1pgHgTyfjurN5G ozCdb3WFKv0g14w+fRizIVrEe3YjG+jZm/hKlLzwBG/nTFEJzNtvH7UgVQ2gFebucxh8 LiIK7x5ScpOn9snC1FPHF7uOToeCbZ67P2Ud6iU5+UbkldiYaJeKJHLRPCRmYHz7qyuH XnUDX8cERyXceez0pajF6t6IE9YFPndUIdO6/y7pHu+HQOseurxce1KbEfzu+ZqCuVRV u2nw== X-Gm-Message-State: AOPr4FWzogOJbicirscjJCSQFccLcHjFJt9nQ+Tw40ca7HWqJ7d0JiQ8bclzA2OoLmfWyxkQnjPKfjb6dBVaGw== MIME-Version: 1.0 X-Received: by 10.202.180.137 with SMTP id d131mr5008925oif.135.1461210079280; Wed, 20 Apr 2016 20:41:19 -0700 (PDT) Received: by 10.202.84.70 with HTTP; Wed, 20 Apr 2016 20:41:19 -0700 (PDT) In-Reply-To: References: Date: Wed, 20 Apr 2016 23:41:19 -0400 Message-ID: Subject: Re: Error running nodes in .net and c++ From: Murthy Kakarlamudi To: user@ignite.apache.org Content-Type: multipart/alternative; boundary=001a113cc546b7c4590530f67b3b --001a113cc546b7c4590530f67b3b Content-Type: text/plain; charset=UTF-8 Oh OK. Thanks for the information. I was able to start a java based server node that reads data from SQL Server for my use case. Next I am going to start c++ in client mode and see if I can access the cache. Thanks, Satya. On Wed, Apr 20, 2016 at 4:31 AM, Vladimir Ozerov wrote: > Hi Murthy, > > Yes, there will be more examples in further versions. Though, for now it > is impossible to plug C++ based store, and this feature is not planned for > 1.6 release. So I do not expect C++ examples with stores in 1.6. > Instead, I'd better to look at Java or .NET examples with store as these > platforms support plugable store implementations. > > Vladimir. > > On Tue, Apr 19, 2016 at 7:34 PM, Murthy Kakarlamudi > wrote: > >> Thanks Vladimir for the explanation. I am working on the workaround >> suggested by Igor. I will reach out to the group if I run into any issues. >> >> One quick question. I am using 1.5 version. I only see 1 c++ example. Are >> there more c++ examples in future versions? Especially around using stores. >> >> Regards >> Satya. >> >> On Tue, Apr 19, 2016 at 9:20 AM, Vladimir Ozerov >> wrote: >> >>> Hi Murthy, >>> >>> Exception you observed is essentially not a bug, but rather expected >>> behavior with current Ignite architecture. Ignite support transactions. >>> When you initiate a transaction from a client node, only this node has the >>> full set of updated keys, and hence only this node is able to propagate >>> updates to underlying database within a single database transaction. For >>> this reason, Ignite creates and initializes store on every node, even if >>> this node is client. >>> >>> As Igor suggested, the best workaround for now is to rely on Java store >>> because every node (Java, C++, .NET) has a Java inside and hence is able to >>> work with Java-based store. On the other hand, I clearly understand that >>> this architecture doesn't fit well in your use case and is not very >>> convenient from user perspective. We will think about possible ways to >>> resolve it. >>> >>> One very simple solution - do not initialize store if we know for sure >>> that the client will not use it. For example, this is so in case of ATOMIC >>> cache or asynchronous (write-behind) store. >>> >>> Vladimir. >>> >>> >>> >>> On Tue, Apr 19, 2016 at 2:31 PM, Murthy Kakarlamudi >>> wrote: >>> >>>> OK Igor. Let me try from Java. >>>> >>>> From a high level, we have a backend application implemented in c++ and >>>> the front end is asp.net mvc. Data store is SQL Server. >>>> >>>> Use case is, I need to load data from SQL Server into Ignite Cache upon >>>> start up. .Net and C++ acting as clients need to access the cache and >>>> update it. Those updates should be written to the underlying SQL Server in >>>> an asynchronous way so as not to impact the cache performance. The updates >>>> that gets written from .Net client need to be accessed by C++ client. We >>>> have a need to use SQL Queries to access cache from either of the clients. >>>> >>>> I can start the cache from Java server node. However, as .net and c++ >>>> are being used in our application, we prefer sticking to those 2 and not >>>> introduce Java. >>>> >>>> Thanks, >>>> Satya. >>>> >>>> On Tue, Apr 19, 2016 at 6:30 AM, Igor Sapego >>>> wrote: >>>> >>>>> Right now I can see the following workaround for you: you can switch >>>>> from .Net CacheStoreFactory to Java's one. This way all types of >>>>> clients >>>>> will be able to instantiate your cache. >>>>> >>>>> If you are willing to you can describe your use-case so we can >>>>> try and find some other solution if this workaround is not suitable >>>>> for you. >>>>> >>>>> Best Regards, >>>>> Igor >>>>> >>>>> On Tue, Apr 19, 2016 at 1:06 PM, Murthy Kakarlamudi >>>>> wrote: >>>>> >>>>>> Thank You. >>>>>> On Apr 19, 2016 6:01 AM, "Igor Sapego" wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> It looks like a bug for me. I've submitted an issue for it - [1]. >>>>>>> >>>>>>> [1] - https://issues.apache.org/jira/browse/IGNITE-3025. >>>>>>> >>>>>>> Best Regards, >>>>>>> Igor >>>>>>> >>>>>>> On Mon, Apr 18, 2016 at 1:35 AM, Murthy Kakarlamudi < >>>>>>> ksatya@gmail.com> wrote: >>>>>>> >>>>>>>> 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 < >>>>>>>> ptupitsyn@gridgain.com> 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: >>>>>>>>> >>>>>>>>> >>>>>>>>> Let me know if this helps. >>>>>>>>> >>>>>>>>> Pavel. >>>>>>>>> >>>>>>>>> On Sun, Apr 17, 2016 at 2:35 PM, Murthy Kakarlamudi < >>>>>>>>> ksatya@gmail.com> 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 < >>>>>>>>>> ptupitsyn@gridgain.com> 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: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Pavel. >>>>>>>>>>> >>>>>>>>>>> On Sun, Apr 17, 2016 at 2:29 AM, Murthy Kakarlamudi < >>>>>>>>>>> ksatya@gmail.com> 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: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> 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"> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.configuration.IgniteConfiguration"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.configuration.ConnectorConfiguration"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.configuration.CacheConfiguration"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> value="120000"/> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.platform.dotnet.PlatformDotNetCacheStoreFactory"> >>>>>>>>>>>> >>>>>>>>>>> value="TestIgniteDAL.SQLServerStore, TestIgniteDAL"/> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.cache.CacheTypeMetadata"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> value="BusinessUnit"/> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> value="java.lang.Integer"/> >>>>>>>>>>>> >>>>>>>>>>> value="java.lang.String"/> >>>>>>>>>>>> >>>>>>>>>>> value="java.lang.Integer"/> >>>>>>>>>>>> >>>>>>>>>>> value="java.util.Date"/> >>>>>>>>>>>> >>>>>>>>>>> value="java.lang.Integer"/> >>>>>>>>>>>> >>>>>>>>>>> value="java.util.Date"/> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> value="java.lang.Integer"/> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> 127.0.0.1:47500..47509 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Below is my config for node from c++: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> 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"> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.configuration.IgniteConfiguration"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.configuration.CacheConfiguration"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.configuration.CacheConfiguration"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> value="TRANSACTIONAL"/> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> 127.0.0.1:47500 >>>>>>>>>>>> ..47501 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> 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 cache = >>>>>>>>>>>> grid.GetCache("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. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>> >>> >> > --001a113cc546b7c4590530f67b3b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Oh OK. Thanks for the information. I was able to start a j= ava based server node that reads data from SQL Server for my use case. Next= I am going to start c++ in client mode and see if I can access the cache.<= div>
Thanks,
Satya.

On Wed, Apr 20, 2016 at 4:31 AM, Vlad= imir Ozerov <vozerov@gridgain.com> wrote:
Hi Murthy,

Yes, ther= e will be more examples in further versions. Though, for now it is impossib= le to plug C++ based store, and this feature is not planned for 1.6 release= . So I do not expect C++ examples with stores in 1.6.=C2=A0
Inste= ad, I'd better to look at Java or .NET examples with store as these pla= tforms support plugable store implementations.
=

Vladimir.

=
On Tue, Apr 19, 2016 at 7:34 PM, Murthy Kakarlam= udi <ksatya@gmail.com> wrote:
Thanks Vladimir for the explanation. I am working on th= e workaround suggested by Igor. I will reach out to the group if I run into= any issues.

One quick question. I am using 1.5 version.= I only see 1 c++ example. Are there more c++ examples in future versions? = Especially around using stores.

Regards
= Satya.

On Tue, Apr 19, 2016 at 9:20 AM, Vladimir Ozerov <vozerov@gr= idgain.com> wrote:
Hi Murthy,

Exception you observed is essentiall= y not a bug, but rather expected behavior with current Ignite architecture.= Ignite support transactions. When you initiate a transaction from a client= node, only this node has the full set of updated keys, and hence only this= node is able to propagate updates to underlying database within a single d= atabase transaction. For this reason, Ignite creates and initializes store = on every node, even if this node is client.

As Igo= r suggested, the best workaround for now is to rely on Java store because e= very node (Java, C++, .NET) has a Java inside and hence is able to work wit= h Java-based store. On the other hand, I clearly understand that this archi= tecture doesn't fit well in your use case and is not very convenient fr= om user perspective. We will think about possible ways to resolve it.=C2=A0=

One very simple solution - do not initialize stor= e if we know for sure that the client will not use it. For example, this is= so in case of ATOMIC cache or asynchronous (write-behind) store.=C2=A0

Vladimir.


On Tue, Apr 19, 2016 at 2:31 PM, Murthy = Kakarlamudi <ksatya@gmail.com> wrote:
OK Igor. Let me try from Java.=C2=A0

From a high level, we have a backend application implemented in c+= + and the front end is asp.net= mvc. Data store is SQL Server.=C2=A0

Use case= is, I need to load data from SQL Server into Ignite Cache upon start up. .= Net and C++ acting as clients need to access the cache and update it. Those= updates should be written to the underlying SQL Server in an asynchronous = way so as not to impact the cache performance.=C2=A0 The updates that gets = written from .Net client need to be accessed by C++ client. We have a need = to use SQL Queries to access cache from either of the clients.=C2=A0
<= div>
I can start the cache from Java server node. However, as= .net and c++ are being used in our application, we prefer sticking to thos= e 2 and not introduce Java.

Thanks,
Saty= a.

On Tue, Apr 19, 2016 at 6:30 AM, Igor Sapego <<= a href=3D"mailto:isapego@gridgain.com" target=3D"_blank">isapego@gridgain.c= om> wrote:
Right now I can see the following workaround for you: you can switch
f= rom .Net CacheStoreFactory to Java's one. This way all types of clients=
will be able to instantiate your cache.

<= div>If you are willing to you can describe your use-case so we can
try and find some other solution if this workaround is not suitable
=
for you.

Best Regards,
Igor
=

On Tue, Apr 19, 2016 at 1:06 PM, Murthy Kaka= rlamudi <ksatya@gmail.com> wrote:

Thank You.

On Apr 19, 2016 6:01 AM, "Igor Sapego"= <isapego@grid= gain.com> wrote:
Hi,

It looks like a bug for me. I&#= 39;ve submitted an issue for it - [1].


Be= st Regards,
Igor

On Mon, Apr 18, 2016 at 1:35 AM, Murthy Kaka= rlamudi <ksatya@gmail.com> wrote:
The client node itself starts after making the chan= ge, but getting the below error trying to access the cache:

<= div>
[12:16:45] Topology snapshot [ver=3D2, servers=3D1, clients=3D1, C= PUs=3D4, heap=3D1.4GB]

>>> Cache node sta= rted.

[12:16:45,439][SEVERE][exchange-worker-#38%n= ull%][GridDhtPartitionsExchangeFuture] Failed to reinitialize local partiti= ons (preloading will be stopped): GridDhtPartitionExchangeId [topVer=3DAffi= nityTopologyVersion [topVer=3D2, minorTopVer=3D1], nodeId=3D2bf10735, evt= =3DDISCOVERY_CUSTOM_EVT]
PlatformNoCallbackException []
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.processors= .platform.callback.PlatformCallbackUtils.cacheStoreCreate(Native Method)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.processor= s.platform.callback.PlatformCallbackGateway.cacheStoreCreate(PlatformCallba= ckGateway.java:63)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.igni= te.internal.processors.platform.dotnet.PlatformDotNetCacheStore.initialize(= PlatformDotNetCacheStore.java:338)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at= org.apache.ignite.internal.processors.platform.PlatformProcessorImpl.regis= terStore0(PlatformProcessorImpl.java:347)
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 at org.apache.ignite.internal.processors.platform.PlatformProcessorI= mpl.registerStore(PlatformProcessorImpl.java:317)
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 at org.apache.ignite.internal.processors.cache.store.CacheOsS= toreManager.start0(CacheOsStoreManager.java:60)
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 at org.apache.ignite.internal.processors.cache.GridCacheManagerA= dapter.start(GridCacheManagerAdapter.java:50)
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 at org.apache.ignite.internal.processors.cache.GridCacheProcesso= r.startCache(GridCacheProcessor.java:1051)
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 at org.apache.ignite.internal.processors.cache.GridCacheProce= ssor.prepareCacheStart(GridCacheProcessor.java:1648)
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.processors.cache.GridCacheP= rocessor.prepareCachesStart(GridCacheProcessor.java:1563)
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.processors.cache.distrib= uted.dht.preloader.GridDhtPartitionsExchangeFuture.startCaches(GridDhtParti= tionsExchangeFuture.java:956)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.= apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPa= rtitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:523)
=

On Sun, Apr 17, 2016 at 10:49 AM, Pavel Tupitsyn <= ;ptupitsyn@grid= gain.com> wrote:
This exception appears due to the fact that .NET store can't b= e 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=3D"clientMod= e" value=3D"true"/>

Let me= know if this helps.

Pavel.

<= div class=3D"gmail_quote">On Sun, Apr 17, 2016 at 2:35 PM, Murthy Kakarlamu= di <ksatya@gmail.com> wrote:
Hi Pavel...such an obvious thing that I missed. I was al= ways 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 questi= on. 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 relati= on information. In my c++ node, acting as a client, what should go in its c= onfig? As it does not access DB, I assumed CacheStore related information i= s not needed in its config. So I am not sure what should go into my c++ con= fig. If I do have to have the CacheStore info in the c++ client node, Is th= ere a c++ cachestore implementation example?

Below is th= e error I am getting:
[07:18:03,292][SEVERE][main][IgniteKer= nal] Got exception while starting (will rollback startup routine).
PlatformNoCallbackException []
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at o= rg.apache.ignite.internal.processors.platform.callback.PlatformCallbackUtil= s.cacheStoreCreate(Native Method)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at = org.apache.ignite.internal.processors.platform.callback.PlatformCallbackGat= eway.cacheStoreCreate(PlatformCallbackGateway.java:63)
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.processors.platform.dotnet.= PlatformDotNetCacheStore.initialize(PlatformDotNetCacheStore.java:338)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.processors.= platform.PlatformProcessorImpl.registerStore0(PlatformProcessorImpl.java:34= 7)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.proc= essors.platform.PlatformProcessorImpl.registerStore(PlatformProcessorImpl.j= ava:317)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.interna= l.processors.cache.store.CacheOsStoreManager.start0(CacheOsStoreManager.jav= a:60)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.p= rocessors.cache.GridCacheManagerAdapter.start(GridCacheManagerAdapter.java:= 50)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.pro= cessors.cache.GridCacheProcessor.startCache(GridCacheProcessor.java:1051)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.processo= rs.cache.GridCacheProcessor.onKernalStart(GridCacheProcessor.java:787)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.IgniteKerna= l.start(IgniteKernal.java:946)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(Ignitio= nEx.java:1688)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.i= nternal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1547)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.IgnitionEx.star= t0(IgnitionEx.java:1003)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apach= e.ignite.internal.IgnitionEx.start(IgnitionEx.java:534)
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.IgnitionEx.start(Ignitio= nEx.java:515)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.Ig= nition.start(Ignition.java:322)
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 at org.apache.ignite.internal.processors.platform.PlatformAbstractBoots= trap.start(PlatformAbstractBootstrap.java:36)
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 at org.apache.ignite.internal.processors.platform.PlatformIgniti= on.start(PlatformIgnition.java:72)
[07:18:03] Ignite node stopped= OK [uptime=3D00:00:08:267]
An error occurred: Callback handler i= s not set in native platform.

On Sun, Apr 17, 2016 at 4:15 AM, Pa= vel Tupitsyn <ptupitsyn@gridgain.com> wrote:
Hi,

>= =C2=A0Remote node has peer class loading e= nabled flag different from local
As the error messa= ge says, peerClassLoading flag has to be the same on all nodes.
<= br>
Please remove the following line from your C++ config:
<= span>
<property name=3D"peerCl= assLoadingEnabled" value=3D"true"/>
=
Pavel.

On Sun, Apr 17, 2016 at 2:29 AM, Murthy Kakarlamudi <ksatya@gmail.c= om> wrote:
Hi,
=C2=A0 =C2=A0In 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 t= hose 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++.=C2=A0

[19:08:57] Security status [authentication=3Doff, tls/ssl=3Dof= f]
[19:08:58,163][SEVERE][main][IgniteKernal] Failed to start man= ager: GridManagerAdapter [enabled=3Dtrue, name=3Do.a.i.i.managers.discovery= .GridDiscoveryManager]
class org.apache.ignite.IgniteCheckedExcep= tion: Remote node has peer class loading enabled flag different from local = [locId8=3Df02445af, locPeerClassLoading=3Dtrue, rmtId8=3D8e52f9c9, rmtPeerC= lassLoading=3Dfalse, rmtAddrs=3D[LAPTOP-QIT4AVOG/0:0:0:0:0:0:0:1, LAPTOP-QI= T4AVOG/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:8d= 00:f114:bf30:2068:352d]]
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apach= e.ignite.internal.managers.discovery.GridDiscoveryManager.checkAttributes(G= ridDiscoveryManager.java:1027)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org= .apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridD= iscoveryManager.java:680)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apac= he.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1505)
<= div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.IgniteKernal.= start(IgniteKernal.java:917)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.a= pache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java= :1688)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.= IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1547)
=C2=A0= =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.internal.IgnitionEx.start0(Ignit= ionEx.java:1003)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite= .internal.IgnitionEx.start(IgnitionEx.java:534)
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:5= 15)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.ignite.Ignition.sta= rt(Ignition.java:322)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.i= gnite.internal.processors.platform.PlatformAbstractBootstrap.start(Platform= AbstractBootstrap.java

Below if my config fo= r .net node:
<?xml version=3D"1.0" encoding=3D&= quot;UTF-8"?>

=C2=A0 =C2=A0 = =C2=A0 =C2=A0xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance&q= uot;
=C2=A0 =C2=A0 =C2=A0 =C2=A0xsi:schemaLocation=3D"
=
=C2=A0= <bean id=3D"ignite.cfg" class=3D"org.apache.ignite.confi= guration.IgniteConfiguration">
=C2=A0 =C2=A0 <property= name=3D"connectorConfiguration">
=C2=A0 =C2=A0 =C2= =A0 <bean class=3D"org.apache.ignite.configuration.ConnectorConfigu= ration">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D= "idleTimeout" value=3D"20000"/>
=C2=A0 =C2= =A0 =C2=A0 </bean>
=C2=A0 =C2=A0 </property>

=C2=A0 =C2=A0 <property name=3D"cacheConfiguration= ">
=C2=A0 =C2=A0 =C2=A0 <list>
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 <bean class=3D"org.apache.ignite.configuration.Ca= cheConfiguration">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <= ;property name=3D"name" value=3D"BU"/>
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"writeThrough"= ; value=3D"true"/>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 <property name=3D"readThrough" value=3D"true"/&g= t;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"w= riteBehindEnabled" value=3D"true"/>
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"writeBehindFlushFrequenc= y" value=3D"120000"/>
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 <property name=3D"cacheStoreFactory">
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <bean class=3D"org.apache= .ignite.platform.dotnet.PlatformDotNetCacheStoreFactory">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"= ;typeName" value=3D"TestIgniteDAL.SQLServerStore, TestIgniteDAL&q= uot;/>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </bean>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </property>
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <property name =3D"typeMetadata&= quot;>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <list><= /div>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <bean class= =3D"org.apache.ignite.cache.CacheTypeMetadata">
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <!-- Type to query.= -->
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &= lt;property name=3D"valueType" value=3D"BusinessUnit"/&= gt;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <!= -- Fields to be queried. -->
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"queryFields">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <= map>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 <entry key=3D"BUID" value=3D"java.lang.Inte= ger"/>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 <entry key=3D"BUName" value=3D"java.= lang.String"/>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 <entry key=3D"CreatedByID" value= =3D"java.lang.Integer"/>
=C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <entry key=3D"CreatedDat= e" value=3D"java.util.Date"/>
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <entry key=3D"= ModifiedByID" value=3D"java.lang.Integer"/>
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <entr= y key=3D"ModifiedDate" value=3D"java.util.Date"/>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <= /map>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = </property>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 <!-- Fields to index in ascending order. -->
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D&q= uot;ascendingFields">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 <map>
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <entry key=3D"BUID&qu= ot; value=3D"java.lang.Integer"/>
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </map>
=C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </property>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </bean>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </list>
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 </property>
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 </bean>
=C2=A0 =C2=A0 =C2=A0 </list>
=
=C2=A0 =C2=A0 </property>

=C2=A0 =C2=A0= <property name=3D"communicationSpi">
=C2=A0 =C2= =A0 =C2=A0 <bean class=3D"org.apache.ignite.spi.communication.tcp.T= cpCommunicationSpi">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 <prop= erty name=3D"sharedMemoryPort" value=3D"-1"/>
<= div>=C2=A0 =C2=A0 =C2=A0 </bean>
=C2=A0 =C2=A0 </propert= y>

=C2=A0 =C2=A0 <property name=3D"disc= overySpi">
=C2=A0 =C2=A0 =C2=A0 <bean class=3D"or= g.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"ipFinder">
=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <bean class=3D"org.apache.i= gnite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<= div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"add= resses">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= <list>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 <value>127.0.0.1:47500..47509</value>
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </list>
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </property>
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 </bean>
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 </property>
=C2=A0 =C2=A0 =C2=A0 </bean>
=C2=A0 =C2=A0 </property>
=C2=A0 </bean>
= </beans>


Below is my co= nfig for node from c++:
<?xml version=3D"1.0" e= ncoding=3D"UTF-8"?>

<!--
=C2=A0 Licensed to the Apache Software Foundation (ASF) under one or more<= /div>
=C2=A0 contributor license agreements.=C2=A0 See the NOTICE file = distributed with
=C2=A0 this work for additional information rega= rding copyright ownership.
=C2=A0 The ASF licenses this file to Y= ou under the Apache License, Version 2.0
=C2=A0 (the "Licens= e"); you may not use this file except in compliance with
=C2= =A0 the License.=C2=A0 You may obtain a copy of the License at

=C2=A0 Unless required by applicable law= or agreed to in writing, software
=C2=A0 distributed under the L= icense is distributed on an "AS IS" BASIS,
=C2=A0 WITHO= UT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
=C2=A0 See the License for the specific language governing permissions a= nd
=C2=A0 limitations under the License.
-->

=C2=A0 =C2=A0 =C2=A0 =C2=A0xmlns:xsi=3D"= htt= p://www.w3.org/2001/XMLSchema-instance"
=C2=A0 =C2=A0 = =C2=A0 =C2=A0xmlns:util=3D"http://www.springframework.org/schema/util"
=C2=A0 =C2=A0 =C2=A0 =C2=A0xsi:schemaLocation=3D"
=C2=A0 =C2=A0= =C2=A0 =C2=A0 http://www.springframework.org/schema/util
=C2=A0 =C2=A0 <bean id=3D= "grid.cfg" class=3D"org.apache.ignite.configuration.IgniteCo= nfiguration">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 <!-- Set to = true to enable distributed class loading for examples, default is false. --= >
=C2=A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"peerCl= assLoadingEnabled" value=3D"true"/>

<= div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"cacheConfiguratio= n">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <list>= ;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <!--=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 Partitioned cache example configuration with binary objects enabled.=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 Used in .NET example that is available only in enterprise edition.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -->
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <bean cla= ss=3D"org.apache.ignite.configuration.CacheConfiguration">
<property name= =3D"atomicityMode" value=3D"ATOMIC"/>
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <prop= erty name=3D"backups" value=3D"1"/>
=C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </bean>
<= br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <!= --
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 Partitioned cache example configuration.
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Used in .NET cache = store example that is available only in enterprise edition.
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -->
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <bean class=3D"= ;org.apache.ignite.configuration.CacheConfiguration">
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <prop= erty name=3D"name" value=3D"tx"/>
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <property= name=3D"atomicityMode" value=3D"TRANSACTIONAL"/>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 <property name=3D"backups" value=3D"1"/>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </bean>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </list>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 </property>

= =C2=A0 =C2=A0 =C2=A0 =C2=A0 <!-- Explicitly configure TCP discovery SPI = to provide list of initial nodes. -->
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 <property name=3D"discoverySpi">
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <bean class=3D"org.apache.ignite.sp= i.discovery.tcp.TcpDiscoverySpi">
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"ipFinder"= >
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 <!--
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Ignite provides several options for = automatic discovery that can be used
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 instead os static I= P based discovery.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 -->
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <!-- Uncomment static IP finder t= o enable static-based discovery of initial nodes. -->
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <bean cla= ss=3D"org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIp= Finder">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 <!-- <bean class=3D"org.apache.ignite.spi.= discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"> --= >
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 <property name=3D"addresses">
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 <list>
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 <!-- In distributed environment, replace with actual h= ost IP address. -->
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <v= alue>127.0.0.1:47500..47501</value>
=C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 </list>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </property>
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </bean>= ;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </pr= operty>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </bean>= ;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 </property>
=C2=A0 = =C2=A0 </bean>
</beans>

Below c++ code is trying to access the cache:
int main()
{
IgniteCon= figuration cfg;

cfg.jvmInitMem =3D 512;
cfg.jvmMaxMem =3D 512;

//cfg.springCfgPath =3D "platforms/c= pp/examples/config/example-cache.xml";
cfg.springCfgPath =3D "config/example-cache.xm= l";
try
{
// Start a node.
Ignite grid =3D Ignition::Start(cfg);
std::cout << std::end= l;
std::cout <&l= t; ">>> Cache node started." << std::endl;
std::cout << std::en= dl;

= //string key
Cache&= lt;std::string, CBusinessObject> cache =3D grid.GetCache<std::string,= CBusinessObject>("BU");
cache.Clear();
CBu= sinessObject obj("MSFT", 45.23);
<= /span>//save in cache
cache.Put("MSFT", obj);

//retreive from cache
CBusinessObject result =3D 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 << ">>> Exe= cution finished, press any key to exit ..." << std::endl;
<= div> std::cout << std::en= dl;

s= td::cin.get();

=C2=A0 =C2=A0 return 0;
}=

Thanks for any help.











--001a113cc546b7c4590530f67b3b--