diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 675902db88..1412fb83e9 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -739,6 +739,10 @@ Release 2.8.0 - UNRELEASED HADOOP-11807. add a lint mode to releasedocmaker (ramtin via aw) + HADOOP-12183. Annotate the HTrace span created by FsShell with the + command-line arguments passed by the user (Masatake Iwasaki via Colin P. + McCabe) + OPTIMIZATIONS HADOOP-11785. Reduce the number of listStatus operation in distcp diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsShell.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsShell.java index e9c2f7340d..a0510beaa7 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsShell.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsShell.java @@ -35,6 +35,7 @@ import org.apache.hadoop.tracing.SpanReceiverHost; import org.apache.hadoop.tools.TableListing; import org.apache.hadoop.tracing.TraceUtils; +import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; import org.apache.htrace.Sampler; @@ -298,6 +299,13 @@ public int run(String argv[]) throws Exception { throw new UnknownCommandException(); } TraceScope scope = Trace.startSpan(instance.getCommandName(), traceSampler); + if (scope.getSpan() != null) { + String args = StringUtils.join(" ", argv); + if (args.length() > 2048) { + args = args.substring(0, 2048); + } + scope.getSpan().addKVAnnotation("args", args); + } try { exitCode = instance.run(Arrays.copyOfRange(argv, 1, argv.length)); } finally { diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFsShell.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFsShell.java index 38e768fc6b..59fcbe505d 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFsShell.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFsShell.java @@ -24,6 +24,7 @@ import org.apache.hadoop.util.ToolRunner; import org.apache.htrace.SamplerBuilder; import org.apache.htrace.impl.AlwaysSampler; +import org.junit.Assert; import org.junit.Test; public class TestFsShell { @@ -57,10 +58,13 @@ public void testTracing() throws Throwable { FsShell shell = new FsShell(conf); int res; try { - res = ToolRunner.run(shell, new String[]{"-help"}); + res = ToolRunner.run(shell, new String[]{"-help", "ls", "cat"}); } finally { shell.close(); } SetSpanReceiver.assertSpanNamesFound(new String[]{"help"}); + Assert.assertEquals("-help ls cat", + SetSpanReceiver.getMap() + .get("help").get(0).getKVAnnotations().get("args")); } }