From e5cee5df401b7aa255c6891ee2474a9245134de4 Mon Sep 17 00:00:00 2001 From: Phil Yang Date: Thu, 17 Nov 2016 11:33:23 +0800 Subject: [PATCH] HBASE-17112 Prevent setting timestamp of delta operations being same as previous value's --- .../src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java | 4 ++-- .../test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index 831627b..31b2a15 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -7512,7 +7512,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi long ts = now; if (currentValue != null) { tags = TagUtil.carryForwardTags(tags, currentValue); - ts = Math.max(now, currentValue.getTimestamp()); + ts = Math.max(now, currentValue.getTimestamp() + 1); newValue += getLongValue(currentValue); } // Now make up the new Cell. TODO: FIX. This is carnel knowledge of how KeyValues are made... @@ -7538,7 +7538,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi byte [] row = mutation.getRow(); if (currentValue != null) { tags = TagUtil.carryForwardTags(tags, currentValue); - ts = Math.max(now, currentValue.getTimestamp()); + ts = Math.max(now, currentValue.getTimestamp() + 1); tags = TagUtil.carryForwardTTLTag(tags, mutation.getTTL()); byte[] tagBytes = TagUtil.fromList(tags); // Allocate an empty cell and copy in all parts. diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java index 5e0f3f8..4c8b1de 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java @@ -6555,7 +6555,7 @@ public class TestHRegion { region.increment(inc); result = region.get(new Get(row)); c = result.getColumnLatestCell(fam1, qual1); - assertEquals(c.getTimestamp(), 10L); + assertEquals(c.getTimestamp(), 11L); assertEquals(Bytes.toLong(c.getValueArray(), c.getValueOffset(), c.getValueLength()), 2L); } @@ -6580,7 +6580,7 @@ public class TestHRegion { region.append(a); result = region.get(new Get(row)); c = result.getColumnLatestCell(fam1, qual1); - assertEquals(c.getTimestamp(), 10L); + assertEquals(c.getTimestamp(), 11L); byte[] expected = new byte[qual1.length*2]; System.arraycopy(qual1, 0, expected, 0, qual1.length); -- 2.9.3 (Apple Git-75)