|
@@ -33,8 +33,13 @@ import org.apache.hadoop.fs.shell.Command;
|
|
|
import org.apache.hadoop.fs.shell.CommandFactory;
|
|
|
import org.apache.hadoop.fs.shell.FsCommand;
|
|
|
import org.apache.hadoop.tools.TableListing;
|
|
|
+import org.apache.hadoop.tracing.TraceUtils;
|
|
|
import org.apache.hadoop.util.Tool;
|
|
|
import org.apache.hadoop.util.ToolRunner;
|
|
|
+import org.apache.htrace.Sampler;
|
|
|
+import org.apache.htrace.SamplerBuilder;
|
|
|
+import org.apache.htrace.Trace;
|
|
|
+import org.apache.htrace.TraceScope;
|
|
|
|
|
|
/** Provide command line access to a FileSystem. */
|
|
|
@InterfaceAudience.Private
|
|
@@ -47,6 +52,7 @@ public class FsShell extends Configured implements Tool {
|
|
|
private FileSystem fs;
|
|
|
private Trash trash;
|
|
|
protected CommandFactory commandFactory;
|
|
|
+ private Sampler traceSampler;
|
|
|
|
|
|
private final String usagePrefix =
|
|
|
"Usage: hadoop fs [generic options]";
|
|
@@ -272,7 +278,8 @@ public class FsShell extends Configured implements Tool {
|
|
|
public int run(String argv[]) throws Exception {
|
|
|
// initialize FsShell
|
|
|
init();
|
|
|
-
|
|
|
+ traceSampler = new SamplerBuilder(TraceUtils.
|
|
|
+ wrapHadoopConf("dfs.shell.htrace.", getConf())).build();
|
|
|
int exitCode = -1;
|
|
|
if (argv.length < 1) {
|
|
|
printUsage(System.err);
|
|
@@ -284,7 +291,12 @@ public class FsShell extends Configured implements Tool {
|
|
|
if (instance == null) {
|
|
|
throw new UnknownCommandException();
|
|
|
}
|
|
|
- exitCode = instance.run(Arrays.copyOfRange(argv, 1, argv.length));
|
|
|
+ TraceScope scope = Trace.startSpan(instance.getCommandName(), traceSampler);
|
|
|
+ try {
|
|
|
+ exitCode = instance.run(Arrays.copyOfRange(argv, 1, argv.length));
|
|
|
+ } finally {
|
|
|
+ scope.close();
|
|
|
+ }
|
|
|
} catch (IllegalArgumentException e) {
|
|
|
displayError(cmd, e.getLocalizedMessage());
|
|
|
if (instance != null) {
|