You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "hyungseok.lim (Jira)" <ji...@apache.org> on 2021/12/28 06:47:00 UTC

[jira] [Created] (HBASE-26630) When using SingleColumnValueFilter in TableSnapshotInputFormat, there was a problem that the job was terminated in the middle.

hyungseok.lim created HBASE-26630:
-------------------------------------

             Summary: When using SingleColumnValueFilter in TableSnapshotInputFormat, there was a problem that the job was terminated in the middle.
                 Key: HBASE-26630
                 URL: https://issues.apache.org/jira/browse/HBASE-26630
             Project: HBase
          Issue Type: Bug
    Affects Versions: 2.2.3
            Reporter: hyungseok.lim


I am using by adding SingleColumnValueFilter in TableSnapshotInputFormat. In fact, there is a lot of data in the snapshot, but it was found that the mapper was completed in the middle.

 

There was a problem in the next method of ClientSideRegionScanner.

 
{code:java}
 public Result next() throws IOException {
    values.clear();
    scanner.nextRaw(values);
    if (values.isEmpty()) {
      //we are done
      return null;
    }

    Result result = Result.create(values);
    if (this.scanMetrics != null) {
      long resultSize = 0;
      for (Cell cell : values) {
        resultSize += PrivateCellUtil.estimatedSerializedSizeOf(cell);
      }
      this.scanMetrics.countOfBytesInResults.addAndGet(resultSize);
      this.scanMetrics.countOfRowsScanned.incrementAndGet();
    }

    return result;
  } {code}
values is empty, but scanner.nextRaw(values) returned true.

I modified it as follows and it worked normally.
{code:java}
public Result next() throws IOException {
        values.clear();
        boolean moreValues;
        do {
            moreValues = scanner.nextRaw(values);
        } while (values.isEmpty() && moreValues);

        if (!moreValues) {
            return null;
        }

        Result result = Result.create(values);
        if (this.scanMetrics != null) {
            long resultSize = 0;
            for (Cell cell : values) {
                resultSize += PrivateCellUtil.estimatedSerializedSizeOf(cell);
            }
            this.scanMetrics.countOfBytesInResults.addAndGet(resultSize);
            this.scanMetrics.countOfRowsScanned.incrementAndGet();
        }

        return result;
    } {code}
Please check this.

 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)