[ https://issues.apache.org/jira/browse/HBASE-16931?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15602481#comment-15602481 ]
stack commented on HBASE-16931: ------------------------------- Should we do another version of the patch after the hot fix has gone in? It looks like we get the sequenceid twice from a Cell. We could cache it since calc costs. What does this: "...so if cleanSeqId is called when the scanner.next call "? Where does it come from? Can we block it for ongoing scans? Like [~carp84] I like the idea of cloning rather than resetting the sequenceid on a Cell (but appreciate too the Ram and Anoop conservation). beforeShipped is making copies of Cells? Pardon if the questions are dumb. Just looking at the patch w/o spending time garnering more context. > Setting cell's seqId to zero in compaction flow might cause RS down. > -------------------------------------------------------------------- > > 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 > Priority: Critical > Attachments: HBASE-16931-master.patch, HBASE-16931.branch-1.patch, > HBASE-16931.branch-1.v2.patch, HBASE-16931_master_v2.patch, > HBASE-16931_master_v3.patch, HBASE-16931_master_v4.patch, > HBASE-16931_master_v5.patch > > > 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)