[ https://issues.apache.org/jira/browse/HBASE-20710?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16507030#comment-16507030 ]
stack commented on HBASE-20710: ------------------------------- +1 I had this as a 'fix' in branch: diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Mutation.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Mutation.java index a6ddc14cca..1b750b950e 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Mutation.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Mutation.java @@ -788,11 +788,10 @@ public abstract class Mutation extends OperationWithAttributes implements Row, C " doesn't match the original one " + Bytes.toStringBinary(this.row)); } - if (cell.getFamilyArray() == null || cell.getFamilyLength() == 0) { + byte [] family = CellUtil.cloneFamily(cell); + if (family == null || family.length == 0) { throw new IllegalArgumentException("Family cannot be null"); } - - byte[] family = CellUtil.cloneFamily(cell); if (cell instanceof ExtendedCell) { getCellList(family).add(cell); } else { The offence is the extra copy and the deserializations to find lengths to use locating the family bytes to copy. Good one [~huaxiang]. > extra cloneFamily() in Mutation.add(Cell) > ----------------------------------------- > > Key: HBASE-20710 > URL: https://issues.apache.org/jira/browse/HBASE-20710 > Project: HBase > Issue Type: Improvement > Components: regionserver > Affects Versions: 2.0.1 > Reporter: huaxiang sun > Assignee: huaxiang sun > Priority: Minor > > The cpu profiling shows that during PE randomWrite testing, about 1 percent > of time is spent in cloneFamily. Reviewing code found that when a cell is DBB > backed ByteBuffKeyValueCell (which is default with Netty Rpc), > cell.getFamilyArray() will call cloneFamily() and there is again a > cloneFamily() in the following line of the code. since this is the critical > write path processing, this needs to be optimized. > https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Mutation.java#L791 > https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Mutation.java#L795 -- This message was sent by Atlassian JIRA (v7.6.3#76005)