You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Xu Cang (JIRA)" <ji...@apache.org> on 2018/07/23 19:14:00 UTC
[jira] [Assigned] (HBASE-20342) potential null pointer exception in
org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java when
existing writers number is close to boundaries number
[ https://issues.apache.org/jira/browse/HBASE-20342?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xu Cang reassigned HBASE-20342:
-------------------------------
Assignee: Xu Cang
> potential null pointer exception in org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java when existing writers number is close to boundaries number
> --------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-20342
> URL: https://issues.apache.org/jira/browse/HBASE-20342
> Project: HBase
> Issue Type: Bug
> Affects Versions: 2.0.0-beta-2
> Reporter: andy zhou
> Assignee: Xu Cang
> Priority: Major
> Attachments: HBASE-20342.master.001.patch
>
>
> Our code analyzer has detected a potential null pointer exception issue in org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java as follows:
> {code:java}
> // org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java Line#249
> private void stopUsingCurrentWriter() {
> ...
> currentWriterEndKey = (existingWriters.size() + 1 == boundaries.size())
> ? null : boundaries.get(existingWriters.size() + 1);
> }{code}
> {code:java}
> // org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java Line#197
> stopUsingCurrentWriter();
> while (isCellAfterCurrentWriter(cell)) {
> ...
> }
> {code}
> {code:java}
> // org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java Line#179
> private boolean isCellAfterCurrentWriter(Cell cell) {
> return (... &&
> (comparator.compareRows(... , 0, currentWriterEndKey.length) >= 0)
> );
> }
> {code}
>
> Function "stopUsingCurrentWriter()" updates the field "currentWriterEndKey" to null if existing writers number is close to boundaries number in line#249, but in line#197 it is followed by a call to function "isCellAfterCurrentWriter()" which directly uses the field "currentWriterEndKey" leading to a potential null pointer exception
>
> Linkage to the code is here
> https://github.com/apache/hbase/blob/9e9b347d667e1fc6165c9f8ae5ae7052147e8895/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java#L179
>
> [https://github.com/apache/hbase/blob/9e9b347d667e1fc6165c9f8ae5ae7052147e8895/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java#L197]
>
> [https://github.com/apache/hbase/blob/9e9b347d667e1fc6165c9f8ae5ae7052147e8895/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java#L249]
>
>
> SourceBrella Inc.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)