Dmitriy Gladkikh created IGNITE-8995: ----------------------------------------
Summary: FailureHandler executed on error in ScanQuery's IgniteBiPredicate Key: IGNITE-8995 URL: https://issues.apache.org/jira/browse/IGNITE-8995 Project: Ignite Issue Type: Bug Affects Versions: 2.5 Reporter: Dmitriy Gladkikh This code demonstrates this behavior: {code:java} import java.util.Collections; import javax.cache.Cache; import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCache; import org.apache.ignite.Ignition; import org.apache.ignite.binary.BinaryObject; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.cache.query.QueryCursor; import org.apache.ignite.cache.query.ScanQuery; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.DataRegionConfiguration; import org.apache.ignite.configuration.DataStorageConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.lang.IgniteBiPredicate; import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; /** * -ea -DIGNITE_QUIET=false */ public class ScanQueryIgniteBiPredicateWithError { private static final String CACHE_NAME = "test_cache_name"; public static void main(String[] args) { try (Ignite igniteServer = Ignition.start(getCfg("node_server", false)); Ignite igniteClient = Ignition.start(getCfg("node_client", true))) { IgniteCache<Integer, BinaryObject> cache = igniteClient.cache(CACHE_NAME); cache.put(1, igniteClient.binary().builder("test_type").setField("field_0", "field_0_val").build()); try (QueryCursor<Cache.Entry<Integer, BinaryObject>> cursor = cache.withKeepBinary().query(new ScanQuery<>( new IgniteBiPredicate<Integer, BinaryObject>() { @Override public boolean apply(Integer key, BinaryObject value) { throw new AssertionError(); // Error. //return value.field(null) != null; // Error. //return true; // Ok. } }))) { for (Cache.Entry<Integer, BinaryObject> entry : cursor) // Without error in IgniteBiPredicate: // Key = 1, Val = test_type [idHash=2024711353, hash=394028655, field_0=val_0] System.out.printf("Key = %s, Val = %s%n", entry.getKey(), entry.getValue()); } } } /** * @param instanceName Ignite instance name. * @param clientMode Client mode. * @return Ignite configuration. */ private static IgniteConfiguration getCfg(String instanceName, boolean clientMode) { TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder(); ipFinder.setAddresses(Collections.singletonList("127.0.0.1:47500..47509")); TcpDiscoverySpi tcpDiscoverySpi = new TcpDiscoverySpi(); tcpDiscoverySpi.setIpFinder(ipFinder); DataRegionConfiguration dataRegionCfg = new DataRegionConfiguration(); dataRegionCfg.setPersistenceEnabled(true); DataStorageConfiguration dataStorageCfg = new DataStorageConfiguration(); dataStorageCfg.setDefaultDataRegionConfiguration(dataRegionCfg); CacheConfiguration<Integer, BinaryObject> ccfg = new CacheConfiguration<Integer, BinaryObject>(CACHE_NAME) .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL) .setCacheMode(CacheMode.PARTITIONED); IgniteConfiguration cfg = new IgniteConfiguration(); cfg.setIgniteInstanceName(instanceName); cfg.setDiscoverySpi(tcpDiscoverySpi); cfg.setDataStorageConfiguration(dataStorageCfg); cfg.setCacheConfiguration(ccfg); if (!clientMode) cfg.setAutoActivationEnabled(true); else cfg.setClientMode(true); return cfg; } } {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)