[
https://issues.apache.org/jira/browse/HBASE-18665?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Peter Somogyi updated HBASE-18665:
----------------------------------
Description:
The behavior of ReversedScannerCallable#prepare [1] and ScannerCallable#prepare
[2] methods differ how they call
RpcRetryingCallerWithReadReplicas.getRegionLocations method.
The reversed scanner uses the 'reload' parameter directly as the first argument
- RpcRetryingCallerWithReadReplicas.getRegionLocations(reload, id,
getConnection(), getTableName(), getRow()) - however, the forward scanner
passes '!reload'. The getRegionLocations first parameter is 'useCache', the way
we use it in ScannerCallable is the correct one.
The same call can be found in ReversedScannerCallable#locateRegionsInRange [3]
also without negating its value.
[1]
https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ReversedScannerCallable.java#L89-L90
[2]
https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java#L139-L140
[3]
https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ReversedScannerCallable.java#L143-L144
was:
The behavior of ReversedScannerCallable#prepare [1] and ScannerCallable#prepare
[2] methods differ how they call
RpcRetryingCallerWithReadReplicas.getRegionLocations method.
The reversed scanner uses the 'reload' parameter directly as the first argument
- RpcRetryingCallerWithReadReplicas.getRegionLocations(reload, id,
getConnection(), getTableName(), getRow()) - however, the forward scanner
passes '!reload'. The getRegionLocations first parameter is 'useCache', the way
we use it in ScannerCallable is the correct one.
The same call can be found in ReversedScannerCallable#locateRegionsInRange [3]
also without negating its value.
> ReversedScannerCallable invokes getRegionLocations incorrectly
> --------------------------------------------------------------
>
> Key: HBASE-18665
> URL: https://issues.apache.org/jira/browse/HBASE-18665
> Project: HBase
> Issue Type: Bug
> Affects Versions: 2.0.0, 3.0.0, 1.4.0, 1.3.2, 1.5.0, 1.2.7, 1.1.13
> Reporter: Peter Somogyi
> Assignee: Peter Somogyi
>
> The behavior of ReversedScannerCallable#prepare [1] and
> ScannerCallable#prepare [2] methods differ how they call
> RpcRetryingCallerWithReadReplicas.getRegionLocations method.
> The reversed scanner uses the 'reload' parameter directly as the first
> argument - RpcRetryingCallerWithReadReplicas.getRegionLocations(reload, id,
> getConnection(), getTableName(), getRow()) - however, the forward scanner
> passes '!reload'. The getRegionLocations first parameter is 'useCache', the
> way we use it in ScannerCallable is the correct one.
> The same call can be found in ReversedScannerCallable#locateRegionsInRange
> [3] also without negating its value.
> [1]
> https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ReversedScannerCallable.java#L89-L90
> [2]
> https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java#L139-L140
> [3]
> https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ReversedScannerCallable.java#L143-L144
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)