[ 
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)

Reply via email to