HBASE-8934 Fix bunch of flaky tests

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1502627 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael Stack 2013-07-12 17:25:58 +00:00
parent 4d895726d9
commit 425960c914
7 changed files with 71 additions and 30 deletions

View File

@ -1071,6 +1071,8 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility {
desc.addFamily(hcd); desc.addFamily(hcd);
} }
getHBaseAdmin().createTable(desc, startKey, endKey, numRegions); getHBaseAdmin().createTable(desc, startKey, endKey, numRegions);
// HBaseAdmin only waits for regions to appear in META we should wait until they are assigned
waitUntilAllRegionsAssigned(tableName);
return new HTable(getConfiguration(), tableName); return new HTable(getConfiguration(), tableName);
} }
@ -1095,6 +1097,8 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility {
desc.addFamily(hcd); desc.addFamily(hcd);
} }
getHBaseAdmin().createTable(desc); getHBaseAdmin().createTable(desc);
// HBaseAdmin only waits for regions to appear in META we should wait until they are assigned
waitUntilAllRegionsAssigned(tableName);
return new HTable(c, tableName); return new HTable(c, tableName);
} }
@ -1117,6 +1121,8 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility {
desc.addFamily(hcd); desc.addFamily(hcd);
} }
getHBaseAdmin().createTable(desc); getHBaseAdmin().createTable(desc);
// HBaseAdmin only waits for regions to appear in META we should wait until they are assigned
waitUntilAllRegionsAssigned(tableName);
return new HTable(c, tableName); return new HTable(c, tableName);
} }
@ -1150,6 +1156,8 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility {
desc.addFamily(hcd); desc.addFamily(hcd);
} }
getHBaseAdmin().createTable(desc); getHBaseAdmin().createTable(desc);
// HBaseAdmin only waits for regions to appear in META we should wait until they are assigned
waitUntilAllRegionsAssigned(tableName);
return new HTable(new Configuration(getConfiguration()), tableName); return new HTable(new Configuration(getConfiguration()), tableName);
} }
@ -1171,6 +1179,8 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility {
desc.addFamily(hcd); desc.addFamily(hcd);
} }
getHBaseAdmin().createTable(desc); getHBaseAdmin().createTable(desc);
// HBaseAdmin only waits for regions to appear in META we should wait until they are assigned
waitUntilAllRegionsAssigned(tableName);
return new HTable(new Configuration(getConfiguration()), tableName); return new HTable(new Configuration(getConfiguration()), tableName);
} }
@ -1194,6 +1204,8 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility {
i++; i++;
} }
getHBaseAdmin().createTable(desc); getHBaseAdmin().createTable(desc);
// HBaseAdmin only waits for regions to appear in META we should wait until they are assigned
waitUntilAllRegionsAssigned(tableName);
return new HTable(new Configuration(getConfiguration()), tableName); return new HTable(new Configuration(getConfiguration()), tableName);
} }
@ -1211,6 +1223,8 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility {
HColumnDescriptor hcd = new HColumnDescriptor(family); HColumnDescriptor hcd = new HColumnDescriptor(family);
desc.addFamily(hcd); desc.addFamily(hcd);
getHBaseAdmin().createTable(desc, splitRows); getHBaseAdmin().createTable(desc, splitRows);
// HBaseAdmin only waits for regions to appear in META we should wait until they are assigned
waitUntilAllRegionsAssigned(tableName);
return new HTable(getConfiguration(), tableName); return new HTable(getConfiguration(), tableName);
} }
@ -1230,6 +1244,8 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility {
desc.addFamily(hcd); desc.addFamily(hcd);
} }
getHBaseAdmin().createTable(desc, splitRows); getHBaseAdmin().createTable(desc, splitRows);
// HBaseAdmin only waits for regions to appear in META we should wait until they are assigned
waitUntilAllRegionsAssigned(tableName);
return new HTable(getConfiguration(), tableName); return new HTable(getConfiguration(), tableName);
} }

View File

