[ https://issues.apache.org/jira/browse/HBASE-18555?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16125185#comment-16125185 ]
Hudson commented on HBASE-18555: -------------------------------- FAILURE: Integrated in Jenkins build HBase-1.4 #853 (See [https://builds.apache.org/job/HBase-1.4/853/]) HBASE-18555: Remove redundant familyMap.put() from addxxx() of (jerryjch: rev 2523e716f243057360e043b1137f0604c935517d) * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Delete.java * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Get.java * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Increment.java * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Mutation.java * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Put.java * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Scan.java * (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Append.java > Remove redundant familyMap.put() from addxxx() of sub-classes of Mutation and > Query > ----------------------------------------------------------------------------------- > > Key: HBASE-18555 > URL: https://issues.apache.org/jira/browse/HBASE-18555 > Project: HBase > Issue Type: Improvement > Components: Client > Reporter: Xiang Li > Assignee: Xiang Li > Priority: Minor > Fix For: 3.0.0, 1.4.0, 1.5.0, 2.0.0-alpha-2 > > Attachments: HBASE-18555.master.000.patch, > HBASE-18555.master.001.patch, HBASE-18555.master.002.patch > > > In addxxx() functions of Mutation(Append, Delete, Increment and Put) and > Query(Get and Scan), there are redundant Map#put() calls which could be > removed to improve the performance. > For example, in Put#addColumn() and addImmutable(), after getting the cell > list of the given family and add the cell into the list, the code puts > (key=family, value=list) into familyMap. > In addColumn(), it is like > {code} > List<Cell> list = getCellList(family); > KeyValue kv = createPutKeyValue(family, qualifier, ts, value); > list.add(kv); > familyMap.put(CellUtil.cloneFamily(kv), list); // <-- here > return this; > {code} > In addImmutable(), it is like > {code} > List<Cell> list = getCellList(family); > KeyValue kv = createPutKeyValue(family, qualifier, ts, value, tag); > list.add(kv); > familyMap.put(family, list); // <-- here > return this; > {code} > I think those put() for Map only take effect when getCellList(family) returns > a new allocated ArrayList. When the list for a family already exist, put() > for Map will update the value to the reference of the list, but actually, the > reference of the list is not changed. > Those put() do not do any harm in terms of the correctness when they are > here. But it could be removed to improve the performance. familyMap searches > for key and set the new value and return the old value. Those operation take > some time but actually are not needed. > The put() could be moved into Mutation#getCellList(family) -- This message was sent by Atlassian JIRA (v6.4.14#64029)