Browse Source

HADOOP-18416. fix ITestS3AIOStatisticsContext test failure (#4806)

Follow on to HADOOP-17461.

Contributed by: Mehakmeet Singh
Mehakmeet Singh 2 năm trước cách đây
mục cha
commit
03961b10c2

+ 8 - 0
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3AIOStatisticsContext.java

@@ -42,6 +42,7 @@ import org.apache.hadoop.util.functional.TaskPool;
 import static org.apache.hadoop.fs.contract.ContractTestUtils.assertCapabilities;
 import static org.apache.hadoop.fs.contract.ContractTestUtils.dataset;
 import static org.apache.hadoop.fs.contract.ContractTestUtils.writeDataset;
+import static org.apache.hadoop.fs.s3a.S3ATestUtils.disablePrefetching;
 import static org.apache.hadoop.fs.statistics.IOStatisticAssertions.assertThatStatisticCounter;
 import static org.apache.hadoop.fs.statistics.IOStatisticAssertions.verifyStatisticCounterValue;
 import static org.apache.hadoop.fs.statistics.StreamStatisticNames.STREAM_READ_BYTES;
@@ -67,6 +68,7 @@ public class ITestS3AIOStatisticsContext extends AbstractS3ATestBase {
   @Override
   protected Configuration createConfiguration() {
     Configuration configuration = super.createConfiguration();
+    disablePrefetching(configuration);
     enableIOStatisticsContext();
     return configuration;
   }
@@ -253,6 +255,7 @@ public class ITestS3AIOStatisticsContext extends AbstractS3ATestBase {
     // Worker thread work and wait for it to finish.
     TestWorkerThread workerThread = new TestWorkerThread(path, null);
     long workerThreadID = workerThread.getId();
+    LOG.info("Worker thread ID: {} ", workerThreadID);
     workerThread.start();
     workerThread.join();
 
@@ -463,6 +466,8 @@ public class ITestS3AIOStatisticsContext extends AbstractS3ATestBase {
 
     @Override
     public void run() {
+      // Setting the worker thread's name.
+      Thread.currentThread().setName("worker thread");
       S3AFileSystem fs = getFileSystem();
       byte[] data = new byte[BYTES_SMALL];
 
@@ -470,6 +475,9 @@ public class ITestS3AIOStatisticsContext extends AbstractS3ATestBase {
       if (ioStatisticsContext != null) {
         IOStatisticsContext.setThreadIOStatisticsContext(ioStatisticsContext);
       }
+      // Storing context in a field to not lose the reference in a GC.
+      IOStatisticsContext ioStatisticsContextWorkerThread =
+          getCurrentIOStatisticsContext();
 
       // Write in the worker thread.
       try (FSDataOutputStream out = fs.create(workerThreadPath)) {

+ 7 - 4
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/S3ATestUtils.java

@@ -1499,8 +1499,11 @@ public final class S3ATestUtils {
     }
   }
 
-
-
-
-
+  /**
+   * Disable Prefetching streams from S3AFileSystem in tests.
+   * @param conf Configuration to remove the prefetch property from.
+   */
+  public static void disablePrefetching(Configuration conf) {
+    removeBaseAndBucketOverrides(conf, PREFETCH_ENABLED_KEY);
+  }
 }