Hi Stan,

Could you please elaborate more on this point "*but if cache configured
with write-through or read-through modes enabled then data consistency
between Ignite persistence and CacheStore is not guaranteed at all times*" .

If I have enabled ignite persistence and my cache is also read-through and
write-through then why does it not guarantee 100% data consistency?


Thanks,
Prasad

On Wed, Feb 21, 2018 at 7:29 PM, Stanislav Lukyanov <stanlukya...@gmail.com>
wrote:

> Sorry, I wasn’t completely correct. Persistence and CacheStore can work
> together, but if cache configured with write-through or read-through modes
> enabled then data consistency between Ignite persistence and CacheStore is
> not guaranteed at all times, so such configurations are usually avoided.
> However, from what you’re saying it seems that you don’t need write-through
> or read-through, so it should work fine.
>
> Your solution seems OK. If you only need a one-time setup I guess you
> could also do it without a CacheStore and just get the data from Oracle and
> put it into Ignite via putAll or DataStreamer.
>
>
>
> Thanks,
>
> Stan
>
>
>
> *From: *Prasad Bhalerao <prasadbhalerao1...@gmail.com>
> *Sent: *21 февраля 2018 г. 14:33
> *To: *user@ignite.apache.org
> *Subject: *Re: Using 3rd party DB together with native persistence (WAS:
> GettingInvalid state exception when Persistance is enabled.)
>
>
>
> Hi Stan,
>
>
>
> Thank you for the reply. I will send different questions separately now
> onwards.
>
>
>
> I do not understand what are you trying to say ( "*Ignite doesn’t support
> using 3rd party DBs and native persistence with the same cache*" ) .
>
>
>
> If the persistence is enabled and if you create or load the cache from 3rd
> party DB or any other source, data is always stored/backed in ignite native
> persistence store.
>
>
>
> I have enable the persistence using IgniteConfiguration. I believe that
> this configuration is global and so it is applicable to all the caches I
> have created. As per my understanding, if persistence is enabled any cache
> created will be stored/backed in ignite persistence store.
>
> So now if I load the data in cache from oracle or any other DB table, it
> will be persisted in ignite native persistence file system. The point is I
> want to load the cache from oracle tables only first time or when the cache
> is empty. To load the cache from 3rd party DB I am using cache.loadCache
> method.
>
>
>
> I am checking cache size, if the size is zero I call loadCache method. If
> the cache is not empty it means that data is already loaded in previous
> attempt so no need to call loadCache method.
>
> I just wanted to know if there is any better solution to achieve this.
>
>
>
>
>
> Thanks,
>
> Prasad
>
>
>
> On Wed, Feb 21, 2018 at 1:33 PM, Stanislav Lukyanov <
> stanlukya...@gmail.com> wrote:
>
> Hi Prasad,
>
>
>
> // Please send different questions separately – this way it’s easier to
> answer and to search for existing answers
>
>
>
> > Also, I am loading the cache from oracle table using loadCache method.
> If the persistence is enabled and if the data is already persisted, I want
> to make sure that the cache is loaded from persisted data instead of
> loading it from oracle table using loadCache. Can someone please advise how
> this can be achieved?
>
>
>
>
>
> Ignite doesn’t support using 3rd party DBs and native persistence with the
> same cache.
>
> If you need to use both, I’d suggest to create two caches, one backed by
> Oracle and one with enabled Ignite persistence, and alternate between them
> in your application code.
>
>
>
> Thanks,
>
> Stan
>
>
>
> *From: *Prasad Bhalerao <prasadbhalerao1...@gmail.com>
> *Sent: *20 февраля 2018 г. 15:24
> *To: *user@ignite.apache.org
> *Subject: *Getting Invalid state exception when Persistance is enabled.
>
>
>
> Hi,
>
>
>
> I am starting ignite node in server mode in intellij. I am starting only
> one instance of it. I am using IgniteSpringBean to set configuration and
> start the node as shown below. But when I enable persistence, I get
> following exception.
>
>
>
> Caused by: java.lang.IllegalStateException: Ignite is in invalid state to
> perform this operation. It either not started yet or has already being or
> have stopped [ignite=null, cfg=null]
>
>
>
> As per the doc, IgniteSpringBean is responsible for starting the ignite.
> So how to set node to active state in case this case?
>
>
>
> Also, I am loading the cache from oracle table using loadCache method. If
> the persistence is enabled and if the data is already persisted, I want to
> make sure that the cache is loaded from persisted data instead of loading
> it from oracle table using loadCache. Can someone please advise how this
> can be achieved?
>
>
>
> Code to config ignite and cache:
>
>
>
> @Bean
> *public *IgniteSpringBean igniteInstance() {
>     IgniteSpringBean ignite = *new *IgniteSpringBean();
>     *ignite.active(**true**);*
>     ignite.setConfiguration(getIgniteConfiguration());
>
>     *return *ignite;
> }
>
> *private *IgniteConfiguration getIgniteConfiguration() {
>
>     String HOST = *"127.0.0.1:47500..47509"*;
>     TcpDiscoveryVmIpFinder ipFinder = *new *TcpDiscoveryVmIpFinder();
>     ipFinder.setAddresses(Collections.*singletonList*(HOST));
>
>     TcpDiscoverySpi discoSpi = *new *TcpDiscoverySpi();
>     discoSpi.setIpFinder(ipFinder);
>
>     IgniteConfiguration cfg = *new *IgniteConfiguration();
>     cfg.setDiscoverySpi(discoSpi);
>     cfg.setIgniteInstanceName(*"springDataNode"*);
>     cfg.setPeerClassLoadingEnabled(*false*);
>     cfg.setRebalanceThreadPoolSize(4);
>
>  *   DataStorageConfiguration storageCfg = **new *
> *DataStorageConfiguration();    
> storageCfg.getDefaultDataRegionConfiguration().setPersistenceEnabled(**true*
> *);    cfg.setDataStorageConfiguration(storageCfg);*
>
>     CacheConfiguration<IPRangeDataKey, IPV4RangeData> ipv4RangeCacheCfg = 
> *new *CacheConfiguration<>(*"IPV4RangeCache"*);
>     ipv4RangeCacheCfg.setAtomicityMode(CacheAtomicityMode.*TRANSACTIONAL*);
>     ipv4RangeCacheCfg.setWriteThrough(*false*);
>     ipv4RangeCacheCfg.setReadThrough(*false*);
>     ipv4RangeCacheCfg.setRebalanceMode(CacheRebalanceMode.*ASYNC*);
>     
> ipv4RangeCacheCfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.*FULL_SYNC*);
>     ipv4RangeCacheCfg.setBackups(1);
>     Factory<IPV4RangeCacheDataLoader> storeFactory = 
> FactoryBuilder.*factoryOf*(IPV4RangeCacheDataLoader.*class*);
>     ipv4RangeCacheCfg.setCacheStoreFactory(storeFactory);
>
>     cfg.setCacheConfiguration(ipv4RangeCacheCfg);
>     *return *cfg;
> }
>
>
>
> Thanks,
>
> Prasad
>
>
>
>
>
>
>
>
>
>
>

Reply via email to