[
https://issues.apache.org/jira/browse/IGNITE-2526?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Noam Liran closed IGNITE-2526.
------------------------------
> get() from a REPLICATED cache for a non-existing key on a non-primary node
> causes a get() to the primary node
> -------------------------------------------------------------------------------------------------------------
>
> Key: IGNITE-2526
> URL: https://issues.apache.org/jira/browse/IGNITE-2526
> Project: Ignite
> Issue Type: Bug
> Components: cache
> Affects Versions: 1.5.0.final
> Reporter: Noam Liran
> Fix For: 1.6
>
>
> {code}
> import org.apache.ignite.Ignite;
> import org.apache.ignite.IgniteCache;
> import org.apache.ignite.Ignition;
> import org.apache.ignite.cache.CacheMode;
> import org.apache.ignite.cache.affinity.Affinity;
> import org.apache.ignite.configuration.CacheConfiguration;
> import org.apache.ignite.configuration.IgniteConfiguration;
> import org.apache.ignite.lang.IgniteUuid;
> public class Main {
> private static CacheConfiguration<Object, Object> CACHE_CONFIG = new
> CacheConfiguration<>()
> .setName("test")
> .setCacheMode(CacheMode.REPLICATED);
> static {
> CACHE_CONFIG.setStatisticsEnabled(true);
> }
> private static Object getKeyInNode(Ignite ignite) {
> Affinity<Object> affinity = ignite.affinity(CACHE_CONFIG.getName());
> IgniteUuid uuid = IgniteUuid.randomUuid();
> while (!affinity.isPrimary(ignite.cluster().localNode(), uuid)) {
> uuid = IgniteUuid.randomUuid();
> }
> return uuid;
> }
> public static void main(String[] args) throws InterruptedException {
> Ignite ignite1 = Ignition.start(new
> IgniteConfiguration().setGridName("1"));
> Ignite ignite2 = Ignition.start(new
> IgniteConfiguration().setGridName("2"));
> Ignite ignite3 = Ignition.start(new
> IgniteConfiguration().setGridName("3"));
> IgniteCache<Object, Object> cache1 =
> ignite1.getOrCreateCache(CACHE_CONFIG);
> IgniteCache<Object, Object> cache2 =
> ignite2.getOrCreateCache(CACHE_CONFIG);
> IgniteCache<Object, Object> cache3 =
> ignite3.getOrCreateCache(CACHE_CONFIG);
> Thread.sleep(3_000);
> Object cache2Key = getKeyInNode(ignite2);
> System.out.printf("initial: cache1gets:%d cache2gets:%d
> cache3gets:%d\n",
> cache1.metrics().getCacheGets(),
> cache2.metrics().getCacheGets(), cache3.metrics().getCacheGets());
> cache1.get(cache2Key);
> cache3.get(cache2Key);
> System.out.printf("status: cache1gets:%d cache2gets:%d
> cache3gets:%d\n",
> cache1.metrics().getCacheGets(),
> cache2.metrics().getCacheGets(), cache3.metrics().getCacheGets());
> System.out.printf("expected: cache1gets:1 cache2gets:0
> cache3gets:1\n");
> Ignition.stopAll(false);
> }
> }
> {code}
> Output:
> {noformat}
> initial: cache1gets:0 cache2gets:0 cache3gets:0
> status: cache1gets:0 cache2gets:2 cache3gets:0
> expected: cache1gets:1 cache2gets:0 cache3gets:1
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)