You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by "Dmitry Konstantinov (JIRA)" <ji...@apache.org> on 2018/07/10 18:21:00 UTC

[jira] [Created] (IGNITE-8978) Affinity throws "IgniteException: Failed to find cache" after an Ignite client re-connect

Dmitry Konstantinov created IGNITE-8978:
-------------------------------------------

             Summary: Affinity throws "IgniteException: Failed to find cache" after an Ignite client re-connect
                 Key: IGNITE-8978
                 URL: https://issues.apache.org/jira/browse/IGNITE-8978
             Project: Ignite
          Issue Type: Bug
    Affects Versions: 2.5
         Environment: ver. 2.5.0#20180523-sha1:86e110c7
OS: Windows 7 6.1 amd64
Java(TM) SE Runtime Environment 1.8.0_101-b13 Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.101-b13
            Reporter: Dmitry Konstantinov


Use case:
 # A single Ignite server node is deployed and running.
 # An ignite Java client connects to the server node and starts to do cache operations (put/get) + invoke Affinity.mapKeyToNode() method.
 # The Ignite server process is killed
 # Waiting for some time
 # Starting the Ignite server back.

{code:java}
public static void main(String ... args) throws InterruptedException {
    Ignition.setClientMode(true);
    String config = "ignite-config.xml";
    try (Ignite ignite = Ignition.start(config)) {
        String cacheName = "testCache";
        IgniteCache<String, String> cache = ignite.cache(cacheName);
        Affinity<String> affinity = ignite.affinity(cacheName);

        while (true) {
            try {
                String key = "testKey";
                cache.put(key, "testValue");
                String value = cache.get(key);
                ClusterNode primary = affinity.mapKeyToNode(key);
                System.out.println("read value: " + value + ", primary node: " + primary);
            } catch (Exception e) {
                System.out.println("Error: " + e.toString());
                e.printStackTrace();
            } finally {
                Thread.sleep(1000);
            }
        }
    }
}
{code}

Expected result:
 affinity.mapKeyToNode(key) starts to work after a re-connection to the restarted server

Actual result:
 affinity.mapKeyToNode(key) continues to throw the following exception:
{code:java}
class org.apache.ignite.IgniteException: Failed to find cache (cache was not started yet or cache was already stopped): testCache
	at org.apache.ignite.internal.processors.cache.GridCacheAffinityManager.affinityTopologyVersion(GridCacheAffinityManager.java:402)
	at org.apache.ignite.internal.processors.cache.affinity.GridCacheAffinityImpl.topologyVersion(GridCacheAffinityImpl.java:241)
	at org.apache.ignite.internal.processors.cache.affinity.GridCacheAffinityImpl.mapKeysToNodes(GridCacheAffinityImpl.java:189)
	at org.apache.ignite.internal.processors.cache.affinity.GridCacheAffinityImpl.mapKeyToNode(GridCacheAffinityImpl.java:182)
	at test.ignite.Main.main(Main.java:25)
{code}



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