[ https://issues.apache.org/jira/browse/IGNITE-8286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16454227#comment-16454227 ]
Alexey Goncharuk commented on IGNITE-8286: ------------------------------------------ [~roman_s], I think that instead of returning an empty result set, we must thrown an exception explaining that local flag was set to true, but partition could not be found on node. In this case a user can take an action and remap the query. If we return an empty iterator, there is no way to distinguish between an actually empty partition and a partition that was moved to another node. > ScanQuery ignore setLocal with non local partition > -------------------------------------------------- > > Key: IGNITE-8286 > URL: https://issues.apache.org/jira/browse/IGNITE-8286 > Project: Ignite > Issue Type: Bug > Affects Versions: 2.4 > Reporter: Alexander Belyak > Assignee: Roman Shtykh > Priority: Major > Fix For: 2.6 > > > 1) Create partitioned cache on 2+ nodes cluster > 2) Select some partition N, local node should not be OWNER of partition N > 3) execute: cache.query(new ScanQuery<>().setLocal(true).setPartition(N)) > Expected result: > empty result (probaply with logging smth like "Trying to execute local query > <query> with non local partition N") or even throw exception > Actual result: > executing (with ScanQueryFallbackClosableIterator) query on remote node. > Problem is that we execute local query on remote node. > Same behaviour can be achieved if we get empty node list from > GridCacheQueryAdapter.node() by any reasons, for example - if we run "local" > query from non data node from given cache (see > GridDiscoveryNamager.cacheAffinityNode(ClusterNode node, String cacheName) in > GridcacheQueryAdapter.executeScanQuery() -- This message was sent by Atlassian JIRA (v7.6.3#76005)