[ 
https://issues.apache.org/jira/browse/IGNITE-6346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16599006#comment-16599006
 ] 

Pavel Pereslegin commented on IGNITE-6346:
------------------------------------------

Hello [~vk].

I've faced with the same problem and found that this bug also applies to server 
nodes.
In collection configuration we can specify node filter which will exclude some 
server nodes from affinity.
Reproducer for server node:
{code:java}
    Ignite node = startGridsMultiThreaded(2);

    ClusterNode locNode = node.cluster().localNode();

    IgniteSet<Integer> set = node.set("test",
        new 
CollectionConfiguration().setCacheMode(CacheMode.REPLICATED).setNodeFilter(n -> 
!locNode.equals(n)));

    set.add(1);

    assertTrue(set.iterator().hasNext());
{code}

So I think that it would be better to check that the current node is an 
affinity node.
{code:java}
if (ctx.isLocal() || (ctx.isReplicated() && ctx.affinityNode()))
{code}

What do you think?

> Distributed set does not work in REPLICATED mode
> ------------------------------------------------
>
>                 Key: IGNITE-6346
>                 URL: https://issues.apache.org/jira/browse/IGNITE-6346
>             Project: Ignite
>          Issue Type: Bug
>          Components: data structures
>    Affects Versions: 2.1
>            Reporter: Valentin Kulichenko
>            Assignee: vk
>            Priority: Major
>
> When {{IgniteSet}} is created with {{REPLICATED}} cache mode, any attempt to 
> read it fails with exception:
> {noformat}
> Exception in thread "main" class org.apache.ignite.IgniteException: Cluster 
> group is empty.
>       at 
> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:48)
>       at ReplicatedSet.main(ReplicatedSet.java:36)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:498)
>       at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
> Caused by: class 
> org.apache.ignite.internal.cluster.ClusterGroupEmptyCheckedException: Cluster 
> group is empty.
>       at 
> org.apache.ignite.internal.processors.cache.query.GridCacheQueryAdapter.execute0(GridCacheQueryAdapter.java:481)
>       at 
> org.apache.ignite.internal.processors.cache.query.GridCacheQueryAdapter.execute(GridCacheQueryAdapter.java:442)
>       at 
> org.apache.ignite.internal.processors.datastructures.GridCacheSetImpl.iterator0(GridCacheSetImpl.java:420)
>       at 
> org.apache.ignite.internal.processors.datastructures.GridCacheSetImpl.iterator(GridCacheSetImpl.java:375)
>       at 
> org.apache.ignite.internal.processors.datastructures.GridCacheSetProxy.iterator(GridCacheSetProxy.java:342)
>       ... 6 more
> {noformat}
> To reproduce run the following code:
> {code}
> Ignition.start(new IgniteConfiguration().setIgniteInstanceName("server-1"));
> Ignition.start(new IgniteConfiguration().setIgniteInstanceName("server-2"));
> Ignition.setClientMode(true);
> Ignite ignite = Ignition.start();
> IgniteSet<String> set = ignite.set("my-set", new 
> CollectionConfiguration().setCacheMode(CacheMode.REPLICATED));
> for (String s : set) {
>     System.out.println(s);
> }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to