[ 
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)

Reply via email to