You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2010/05/28 21:28:02 UTC
svn commit: r949269 - in /hbase/branches/0.20: CHANGES.txt
src/test/org/apache/hadoop/hbase/regionserver/TestHRegion.java
Author: apurtell
Date: Fri May 28 19:28:02 2010
New Revision: 949269
URL: http://svn.apache.org/viewvc?rev=949269&view=rev
Log:
HBASE-2589 TestHRegion.testWritesWhileScanning flaky
Modified:
hbase/branches/0.20/CHANGES.txt
hbase/branches/0.20/src/test/org/apache/hadoop/hbase/regionserver/TestHRegion.java
Modified: hbase/branches/0.20/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/branches/0.20/CHANGES.txt?rev=949269&r1=949268&r2=949269&view=diff
==============================================================================
--- hbase/branches/0.20/CHANGES.txt (original)
+++ hbase/branches/0.20/CHANGES.txt Fri May 28 19:28:02 2010
@@ -18,6 +18,7 @@ Release 0.20.5 - Wed May 26 00:15:56 PDT
HBASE-2610 ValueFilter copy pasted javadoc from QualifierFilter
HBASE-2167 Load balancer falls into pathological state if one server under
average - slop; endless churn
+ HBASE-2589 TestHRegion.testWritesWhileScanning flaky
IMPROVEMENTS
HBASE-2567 [stargate] minimize differences between 0.20 branch and trunk
Modified: hbase/branches/0.20/src/test/org/apache/hadoop/hbase/regionserver/TestHRegion.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.20/src/test/org/apache/hadoop/hbase/regionserver/TestHRegion.java?rev=949269&r1=949268&r2=949269&view=diff
==============================================================================
--- hbase/branches/0.20/src/test/org/apache/hadoop/hbase/regionserver/TestHRegion.java (original)
+++ hbase/branches/0.20/src/test/org/apache/hadoop/hbase/regionserver/TestHRegion.java Fri May 28 19:28:02 2010
@@ -2076,6 +2076,8 @@ public class TestHRegion extends HBaseTe
initHRegion(tableName, method, families);
PutThread putThread = new PutThread(numRows, families, qualifiers);
putThread.start();
+ putThread.waitForFirstPut();
+
FlushThread flushThread = new FlushThread();
flushThread.start();
@@ -2126,6 +2128,7 @@ public class TestHRegion extends HBaseTe
private int numRows;
private byte[][] families;
private byte[][] qualifiers;
+ private volatile int numPutsFinished = 0;
private PutThread(int numRows, byte[][] families,
byte[][] qualifiers) {
@@ -2134,6 +2137,17 @@ public class TestHRegion extends HBaseTe
this.qualifiers = qualifiers;
}
+ /**
+ * Block until this thread has put at least one row.
+ */
+ public void waitForFirstPut() throws InterruptedException {
+ // wait until put thread actually puts some data
+ while (numPutsFinished == 0) {
+ checkNoError();
+ Thread.sleep(50);
+ }
+ }
+
public void done() {
done.set(true);
}
@@ -2147,7 +2161,6 @@ public class TestHRegion extends HBaseTe
@Override
public void run() {
done.set(false);
- int val = 0;
while (!done.get()) {
try {
for (int r = 0; r < numRows; r++) {
@@ -2155,18 +2168,19 @@ public class TestHRegion extends HBaseTe
Put put = new Put(row);
for (byte[] family : families) {
for (byte[] qualifier : qualifiers) {
- put.add(family, qualifier, (long) val,
- Bytes.toBytes(val));
+ put.add(family, qualifier, (long) numPutsFinished,
+ Bytes.toBytes(numPutsFinished));
}
}
// System.out.println("Putting of kvsetsize=" + put.size());
region.put(put);
- if (val > 0 && val % 47 == 0) {
- System.out.println("put iteration = " + val);
- Delete delete = new Delete(row, (long)val-30, null);
+ numPutsFinished++;
+ if (numPutsFinished > 0 && numPutsFinished % 47 == 0) {
+ System.out.println("put iteration = " + numPutsFinished);
+ Delete delete = new Delete(row, (long)numPutsFinished-30, null);
region.delete(delete, null, true);
}
- val++;
+ numPutsFinished++;
}
} catch (IOException e) {
LOG.error("error while putting records", e);
@@ -2210,6 +2224,8 @@ public class TestHRegion extends HBaseTe
initHRegion(tableName, method, families);
PutThread putThread = new PutThread(numRows, families, qualifiers);
putThread.start();
+ putThread.waitForFirstPut();
+
FlushThread flushThread = new FlushThread();
flushThread.start();