Hi, you have readThrough enabled and a cache store defined, which is
causing this behavior:
when readThrough is enabled, each cache.get() causes cacheStore.load call.

Pavel.

On Sun, Jul 17, 2016 at 6:03 PM, zshamrock <[email protected]>
wrote:

> I have an interesting problem.
>
> I have 1 cache sensorsToSessions, mapping String to String, i.e. sensor id
> -> session id.
>
> When session is started I overwrite whatever is in the cache by the sensor
> ids used in the current session, i.e.:
>
> /sensorsToSessionsCache.putAll(sensorsToSessions);/
>
> Also when the session is stopped I remove the items from the cache, i.e.:
>
> /sensorsToSessionsCache.removeAll(sensorsIds);/
>
> Connecting to the Ignite using Visor shows that it works (/cache -scan
> -c=@c4/), i.e.
>
> - after putting the items it prints:
>
> visor> cache -scan -c=@c4
> Entries in cache: sandbox.sensorsToSessions
>
> +=======================================================================================+
> |    Key Class     |   Key    |   Value Class    |                Value
> |
>
> +=======================================================================================+
> | java.lang.String | 50397794 | java.lang.String |
> 4ae52f51-4c2a-11e6-a169-667afaa8cd5d |
> | java.lang.String | 50397793 | java.lang.String |
> 4ae52f51-4c2a-11e6-a169-667afaa8cd5d |
> | java.lang.String | 50397783 | java.lang.String |
> 4ae52f51-4c2a-11e6-a169-667afaa8cd5d |
> | java.lang.String | 50397776 | java.lang.String |
> 4ae52f51-4c2a-11e6-a169-667afaa8cd5d |
> | java.lang.String | 50397846 | java.lang.String |
> 4ae52f51-4c2a-11e6-a169-667afaa8cd5d |
> | java.lang.String | 50397828 | java.lang.String |
> 4ae52f51-4c2a-11e6-a169-667afaa8cd5d |
> | java.lang.String | 50397817 | java.lang.String |
> 4ae52f51-4c2a-11e6-a169-667afaa8cd5d |
> | java.lang.String | 50397812 | java.lang.String |
> 4ae52f51-4c2a-11e6-a169-667afaa8cd5d |
> | java.lang.String | 50397811 | java.lang.String |
> 4ae52f51-4c2a-11e6-a169-667afaa8cd5d |
> | java.lang.String | 50397801 | java.lang.String |
> 4ae52f51-4c2a-11e6-a169-667afaa8cd5d |
>
> +---------------------------------------------------------------------------------------+
>
> - after removing the items it prints:
>
> visor> cache -scan -c=@c4
> Cache: sandbox.sensorsToSessions is empty
>
> Although, this is where the issue is, doing /final String sessionId =
> sensorsToSessionsCache.get(sensorId);/ always returns the previous session
> id, i.ie from the log:
>
> /Found sessionId df6f12a0-4c28-11e6-a169-667afaa8cd5d for sensorId
> 50397783/
>
> So, no matter whether I overwrite the items, or remove them completely, and
> even so, Visor proves it works, getting the item from the cache in the code
> always returns previous value.
>
> How it could be? Have I misconfigured the Ignite cluster? I am using
> near-cache, btw, for the sensorsToSessionsCache.
>
> There are 1 server node, and 2 clients nodes in the topology.
>
> Also, if it helps, I have never seen the cache store was triggered for this
> cache (at least I don't see anything in the log).
>
> This is the cache config I am using:
>
> <bean class="org.apache.ignite.configuration.CacheConfiguration"
>     p:name="sandbox.sensorsToSessions"
>     p:backups="0"
>     p:statisticsEnabled="true"
>     p:readThrough="true">
>     <property name="expiryPolicyFactory">
>         <bean class="javax.cache.expiry.CreatedExpiryPolicy"
> factory-method="factoryOf">
>             <constructor-arg>
>                 <bean class="javax.cache.expiry.Duration"
>                     c:timeUnit="MINUTES"
>                     c:durationAmount="120"/>
>             </constructor-arg>
>         </bean>
>     </property>
>     <property name="cacheStoreFactory">
>         <bean class="javax.cache.configuration.FactoryBuilder.ClassFactory"
>
> c:clazz="com.application.grid.cache.store.SensorsToSessionsCacheStore"/>
>     </property>
> </bean>
>
> And this is how I @Inject/instantiate the cache instance into the
> application components (so, essentially it creates the near cache for the
> same server cache for the client nodes):
>
> @Bean
>     @Qualifier("sensorsToSessionsCache")
>     public IgniteCache<String, String> sensorsToSessionsCache() {
>         final NearCacheConfiguration<String, String> nearCacheConfiguration
> =
>                 new NearCacheConfiguration<String, String>()
>                         .setNearEvictionPolicy(
>                                 new
>
> LruEvictionPolicy<>(cacheEnvironment.sensorsToSessionsNearCacheEvictionSize()))
>
> .setNearStartSize(cacheEnvironment.sensorsToSessionsNearCacheStartSize());
>         return
> ignite().createNearCache(cacheEnvironment.sensorsToSessionsCacheName(),
> nearCacheConfiguration);
> }
>
> I am running Ignite 1.6.0 on Linux.
>
>
>
>
>
> --
> View this message in context:
> http://apache-ignite-users.70518.x6.nabble.com/Removing-or-overwriting-cache-value-but-still-able-to-get-it-from-the-cache-tp6334.html
> Sent from the Apache Ignite Users mailing list archive at Nabble.com.
>

Reply via email to