Can someone please comment on this?

On Wed, Feb 26, 2020 at 6:04 AM Denis Magda <[email protected]> wrote:

> Ignite Dev team,
>
> This sounds like an issue in our replicated cache implementation rather
> than an expected behavior. Especially, if partitioned caches don't have
> such a specificity.
>
> Who can explain why write-through needs to be enabled for replicated caches
> to reload an entry from an underlying database properly/consistently?
>
> -
> Denis
>
>
> On Tue, Feb 25, 2020 at 5:11 AM Ilya Kasnacheev <[email protected]
> >
> wrote:
>
> > Hello!
> >
> > I think this is by design. You may suggest edits on readme.io.
> >
> > Regards,
> > --
> > Ilya Kasnacheev
> >
> >
> > пн, 24 февр. 2020 г. в 17:28, Prasad Bhalerao <
> > [email protected]>:
> >
> >> Hi,
> >>
> >> Is this a bug or the cache is designed to work this way?
> >>
> >> If it is as-designed, can this behavior be updated in ignite
> >> documentation?
> >>
> >> Thanks,
> >> Prasad
> >>
> >> On Wed, Oct 30, 2019 at 7:19 PM Ilya Kasnacheev <
> >> [email protected]> wrote:
> >>
> >>> Hello!
> >>>
> >>> I have discussed this with fellow Ignite developers, and they say read
> >>> through for replicated cache would work where there is either:
> >>>
> >>> - writeThrough enabled and all changes do through it.
> >>> - database contents do not change for already read keys.
> >>>
> >>> I can see that neither is met in your case, so you can expect the
> >>> behavior that you are seeing.
> >>>
> >>> Regards,
> >>> --
> >>> Ilya Kasnacheev
> >>>
> >>>
> >>> вт, 29 окт. 2019 г. в 18:18, Akash Shinde <[email protected]>:
> >>>
> >>>> I am using Ignite 2.6 version.
> >>>>
> >>>> I am starting 3 server nodes with a replicated cache and 1 client
> node.
> >>>> Cache configuration is as follows.
> >>>> Read-through true on but write-through is false. Load data by key is
> >>>> implemented as given below in cache-loader.
> >>>>
> >>>> Steps to reproduce issue:
> >>>> 1) Delete an entry from cache using IgniteCache.remove() method.
> (Entry
> >>>> is just removed from cache but present in DB as write-through is
> false)
> >>>> 2) Invoke IgniteCache.get() method for the same key in step 1.
> >>>> 3) Now query the cache from client node. Every invocation returns
> >>>> different results.
> >>>> Sometimes it returns reloaded entry, sometime returns the results
> >>>> without reloaded entry.
> >>>>
> >>>> Looks like read-through is not replicating the reloaded entry on all
> >>>> nodes in case of REPLICATED cache.
> >>>>
> >>>> So to investigate further I changed the cache mode to PARTITIONED and
> >>>> set the backup count to 3 i.e. total number of nodes present in
> cluster (to
> >>>> mimic REPLICATED behavior).
> >>>> This time it worked as expected.
> >>>> Every invocation returned the same result with reloaded entry.
> >>>>
> >>>> *  private CacheConfiguration networkCacheCfg() {*
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> *    CacheConfiguration networkCacheCfg = new
> >>>> CacheConfiguration<>(CacheName.NETWORK_CACHE.name
> >>>> <http://CacheName.NETWORK_CACHE.name>());
> >>>> networkCacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
> >>>> networkCacheCfg.setWriteThrough(false);
> >>>> networkCacheCfg.setReadThrough(true);
> >>>> networkCacheCfg.setRebalanceMode(CacheRebalanceMode.ASYNC);
> >>>>
> networkCacheCfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
> >>>>   //networkCacheCfg.setBackups(3);
> >>>> networkCacheCfg.setCacheMode(CacheMode.REPLICATED);
> >>>> Factory<NetworkDataCacheLoader> storeFactory =
> >>>> FactoryBuilder.factoryOf(NetworkDataCacheLoader.class);
> >>>> networkCacheCfg.setCacheStoreFactory(storeFactory);
> >>>> networkCacheCfg.setIndexedTypes(DefaultDataAffinityKey.class,
> >>>> NetworkData.class);    networkCacheCfg.setSqlIndexMaxInlineSize(65);
> >>>> RendezvousAffinityFunction affinityFunction = new
> >>>> RendezvousAffinityFunction();
> >>>> affinityFunction.setExcludeNeighbors(false);
> >>>> networkCacheCfg.setAffinity(affinityFunction);
> >>>> networkCacheCfg.setStatisticsEnabled(true);   //
> >>>> networkCacheCfg.setNearConfiguration(nearCacheConfiguration());
> return
> >>>> networkCacheCfg;  }*
> >>>>
> >>>> @Override
> >>>> public V load(K k) throws CacheLoaderException {
> >>>>     V value = null;
> >>>>     DataSource dataSource = springCtx.getBean(DataSource.class);
> >>>>     try (Connection connection = dataSource.getConnection();
> >>>>          PreparedStatement statement =
> connection.prepareStatement(loadByKeySql)) {
> >>>>         //statement.setObject(1, k.getId());
> >>>>         setPreparedStatement(statement,k);
> >>>>         try (ResultSet rs = statement.executeQuery()) {
> >>>>             if (rs.next()) {
> >>>>                 value = rowMapper.mapRow(rs, 0);
> >>>>             }
> >>>>         }
> >>>>     } catch (SQLException e) {
> >>>>
> >>>>         throw new CacheLoaderException(e.getMessage(), e);
> >>>>     }
> >>>>
> >>>>     return value;
> >>>> }
> >>>>
> >>>>
> >>>> Thanks,
> >>>>
> >>>> Akash
> >>>>
> >>>>
>

Reply via email to