[ https://issues.apache.org/jira/browse/IGNITE-7883?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrey Gura updated IGNITE-7883: -------------------------------- Fix Version/s: (was: 2.5) 2.6 > Cluster can have inconsistent affinity configuration > ----------------------------------------------------- > > Key: IGNITE-7883 > URL: https://issues.apache.org/jira/browse/IGNITE-7883 > Project: Ignite > Issue Type: Bug > Components: cache > Affects Versions: 2.3 > Reporter: Mikhail Cherkasov > Priority: Major > Fix For: 2.6 > > > A cluster can have inconsistent affinity configuration if you created two > nodes, one with affinity key configuration and other without it(in IgniteCfg > or CacheCfg), both nodes will work fine with no exceptions, but in the same > time they will apply different affinity rules to keys: > > {code:java} > public class Test { > private static int id = 0; > public static void main(String[] args) { > Ignite ignite = Ignition.start(getConfiguration(true, false)); > Ignite ignite2 = Ignition.start(getConfiguration(false, false)); > Affinity<Object> affinity = ignite.affinity("TEST"); > Affinity<Object> affinity2 = ignite2.affinity("TEST"); > for (int i = 0; i < 1_000_000; i++) { > AKey key = new AKey(i); > if(affinity.partition(key) != affinity2.partition(key)) > System.out.println("FAILED for: " + key); > } > } > @NotNull private static IgniteConfiguration getConfiguration(boolean > withAffinityCfg, boolean client) { > IgniteConfiguration cfg = new IgniteConfiguration(); > TcpDiscoveryVmIpFinder finder = new TcpDiscoveryVmIpFinder(true); > finder.setAddresses(Arrays.asList("localhost:47500..47600")); > cfg.setClientMode(client); > cfg.setIgniteInstanceName("test" + id++); > if(withAffinityCfg) { > CacheConfiguration cacheCfg = new CacheConfiguration("TEST"); > cacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL); > cacheCfg.setCacheMode(CacheMode.PARTITIONED); > cacheCfg.setKeyConfiguration(new > CacheKeyConfiguration("multiplan.AKey", "a")); > cfg.setCacheConfiguration(cacheCfg); > } > cfg.setDiscoverySpi(new TcpDiscoverySpi().setIpFinder(finder)); > return cfg; > } > } > class AKey { > int a; > public AKey(int a) { > this.a = a; > } > @Override public String toString() { > return "AKey{" + > "b=" + a + > '}'; > } > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)