@ -248,9 +248,23 @@ public class TestHFileArchiving {
UTIL.deleteTable(TABLE_NAME); UTIL.deleteTable(TABLE_NAME);
LOG.debug("Deleted table"); LOG.debug("Deleted table");
// then get the files in the archive directory. assertArchiveFiles(fs, storeFiles, 30000);
}
private void assertArchiveFiles(FileSystem fs, List<String> storeFiles, long timeout) throws IOException {
long end = System.currentTimeMillis() + timeout;
Path archiveDir = HFileArchiveUtil.getArchivePath(UTIL.getConfiguration()); Path archiveDir = HFileArchiveUtil.getArchivePath(UTIL.getConfiguration());
List<String> archivedFiles = getAllFileNames(fs, archiveDir); List<String> archivedFiles = new ArrayList<String>();
// We have to ensure that the DeleteTableHandler is finished. HBaseAdmin.deleteXXX() can return before all files
// are archived. We should fix HBASE-5487 and fix synchronous operations from admin.
while (System.currentTimeMillis() < end) {
archivedFiles = getAllFileNames(fs, archiveDir);
if (archivedFiles.size() >= storeFiles.size()) {
break;
}
}
Collections.sort(storeFiles); Collections.sort(storeFiles);
Collections.sort(archivedFiles); Collections.sort(archivedFiles);
@ -267,6 +281,7 @@ public class TestHFileArchiving {
archivedFiles.containsAll(storeFiles)); archivedFiles.containsAll(storeFiles));
} }
/** /**
* Test that the store files are archived when a column family is removed. * Test that the store files are archived when a column family is removed.
* @throws Exception * @throws Exception
@ -310,23 +325,7 @@ public class TestHFileArchiving {
// then delete the table so the hfiles get archived // then delete the table so the hfiles get archived
UTIL.getHBaseAdmin().deleteColumn(TABLE_NAME, TEST_FAM); UTIL.getHBaseAdmin().deleteColumn(TABLE_NAME, TEST_FAM);
// then get the files in the archive directory. assertArchiveFiles(fs, storeFiles, 30000);
Path archiveDir = HFileArchiveUtil.getArchivePath(UTIL.getConfiguration());
List<String> archivedFiles = getAllFileNames(fs, archiveDir);
Collections.sort(storeFiles);
Collections.sort(archivedFiles);
LOG.debug("Store files:");
for (int i = 0; i < storeFiles.size(); i++) {
LOG.debug(i + " - " + storeFiles.get(i));
}
LOG.debug("Archive files:");
for (int i = 0; i < archivedFiles.size(); i++) {
LOG.debug(i + " - " + archivedFiles.get(i));
}
assertTrue("Archived files are missing some of the store files!",
archivedFiles.containsAll(storeFiles));
UTIL.deleteTable(TABLE_NAME); UTIL.deleteTable(TABLE_NAME);
} }

View File

@ -39,7 +39,21 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.DoNotRetryIOException;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HRegionLocation;
import org.apache.hadoop.hbase.HServerAddress;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.InvalidFamilyOperationException;
import org.apache.hadoop.hbase.LargeTests;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableExistsException;
import org.apache.hadoop.hbase.TableNotDisabledException;
import org.apache.hadoop.hbase.TableNotEnabledException;
import org.apache.hadoop.hbase.TableNotFoundException;
import org.apache.hadoop.hbase.catalog.CatalogTracker; import org.apache.hadoop.hbase.catalog.CatalogTracker;
import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.exceptions.InvalidFamilyOperationException; import org.apache.hadoop.hbase.exceptions.InvalidFamilyOperationException;
@ -1077,7 +1091,7 @@ public class TestAdmin {
new HColumnDescriptor("/cfamily/name"); new HColumnDescriptor("/cfamily/name");
} }
@Test(timeout=36000) @Test(timeout=300000)
public void testEnableDisableAddColumnDeleteColumn() throws Exception { public void testEnableDisableAddColumnDeleteColumn() throws Exception {
ZooKeeperWatcher zkw = HBaseTestingUtility.getZooKeeperWatcher(TEST_UTIL); ZooKeeperWatcher zkw = HBaseTestingUtility.getZooKeeperWatcher(TEST_UTIL);
byte [] tableName = Bytes.toBytes("testMasterAdmin"); byte [] tableName = Bytes.toBytes("testMasterAdmin");
@ -1320,10 +1334,15 @@ public class TestAdmin {
.getServerName().getServerName()); .getServerName().getServerName());
} }
} }
Thread.sleep(1000); boolean isInList = ProtobufUtil.getOnlineRegions(rs).contains(info);
onlineRegions = ProtobufUtil.getOnlineRegions(rs); long timeout = System.currentTimeMillis() + 10000;
while ((System.currentTimeMillis() < timeout) && (isInList)) {
Thread.sleep(100);
isInList = ProtobufUtil.getOnlineRegions(rs).contains(info);
}
assertFalse("The region should not be present in online regions list.", assertFalse("The region should not be present in online regions list.",
onlineRegions.contains(info)); isInList);
} }
@Test @Test
@ -1372,7 +1391,7 @@ public class TestAdmin {
} }
boolean isInList = ProtobufUtil.getOnlineRegions(rs).contains(info); boolean isInList = ProtobufUtil.getOnlineRegions(rs).contains(info);
long timeout = System.currentTimeMillis() + 2000; long timeout = System.currentTimeMillis() + 10000;
while ((System.currentTimeMillis() < timeout) && (isInList)) { while ((System.currentTimeMillis() < timeout) && (isInList)) {
Thread.sleep(100); Thread.sleep(100);
isInList = ProtobufUtil.getOnlineRegions(rs).contains(info); isInList = ProtobufUtil.getOnlineRegions(rs).contains(info);

View File

@ -166,7 +166,14 @@ public class TestScannerTimeout {
scan.setCaching(SCANNER_CACHING); scan.setCaching(SCANNER_CACHING);
LOG.info("************ TEST3686A"); LOG.info("************ TEST3686A");
MetaReader.fullScanMetaAndPrint(TEST_UTIL.getHBaseCluster().getMaster().getCatalogTracker()); MetaReader.fullScanMetaAndPrint(TEST_UTIL.getHBaseCluster().getMaster().getCatalogTracker());
HTable table = new HTable(TEST_UTIL.getConfiguration(), TABLE_NAME); // Set a very high timeout, we want to test what happens when a RS
// fails but the region is recovered before the lease times out.
// Since the RS is already created, this conf is client-side only for
// this new table
Configuration conf = new Configuration(TEST_UTIL.getConfiguration());
conf.setInt(
HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY, SCANNER_TIMEOUT*100);
HTable table = new HTable(conf, TABLE_NAME);
LOG.info("START ************ TEST3686A---22"); LOG.info("START ************ TEST3686A---22");
ResultScanner r = table.getScanner(scan); ResultScanner r = table.getScanner(scan);

View File

@ -77,7 +77,7 @@ public class TestRegionServerCoprocessorExceptionWithRemove {
TEST_UTIL.shutdownMiniCluster(); TEST_UTIL.shutdownMiniCluster();
} }
@Test(timeout=30000) @Test(timeout=60000)
public void testExceptionFromCoprocessorDuringPut() public void testExceptionFromCoprocessorDuringPut()
throws IOException, InterruptedException { throws IOException, InterruptedException {
// Set watches on the zookeeper nodes for all of the regionservers in the // Set watches on the zookeeper nodes for all of the regionservers in the

View File

@ -69,7 +69,7 @@ public class TestChangingEncoding {
private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility(); private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
private static final Configuration conf = TEST_UTIL.getConfiguration(); private static final Configuration conf = TEST_UTIL.getConfiguration();
private static final int TIMEOUT_MS = 240000; private static final int TIMEOUT_MS = 600000;
private HBaseAdmin admin; private HBaseAdmin admin;
private HColumnDescriptor hcd; private HColumnDescriptor hcd;