in hbase-hbck2/src/main/java/org/apache/hbase/HBCK2.java [268:308]
int setRegionState(ClusterConnection connection, String region, int replicaId,
RegionState.State newState)
throws IOException {
if (newState == null) {
throw new IllegalArgumentException("State can't be null.");
}
RegionState.State currentState = null;
Table table = connection.getTable(TableName.valueOf("hbase:meta"));
RowFilter filter = new RowFilter(CompareOperator.EQUAL, new SubstringComparator(region));
Scan scan = new Scan();
scan.setFilter(filter);
Result result = table.getScanner(scan).next();
if (result != null) {
byte[] currentStateValue = result.getValue(HConstants.CATALOG_FAMILY,
getRegionStateColumn(replicaId));
if (currentStateValue == null) {
System.out.println("WARN: Region state info on meta was NULL");
} else {
currentState = RegionState.State.valueOf(
org.apache.hadoop.hbase.util.Bytes.toString(currentStateValue));
}
Put put = new Put(result.getRow());
put.addColumn(HConstants.CATALOG_FAMILY, getRegionStateColumn(replicaId),
org.apache.hadoop.hbase.util.Bytes.toBytes(newState.name()));
table.put(put);
if (replicaId == 0) {
System.out.println("Changed region " + region + " STATE from "
+ currentState + " to " + newState);
} else {
System.out.println("Changed STATE for replica reigon " + replicaId +
" of primary region " + region +
"from " + currentState + " to " + newState);
}
return EXIT_SUCCESS;
} else {
System.out.println("ERROR: Could not find region " + region + " in meta.");
}
return EXIT_FAILURE;
}