You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by nk...@apache.org on 2013/01/04 11:29:44 UTC
svn commit: r1428776 - in /hbase/trunk/hbase-server/src:
main/java/org/apache/hadoop/hbase/
main/java/org/apache/hadoop/hbase/regionserver/
main/java/org/apache/hadoop/hbase/util/
test/java/org/apache/hadoop/hbase/io/encoding/
Author: nkeywal
Date: Fri Jan 4 10:29:43 2013
New Revision: 1428776
URL: http://svn.apache.org/viewvc?rev=1428776&view=rev
Log:
HBASE-7475 TestUpgradeFromHFileV1ToEncoding.testUpgrade hangs
Modified:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestUpgradeFromHFileV1ToEncoding.java
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java?rev=1428776&r1=1428775&r2=1428776&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java Fri Jan 4 10:29:43 2013
@@ -358,7 +358,7 @@ public class HTableDescriptor implements
byte [] value = getValue(key);
if (value != null) {
// TODO: Make value be a boolean rather than String of boolean.
- return Boolean.valueOf(Bytes.toString(value)).booleanValue();
+ return Boolean.valueOf(Bytes.toString(value));
}
return valueIfNull;
}
@@ -618,12 +618,10 @@ public class HTableDescriptor implements
/**
* This get the class associated with the region split policy which
* determines when a region split should occur. The class used by
- * default is {@link org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy}
- * which split the region base on a constant {@link #getMaxFileSize()}
+ * default is defined in {@link org.apache.hadoop.hbase.regionserver.RegionSplitPolicy}
*
* @return the class name of the region split policy for this table.
- * If this returns null, the default constant size based split policy
- * is used.
+ * If this returns null, the default split policy is used.
*/
public String getRegionSplitPolicyClassName() {
return getValue(SPLIT_POLICY);
@@ -998,7 +996,8 @@ public class HTableDescriptor implements
* @see #getFamilies()
*/
public HColumnDescriptor[] getColumnFamilies() {
- return getFamilies().toArray(new HColumnDescriptor[0]);
+ Collection<HColumnDescriptor> hColumnDescriptors = getFamilies();
+ return hColumnDescriptors.toArray(new HColumnDescriptor[hColumnDescriptors.size()]);
}
@@ -1256,7 +1255,7 @@ public class HTableDescriptor implements
}
int pblen = ProtobufUtil.lengthOfPBMagic();
TableSchema.Builder builder = TableSchema.newBuilder();
- TableSchema ts = null;
+ TableSchema ts;
try {
ts = builder.mergeFrom(bytes, pblen, bytes.length - pblen).build();
} catch (InvalidProtocolBufferException e) {
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java?rev=1428776&r1=1428775&r2=1428776&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java Fri Jan 4 10:29:43 2013
@@ -250,9 +250,9 @@ public class CompactSplitThread implemen
while (!done) {
try {
done = t.awaitTermination(60, TimeUnit.SECONDS);
- LOG.debug("Waiting for " + name + " to finish...");
+ LOG.info("Waiting for " + name + " to finish...");
} catch (InterruptedException ie) {
- LOG.debug("Interrupted waiting for " + name + " to finish...");
+ LOG.warn("Interrupted waiting for " + name + " to finish...");
}
}
}
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java?rev=1428776&r1=1428775&r2=1428776&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java Fri Jan 4 10:29:43 2013
@@ -237,28 +237,57 @@ public class JVMClusterUtil {
// Do active after.
if (activeMaster != null) activeMaster.master.shutdown();
}
+ boolean noWait = false;
+ final long maxTime = System.currentTimeMillis() + 120 * 1000;
if (regionservers != null) {
for (RegionServerThread t : regionservers) {
- if (t.isAlive()) {
+ t.getRegionServer().stop("Shutdown requested");
+ }
+ for (RegionServerThread t : regionservers) {
+ if (t.isAlive() && !noWait && System.currentTimeMillis() < maxTime) {
try {
- t.getRegionServer().stop("Shutdown requested");
- t.join();
+ t.join(maxTime);
} catch (InterruptedException e) {
- // continue
+ LOG.info("Got InterruptedException on shutdown - " +
+ "not waiting anymore on region server ends", e);
+ noWait = true; // someone wants us to speed up.
+ }
+ }
+ }
+
+ // Let's try to interrupt the remaining threads if any.
+ for (int i = 0; i < 10; ++i) {
+ for (RegionServerThread t : regionservers) {
+ if (t.isAlive()) {
+ try {
+ t.join(10);
+ } catch (InterruptedException e) {
+ noWait = true;
+ }
+ }
+ }
+ for (RegionServerThread t : regionservers) {
+ if (t.isAlive()) {
+ t.interrupt();
}
}
}
}
+
+
+
if (masters != null) {
for (JVMClusterUtil.MasterThread t : masters) {
- while (t.master.isAlive()) {
+ while (t.master.isAlive() && !noWait) {
try {
// The below has been replaced to debug sometime hangs on end of
// tests.
// this.master.join():
Threads.threadDumpingIsAlive(t.master.getThread());
} catch(InterruptedException e) {
- // continue
+ LOG.info("Got InterruptedException on shutdown - " +
+ "not waiting anymore on master ends", e);
+ noWait = true;
}
}
}
@@ -266,6 +295,10 @@ public class JVMClusterUtil {
LOG.info("Shutdown of " +
((masters != null) ? masters.size() : "0") + " master(s) and " +
((regionservers != null) ? regionservers.size() : "0") +
- " regionserver(s) complete");
+ " regionserver(s) " + (noWait ? "interrupted" : "complete"));
+
+ if (!noWait){
+ Thread.currentThread().interrupt();
+ }
}
}
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestUpgradeFromHFileV1ToEncoding.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestUpgradeFromHFileV1ToEncoding.java?rev=1428776&r1=1428775&r2=1428776&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestUpgradeFromHFileV1ToEncoding.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestUpgradeFromHFileV1ToEncoding.java Fri Jan 4 10:29:43 2013
@@ -31,7 +31,9 @@ import org.apache.hadoop.hbase.HTableDes
import org.apache.hadoop.hbase.LargeTests;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.io.hfile.HFile;
+import org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy;
import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.zookeeper.ZKAssign;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -72,6 +74,10 @@ public class TestUpgradeFromHFileV1ToEnc
public void testUpgrade() throws Exception {
int numBatches = 0;
HTableDescriptor htd = new HTableDescriptor(TABLE);
+
+ // We don't want a split in this test.
+ htd.setValue(HTableDescriptor.SPLIT_POLICY, ConstantSizeRegionSplitPolicy.class.getName());
+ htd.setMaxFileSize(Long.MAX_VALUE);
HColumnDescriptor hcd = new HColumnDescriptor(CF);
htd.addFamily(hcd);
HBaseAdmin admin = new HBaseAdmin(conf);