You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ay...@apache.org on 2023/02/11 20:38:17 UTC
[hadoop] 01/03: HDFS-15654. TestBPOfferService#testMissBlocksWhenReregister fails intermittently (#2419)
This is an automated email from the ASF dual-hosted git repository.
ayushsaxena pushed a commit to branch branch-3.3
in repository https://gitbox.apache.org/repos/asf/hadoop.git
commit c17734b7472f7c92f933f2c6a7ab7e7ef5f17dea
Author: Ahmed Hussein <50...@users.noreply.github.com>
AuthorDate: Wed Oct 28 18:24:34 2020 -0500
HDFS-15654. TestBPOfferService#testMissBlocksWhenReregister fails intermittently (#2419)
---
.../hdfs/server/datanode/TestBPOfferService.java | 57 ++++++++++------------
1 file changed, 26 insertions(+), 31 deletions(-)
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBPOfferService.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBPOfferService.java
index a3440115057..7542ef97b72 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBPOfferService.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBPOfferService.java
@@ -34,6 +34,7 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.File;
import java.io.IOException;
@@ -47,6 +48,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.hadoop.metrics2.MetricsRecordBuilder;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.hadoop.conf.Configuration;
@@ -285,21 +287,18 @@ public class TestBPOfferService {
int totalTestBlocks = 4000;
Thread addNewBlockThread = null;
final AtomicInteger count = new AtomicInteger(0);
-
+ DataNodeFaultInjector prevDNFaultInjector = null;
try {
waitForBothActors(bpos);
waitForInitialization(bpos);
+ prevDNFaultInjector = DataNodeFaultInjector.get();
DataNodeFaultInjector.set(new DataNodeFaultInjector() {
public void blockUtilSendFullBlockReport() {
try {
- GenericTestUtils.waitFor(() -> {
- if(count.get() > 2000) {
- return true;
- }
- return false;
- }, 100, 1000);
+ GenericTestUtils.waitFor(() -> count.get() > 2000,
+ 100, 1000);
} catch (Exception e) {
- e.printStackTrace();
+ LOG.error("error DataNodeFaultInjector", e);
}
}
});
@@ -318,45 +317,41 @@ public class TestBPOfferService {
count.addAndGet(1);
Thread.sleep(1);
} catch (Exception e) {
- e.printStackTrace();
+ LOG.error("error addNewBlockThread", e);
}
}
});
addNewBlockThread.start();
// Make sure that generate blocks for DataNode and IBR not empty now.
- GenericTestUtils.waitFor(() -> {
- if(count.get() > 0) {
- return true;
- }
- return false;
- }, 100, 1000);
+ GenericTestUtils.waitFor(() -> count.get() > 0, 100, 1000);
// Trigger re-register using DataNode Command.
datanodeCommands[0] = new DatanodeCommand[]{RegisterCommand.REGISTER};
- bpos.triggerHeartbeatForTests();
+ bpos.triggerHeartbeatForTests();
+ addNewBlockThread.join();
+ addNewBlockThread = null;
+ // Verify FBR/IBR count is equal to generate number.
try {
- GenericTestUtils.waitFor(() -> {
- if(fullBlockReportCount == totalTestBlocks ||
- incrBlockReportCount == totalTestBlocks) {
- return true;
- }
- return false;
- }, 1000, 15000);
- } catch (Exception e) {}
+ GenericTestUtils.waitFor(() ->
+ (fullBlockReportCount == totalTestBlocks ||
+ incrBlockReportCount == totalTestBlocks), 1000, 15000);
+ } catch (Exception e) {
+ fail(String.format("Timed out wait for IBR counts FBRCount = %d,"
+ + " IBRCount = %d; expected = %d. Exception: %s",
+ fullBlockReportCount, incrBlockReportCount, totalTestBlocks,
+ e.getMessage()));
+ }
- // Verify FBR/IBR count is equal to generate number.
- assertTrue(fullBlockReportCount == totalTestBlocks ||
- incrBlockReportCount == totalTestBlocks);
} finally {
- addNewBlockThread.join();
+ if (addNewBlockThread != null) {
+ addNewBlockThread.interrupt();
+ }
bpos.stop();
bpos.join();
- DataNodeFaultInjector.set(new DataNodeFaultInjector() {
- public void blockUtilSendFullBlockReport() {}
- });
+ DataNodeFaultInjector.set(prevDNFaultInjector);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org