Index: src/java/org/apache/hadoop/hbase/regionserver/HRegion.java =================================================================== --- src/java/org/apache/hadoop/hbase/regionserver/HRegion.java (revision 787302) +++ src/java/org/apache/hadoop/hbase/regionserver/HRegion.java (working copy) @@ -2272,7 +2272,7 @@ * @throws IOException */ public long incrementColumnValue(byte [] row, byte [] family, - byte [] qualifier, long amount) + byte [] qualifier, long amount, boolean writeToWAL) throws IOException { checkRow(row); @@ -2282,10 +2282,19 @@ long result = 0L; try { Store store = stores.get(family); - + Store.ValueAndSize vas = store.incrementColumnValue(row, family, qualifier, amount); + if (writeToWAL) { + long now = System.currentTimeMillis(); + List edits = new ArrayList(1); + edits.add(vas.kv); + this.log.append(regionInfo.getRegionName(), + regionInfo.getTableDesc().getName(), edits, + (regionInfo.isMetaRegion() || regionInfo.isRootRegion()), now); + } + result = vas.value; long size = this.memcacheSize.addAndGet(vas.sizeAdded); flush = isFlushSize(size); Index: src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java =================================================================== --- src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (revision 787302) +++ src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (working copy) @@ -2403,7 +2403,7 @@ requestCount.incrementAndGet(); try { HRegion region = getRegion(regionName); - return region.incrementColumnValue(row, family, qualifier, amount); + return region.incrementColumnValue(row, family, qualifier, amount, true); } catch (IOException e) { checkFileSystem(); throw e; Index: src/java/org/apache/hadoop/hbase/regionserver/Store.java =================================================================== --- src/java/org/apache/hadoop/hbase/regionserver/Store.java (revision 787302) +++ src/java/org/apache/hadoop/hbase/regionserver/Store.java (working copy) @@ -1498,9 +1498,11 @@ public static class ValueAndSize { public long value; public long sizeAdded; - public ValueAndSize(long value, long sizeAdded) { + public KeyValue kv; + public ValueAndSize(long value, long sizeAdded, KeyValue kv) { this.value = value; this.sizeAdded = sizeAdded; + this.kv = kv; } } @@ -1536,7 +1538,7 @@ value = Bytes.toLong(buffer, valueOffset, Bytes.SIZEOF_LONG) + amount; Bytes.putBytes(buffer, valueOffset, Bytes.toBytes(value), 0, Bytes.SIZEOF_LONG); - return new ValueAndSize(value, 0); + return new ValueAndSize(value, 0, kv); } // Check if we even have storefiles if(this.storefiles.isEmpty()) { @@ -1567,6 +1569,6 @@ System.currentTimeMillis(), Bytes.toBytes(newValue)); add(newKv); - return new ValueAndSize(newValue, newKv.heapSize()); + return new ValueAndSize(newValue, newKv.heapSize(), newKv); } }