diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java index 6f13a87650..bd8aa2a3a8 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java @@ -129,12 +129,6 @@ public abstract class FileSystem extends Configured implements Closeable { boolean resolveSymlinks; - private Tracer tracer; - - protected final Tracer getTracer() { - return tracer; - } - /** * This method adds a file system for testing so that we can find it later. It * is only for testing. @@ -2712,7 +2706,6 @@ private static FileSystem createFileSystem(URI uri, Configuration conf try { Class clazz = getFileSystemClass(uri.getScheme(), conf); FileSystem fs = (FileSystem)ReflectionUtils.newInstance(clazz, conf); - fs.tracer = tracer; fs.initialize(uri, conf); return fs; } finally { diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Globber.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Globber.java index 7a015751ce..7c69167c3a 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Globber.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Globber.java @@ -47,7 +47,7 @@ public Globber(FileSystem fs, Path pathPattern, PathFilter filter) { this.fc = null; this.pathPattern = pathPattern; this.filter = filter; - this.tracer = fs.getTracer(); + this.tracer = FsTracer.get(fs.getConf()); } public Globber(FileContext fc, Path pathPattern, PathFilter filter) { diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/tracing/TestTraceUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/tracing/TestTraceUtils.java index 75411dacce..fc0726e3ee 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/tracing/TestTraceUtils.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/tracing/TestTraceUtils.java @@ -18,8 +18,13 @@ package org.apache.hadoop.tracing; import static org.junit.Assert.assertEquals; + +import java.net.URI; import java.util.LinkedList; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.LocalFileSystem; +import org.apache.hadoop.fs.Path; import org.apache.hadoop.tracing.SpanReceiverInfo.ConfigurationPair; import org.apache.htrace.core.HTraceConfiguration; import org.junit.Test; @@ -50,4 +55,17 @@ public void testExtraConfig() { HTraceConfiguration wrapped = TraceUtils.wrapHadoopConf(TEST_PREFIX, conf, extraConfig); assertEquals(newValue, wrapped.get(key)); } + + /** + * Test tracing the globber. This is a regression test for HDFS-9187. + */ + @Test + public void testTracingGlobber() throws Exception { + // Bypass the normal FileSystem object creation path by just creating an + // instance of a subclass. + FileSystem fs = new LocalFileSystem(); + fs.initialize(new URI("file:///"), new Configuration()); + fs.globStatus(new Path("/")); + fs.close(); + } }