diff --git hbase-client/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java hbase-client/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java index 4091c11..5de7564 100644 --- hbase-client/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java +++ hbase-client/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java @@ -505,6 +505,30 @@ public class HColumnDescriptor implements Comparable { } /** + * Set minimum and maximum versions to keep + * + * @param minVersions minimal number of versions + * @param maxVersions maximum number of versions + * @return this (for chained invocation) + */ + public HColumnDescriptor setVersions(int minVersions, int maxVersions) { + if (minVersions <= 0) { + // TODO: Allow minVersion and maxVersion of 0 to be the way you say "Keep all versions". + // Until there is support, consider 0 or < 0 -- a configuration error. + throw new IllegalArgumentException("Minimum versions must be positive"); + } + + if (maxVersions < minVersions) { + throw new IllegalArgumentException("Set MaxVersion to " + maxVersions + + " and set MinVersion to " + minVersions + + ". Maximum versions must be >= minimum versions "); + } + setMinVersions(minVersions); + setMaxVersions(maxVersions); + return this; + } + + /** * @return The storefile/hfile blocksize for this column family. */ public synchronized int getBlocksize() { diff --git hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeVersionsAction.java hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeVersionsAction.java index 0faa8a3..16f1cb0 100644 --- hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeVersionsAction.java +++ hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/ChangeVersionsAction.java @@ -59,8 +59,7 @@ public class ChangeVersionsAction extends Action { int versions = random.nextInt(3) + 1; for(HColumnDescriptor descriptor:columnDescriptors) { - descriptor.setMaxVersions(versions); - descriptor.setMinVersions(versions); + descriptor.setVersions(versions, versions); } LOG.debug("Performing action: Changing versions on " + tableName.getNameAsString()); admin.modifyTable(tableName, tableDescriptor);