diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java index 80d220d57c07..79d305fcfa4d 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java @@ -3767,8 +3767,8 @@ public void testFlushCacheWhileScanning() throws IOException, InterruptedExcepti String method = "testFlushCacheWhileScanning"; this.region = initHRegion(tableName, method, CONF, family); + FlushThread flushThread = new FlushThread(); try { - FlushThread flushThread = new FlushThread(); flushThread.start(); Scan scan = new Scan(); @@ -3787,7 +3787,7 @@ public void testFlushCacheWhileScanning() throws IOException, InterruptedExcepti region.put(put); if (i != 0 && i % compactInterval == 0) { - // System.out.println("iteration = " + i); + LOG.debug("iteration = " + i+ " ts="+System.currentTimeMillis()); region.compact(true); } @@ -3806,15 +3806,20 @@ public void testFlushCacheWhileScanning() throws IOException, InterruptedExcepti if (!toggle) { flushThread.flush(); } - assertEquals("i=" + i, expectedCount, res.size()); + assertEquals("toggle="+toggle+"i=" + i + " ts="+System.currentTimeMillis(), + expectedCount, res.size()); toggle = !toggle; } } - flushThread.done(); - flushThread.join(); - flushThread.checkNoError(); } finally { + try { + flushThread.done(); + flushThread.join(); + flushThread.checkNoError(); + } catch (InterruptedException ie) { + LOG.warn("Caught exception when joining with flushThread", ie); + } HBaseTestingUtility.closeRegionAndWAL(this.region); this.region = null; } @@ -3904,12 +3909,12 @@ public void testWritesWhileScanning() throws IOException, InterruptedException { String method = "testWritesWhileScanning"; this.region = initHRegion(tableName, method, CONF, families); + FlushThread flushThread = new FlushThread(); + PutThread putThread = new PutThread(numRows, families, qualifiers); try { - PutThread putThread = new PutThread(numRows, families, qualifiers); putThread.start(); putThread.waitForFirstPut(); - FlushThread flushThread = new FlushThread(); flushThread.start(); Scan scan = new Scan(Bytes.toBytes("row0"), Bytes.toBytes("row1")); @@ -3949,15 +3954,20 @@ public void testWritesWhileScanning() throws IOException, InterruptedException { region.flush(true); - putThread.join(); - putThread.checkNoError(); - - flushThread.done(); - flushThread.join(); - flushThread.checkNoError(); } finally { try { - HBaseTestingUtility.closeRegionAndWAL(this.region); + flushThread.done(); + flushThread.join(); + flushThread.checkNoError(); + + putThread.join(); + putThread.checkNoError(); + } catch (InterruptedException ie) { + LOG.warn("Caught exception when joining with flushThread", ie); + } + + try { + HBaseTestingUtility.closeRegionAndWAL(this.region); } catch (DroppedSnapshotException dse) { // We could get this on way out because we interrupt the background flusher and it could // fail anywhere causing a DSE over in the background flusher... only it is not properly