Details
Description
In org.apache.hadoop.hbase.chaos.actions.ChangeVersionsAction#perform(), it tries to update the max and min versions in a column descriptor:
for(HColumnDescriptor descriptor:columnDescriptors) {
descriptor.setMaxVersions(versions);
descriptor.setMinVersions(versions);
}
If the current minimum version is greater than the new max version, an IllegalArgumentException would throw from org.apache.hadoop.hbase.HColumnDescriptor#setMaxVersions().
Here is an example (trying to set max version to 1 while currently min version is 2):
java.lang.IllegalArgumentException: Set MaxVersion to 1 while minVersion is 2. Maximum versions must be >= minimum versions at org.apache.hadoop.hbase.HColumnDescriptor.setMaxVersions(HColumnDescriptor.java:634) at org.apache.hadoop.hbase.chaos.actions.ChangeVersionsAction.perform(ChangeVersionsAction.java:62)
One solution is to change the order of set - set min version first and then set max version (note: the current implement of org.apache.hadoop.hbase.HColumnDescriptor#setMinVersions() does not check the min version value and blindly set the version. Not sure whether this is by-design).
Another solution is to provide an API to set both min and max version in one function call.