HBASE-19521 HBase mob compaction needs to check hfile version
Signed-off-by: tedyu <yuzhihong@gmail.com>
This commit is contained in:
parent
c0740b84ef
commit
07d20b2d18
|
@ -54,6 +54,7 @@ import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;
|
||||||
import org.apache.hadoop.hbase.coprocessor.MasterCoprocessor;
|
import org.apache.hadoop.hbase.coprocessor.MasterCoprocessor;
|
||||||
import org.apache.hadoop.hbase.errorhandling.ForeignException;
|
import org.apache.hadoop.hbase.errorhandling.ForeignException;
|
||||||
import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;
|
import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;
|
||||||
|
import org.apache.hadoop.hbase.io.hfile.HFile;
|
||||||
import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;
|
import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;
|
||||||
import org.apache.hadoop.hbase.ipc.PriorityFunction;
|
import org.apache.hadoop.hbase.ipc.PriorityFunction;
|
||||||
import org.apache.hadoop.hbase.ipc.QosPriority;
|
import org.apache.hadoop.hbase.ipc.QosPriority;
|
||||||
|
@ -1626,6 +1627,7 @@ public class MasterRpcServices extends RSRpcServices
|
||||||
TableName tableName = RegionInfo.getTable(regionName);
|
TableName tableName = RegionInfo.getTable(regionName);
|
||||||
// if the region is a mob region, do the mob file compaction.
|
// if the region is a mob region, do the mob file compaction.
|
||||||
if (MobUtils.isMobRegionName(tableName, regionName)) {
|
if (MobUtils.isMobRegionName(tableName, regionName)) {
|
||||||
|
checkHFileFormatVersionForMob();
|
||||||
return compactMob(request, tableName);
|
return compactMob(request, tableName);
|
||||||
} else {
|
} else {
|
||||||
return super.compactRegion(controller, request);
|
return super.compactRegion(controller, request);
|
||||||
|
@ -1635,6 +1637,20 @@ public class MasterRpcServices extends RSRpcServices
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check configured hfile format version before to do compaction
|
||||||
|
* @throws IOException throw IOException
|
||||||
|
*/
|
||||||
|
private void checkHFileFormatVersionForMob() throws IOException {
|
||||||
|
if (HFile.getFormatVersion(master.getConfiguration()) < HFile.MIN_FORMAT_VERSION_WITH_TAGS) {
|
||||||
|
LOG.error("A minimum HFile version of " + HFile.MIN_FORMAT_VERSION_WITH_TAGS
|
||||||
|
+ " is required for MOB compaction. Compaction will not run.");
|
||||||
|
throw new IOException("A minimum HFile version of " + HFile.MIN_FORMAT_VERSION_WITH_TAGS
|
||||||
|
+ " is required for MOB feature. Consider setting " + HFile.FORMAT_VERSION_KEY
|
||||||
|
+ " accordingly.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@QosPriority(priority=HConstants.ADMIN_QOS)
|
@QosPriority(priority=HConstants.ADMIN_QOS)
|
||||||
public GetRegionInfoResponse getRegionInfo(final RpcController controller,
|
public GetRegionInfoResponse getRegionInfo(final RpcController controller,
|
||||||
|
|
Loading…
Reference in New Issue