[ 
https://issues.apache.org/jira/browse/HBASE-16931?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

binlijin updated HBASE-16931:
-----------------------------
    Description: 
Compactor#performCompaction
      do {
        hasMore = scanner.next(cells, scannerContext);
        // output to writer:
        for (Cell c : cells) {
          if (cleanSeqId && c.getSequenceId() <= smallestReadPoint) {
            CellUtil.setSequenceId(c, 0);
          }
          writer.append(c);
        }
        cells.clear();
      } while (hasMore);
scanner.next will choose at most "hbase.hstore.compaction.kv.max" kvs, the last 
cell still reference by StoreScanner.prevCell, so if cleanSeqId is called when 
the scanner.next call StoreScanner.checkScanOrder may throw exception and cause 
regionserver down.

  was:
Compactor#performCompaction
      do {
        hasMore = scanner.next(cells, scannerContext);
        // output to writer:
        for (Cell c : cells) {
          if (cleanSeqId && c.getSequenceId() <= smallestReadPoint) {
            CellUtil.setSequenceId(c, 0);
          }
          writer.append(c);
        }
        cells.clear();
      } while (hasMore);
scanner.next will choose at most "hbase.hstore.compaction.kv.max" kvs, the last 
cell still reference by StoreScanner.prevCell, so when the scanner.next call 
StoreScanner.checkScanOrder may throw exception and cause regionserver down.


> Cleaned seqid in compaction should set back when write finish.
> --------------------------------------------------------------
>
>                 Key: HBASE-16931
>                 URL: https://issues.apache.org/jira/browse/HBASE-16931
>             Project: HBase
>          Issue Type: Bug
>          Components: regionserver
>    Affects Versions: 2.0.0
>            Reporter: binlijin
>            Assignee: binlijin
>
> Compactor#performCompaction
>       do {
>         hasMore = scanner.next(cells, scannerContext);
>         // output to writer:
>         for (Cell c : cells) {
>           if (cleanSeqId && c.getSequenceId() <= smallestReadPoint) {
>             CellUtil.setSequenceId(c, 0);
>           }
>           writer.append(c);
>         }
>         cells.clear();
>       } while (hasMore);
> scanner.next will choose at most "hbase.hstore.compaction.kv.max" kvs, the 
> last cell still reference by StoreScanner.prevCell, so if cleanSeqId is 
> called when the scanner.next call StoreScanner.checkScanOrder may throw 
> exception and cause regionserver down.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to