Aleksey Plekhanov created IGNITE-11670:
------------------------------------------

             Summary: Java thin client: Queries are inconsistent in case of 
failover
                 Key: IGNITE-11670
                 URL: https://issues.apache.org/jira/browse/IGNITE-11670
             Project: Ignite
          Issue Type: Bug
          Components: thin client
            Reporter: Aleksey Plekhanov


When a thin client does failover and switches to a new server, open cursors 
become inconsistent and silently returns the wrong result.

Reproducer:

{code:java}
    public void testQueryFailover() throws Exception {
        try (LocalIgniteCluster cluster = LocalIgniteCluster.start(1);
             IgniteClient client = Ignition.startClient(new 
ClientConfiguration()
                 .setAddresses(cluster.clientAddresses().iterator().next()))
        ) {
            ObjectName mbeanName = 
U.makeMBeanName(Ignition.allGrids().get(0).name(), "Clients",
                ClientListenerProcessor.class.getSimpleName());

            ClientProcessorMXBean mxBean = 
MBeanServerInvocationHandler.newProxyInstance(
                ManagementFactory.getPlatformMBeanServer(), mbeanName, 
ClientProcessorMXBean.class, true);

            ClientCache<Integer, Integer> cache = client.createCache("cache");

            cache.put(0, 0);
            cache.put(1, 1);

            Query<Cache.Entry<Integer, String>> qry = new ScanQuery<Integer, 
String>().setPageSize(1);

            try (QueryCursor<Cache.Entry<Integer, String>> cur = 
cache.query(qry)) {
                int cnt = 0;

                for (Iterator<Cache.Entry<Integer, String>> it = 
cur.iterator(); it.hasNext(); it.next()) {
                    cnt++;

                    if (cnt == 1)
                        mxBean.dropAllConnections();
                }

                assertEquals(2, cnt);
            }
        }
    }
{code}




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

Reply via email to