You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Hudson (JIRA)" <ji...@apache.org> on 2013/12/06 20:03:35 UTC

[jira] [Commented] (HBASE-10064) AggregateClient.validateParameters can throw NPE

    [ https://issues.apache.org/jira/browse/HBASE-10064?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13841556#comment-13841556 ] 

Hudson commented on HBASE-10064:
--------------------------------

SUCCESS: Integrated in HBase-0.94 #1219 (See [https://builds.apache.org/job/HBase-0.94/1219/])
HBASE-10064. AggregateClient.validateParameters can throw NPE (cuijianwei) (apurtell: rev 1548416)
* /hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/Scan.java


> AggregateClient.validateParameters can throw NPE
> ------------------------------------------------
>
>                 Key: HBASE-10064
>                 URL: https://issues.apache.org/jira/browse/HBASE-10064
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 0.94.14
>            Reporter: cuijianwei
>            Assignee: cuijianwei
>             Fix For: 0.94.15
>
>         Attachments: 10064-0.94.patch, HBASE-10064-0.94-v1.patch, HBASE-10064-0.94-v2.patch
>
>
> When using methods such as max(...), min(...) in AggregationClient, we will pass Scan as parameter. These methods will throw NullPointerException if users invoke scan.setStartRow(null) or scan.setStopRow(null) before passing the scan as parameter.  The NullPointerException is thrown by validateParameters(Scan scan) which will be invoked before sending requests  to server. The implementation of validateParameters is :
> {code}
>   private void validateParameters(Scan scan) throws IOException {
>     if (scan == null
>         || (Bytes.equals(scan.getStartRow(), scan.getStopRow()) && !Bytes
>             .equals(scan.getStartRow(), HConstants.EMPTY_START_ROW))
>         || ((Bytes.compareTo(scan.getStartRow(), scan.getStopRow()) > 0) &&
>         	!Bytes.equals(scan.getStopRow(), HConstants.EMPTY_END_ROW))) {
>       throw new IOException(
>           "Agg client Exception: Startrow should be smaller than Stoprow");
>     } else if (scan.getFamilyMap().size() != 1) {
>       throw new IOException("There must be only one family.");
>     }
>   }
> {code}
> “Bytes.equals(scan.getStartRow(), HConstants.EMPTY_START_ROW)” will throw NullPointerException if the startRow of scan is set to null.



--
This message was sent by Atlassian JIRA
(v6.1#6144)