[jira] [Created] (IGNITE-8834) SqlQuery not throwing exception after partition loss events

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (IGNITE-8834) SqlQuery not throwing exception after partition loss events

Anton Vinogradov (Jira)
Anton Kurbanov created IGNITE-8834:
--------------------------------------

             Summary: SqlQuery not throwing exception after partition loss events
                 Key: IGNITE-8834
                 URL: https://issues.apache.org/jira/browse/IGNITE-8834
             Project: Ignite
          Issue Type: Bug
          Components: sql
    Affects Versions: 2.4
            Reporter: Anton Kurbanov


 

Precondition: 3 server nodes, client listening for partition loss events, partitioned cache with backups = 1, partition loss policy = READ_ONLY_SAFE, stream some data. Kill 2 nodes, call:
{code:java}
SqlQuery<Integer, Integer> query = new SqlQuery<>(Integer.class, "where _key>0");
query.setLocal(false);
List<Cache.Entry<Integer, Integer>> list = cache.query(query).getAll();
{code}
Cache configuration:
{code:java}
public IgniteConfiguration getCfg() {
    IgniteConfiguration cfg = new IgniteConfiguration();
    cfg.setConsistentId(cfg.getIgniteInstanceName());
    cfg.setIncludeEventTypes(EventType.EVT_CACHE_REBALANCE_PART_DATA_LOST);

    TcpDiscoverySpi discovery = new TcpDiscoverySpi();
    TcpDiscoveryVmIpFinder finder = new TcpDiscoveryVmIpFinder();
    finder.setAddresses(Arrays.asList("127.0.0.1:47500..47509"));
    discovery.setIpFinder(finder);
    cfg.setDiscoverySpi(discovery);

    QueryEntity queryEntity = new QueryEntity();

    queryEntity.setKeyType(Integer.class.getName());
    queryEntity.setValueType(Integer.class.getName());

    cfg.setCacheConfiguration(new CacheConfiguration<Integer, Integer>(CACHE)
        .setCacheMode(CacheMode.PARTITIONED)
        .setBackups(1)
        .setAffinity(new RendezvousAffinityFunction())
        .setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC)
        .setPartitionLossPolicy(PartitionLossPolicy.READ_ONLY_SAFE)
        .setQueryEntities(Collections.singletonList(queryEntity)));

    DataStorageConfiguration storageCfg = new DataStorageConfiguration();
    storageCfg.getDefaultDataRegionConfiguration().setPersistenceEnabled(true);
    cfg.setDataStorageConfiguration(storageCfg);

    return cfg;
}
{code}
Query is expected to fail, but succeeds and returns entries from partitions that are alive.

 



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