Index: bin/HBase.rb
===================================================================
--- bin/HBase.rb (revision 800674)
+++ bin/HBase.rb (working copy)
@@ -270,6 +270,11 @@
status = @admin.getClusterStatus()
if format != nil and format == "detailed"
puts("version %s" % [ status.getHBaseVersion() ])
+ # Put regions in transition first because usually empty
+ puts("%d regionsInTransition" % status.getRegionsInTransition().size())
+ for k, v in status.getRegionsInTransition()
+ puts(" %s" % [v])
+ end
puts("%d live servers" % [ status.getServers() ])
for server in status.getServerInfo()
puts(" %s:%d %d" % \
Index: src/java/org/apache/hadoop/hbase/ClusterStatus.java
===================================================================
--- src/java/org/apache/hadoop/hbase/ClusterStatus.java (revision 800674)
+++ src/java/org/apache/hadoop/hbase/ClusterStatus.java (working copy)
@@ -26,6 +26,8 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.hadoop.io.VersionedWritable;
@@ -41,6 +43,7 @@
*
The number of requests since last report.
* Detailed region server loading and resource usage information,
* per server and per region.
+ * Regions in transition at master
*
*/
public class ClusterStatus extends VersionedWritable {
@@ -49,6 +52,7 @@
private String hbaseVersion;
private Collection liveServerInfo;
private Collection deadServers;
+ private Map intransition;
/**
* Constructor, for Writable
@@ -191,6 +195,14 @@
this.deadServers = deadServers;
}
+ public Map getRegionsInTransition() {
+ return this.intransition;
+ }
+
+ public void setRegionsInTransition(final Map m) {
+ this.intransition = m;
+ }
+
//
// Writable
//
@@ -206,6 +218,11 @@
for (String server: deadServers) {
out.writeUTF(server);
}
+ out.writeInt(this.intransition.size());
+ for (Map.Entry e: this.intransition.entrySet()) {
+ out.writeUTF(e.getKey());
+ out.writeUTF(e.getValue());
+ }
}
public void readFields(DataInput in) throws IOException {
@@ -223,5 +240,12 @@
for (int i = 0; i < count; i++) {
deadServers.add(in.readUTF());
}
+ count = in.readInt();
+ this.intransition = new HashMap(count);
+ for (int i = 0; i < count; i++) {
+ String key = in.readUTF();
+ String value = in.readUTF();
+ this.intransition.put(key, value);
+ }
}
-}
+}
\ No newline at end of file
Index: src/java/org/apache/hadoop/hbase/master/HMaster.java
===================================================================
--- src/java/org/apache/hadoop/hbase/master/HMaster.java (revision 800674)
+++ src/java/org/apache/hadoop/hbase/master/HMaster.java (working copy)
@@ -1053,6 +1053,7 @@
status.setHBaseVersion(VersionInfo.getVersion());
status.setServerInfo(serverManager.serversToServerInfo.values());
status.setDeadServers(serverManager.deadServers);
+ status.setRegionsInTransition(this.regionManager.getRegionsInTransition());
return status;
}
Index: src/java/org/apache/hadoop/hbase/master/RegionManager.java
===================================================================
--- src/java/org/apache/hadoop/hbase/master/RegionManager.java (revision 800674)
+++ src/java/org/apache/hadoop/hbase/master/RegionManager.java (working copy)
@@ -24,6 +24,7 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -1428,6 +1429,20 @@
}
}
+ /**
+ * @return Snapshot of regionsintransition Map.
+ */
+ Map getRegionsInTransition() {
+ Map result = new HashMap();
+ synchronized (this.regionsInTransition) {
+ if (this.regionsInTransition.isEmpty()) return result;
+ for (Map.Entry e: this.regionsInTransition.entrySet()) {
+ result.put(e.getKey(), e.getValue().toString());
+ }
+ }
+ return result;
+ }
+
/*
* State of a Region as it transitions from closed to open, etc. See
* note on regionsInTransition data member above for listing of state