From 066a198af072de334614e84ce32c9ceb353f6fce Mon Sep 17 00:00:00 2001 From: Pankaj_Kumar Date: Thu, 5 Nov 2015 14:28:51 +0800 Subject: [PATCH] HBASE-14737, Clear cachedMaxVersions when setValue(VERSIONS, value) called Change-Id: I33191d38ff6cb4e69174875b015c00d797a1bdbb --- .../java/org/apache/hadoop/hbase/HColumnDescriptor.java | 3 +++ .../hadoop/hbase/TestHColumnDescriptorDefaultVersions.java | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java index 4daf6ef..2c10308 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java @@ -439,6 +439,9 @@ public class HColumnDescriptor implements Comparable { * @return this (for chained invocation) */ public HColumnDescriptor setValue(byte[] key, byte[] value) { + if (Bytes.compareTo(Bytes.toBytes(HConstants.VERSIONS), key) == 0) { + cachedMaxVersions = UNINITIALIZED; + } values.put(new Bytes(key), new Bytes(value)); return this; diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHColumnDescriptorDefaultVersions.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHColumnDescriptorDefaultVersions.java index 94df71f..8d0557f 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHColumnDescriptorDefaultVersions.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHColumnDescriptorDefaultVersions.java @@ -133,6 +133,19 @@ public class TestHColumnDescriptorDefaultVersions { admin.deleteTable(TABLE_NAME); } } + + @Test + public void testHColumnDescriptorCachedMaxVersions() throws Exception { + HColumnDescriptor hcd = new HColumnDescriptor(FAMILY); + hcd.setMaxVersions(5); + // Verify the max version + assertEquals(5, hcd.getMaxVersions()); + + // modify the max version + hcd.setValue(Bytes.toBytes(HConstants.VERSIONS), Bytes.toBytes("8")); + // Verify the max version + assertEquals(8, hcd.getMaxVersions()); + } private void verifyHColumnDescriptor(int expected, final TableName tableName, final byte[]... families) throws IOException { -- 2.6.1.windows.1