Module cleanup - don't hold on to stuff after the command completes.

--
MOS_MIGRATED_REVID=120111522
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/dash/DashModule.java b/src/main/java/com/google/devtools/build/lib/bazel/dash/DashModule.java
index ac46df5..79c753f 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/dash/DashModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/dash/DashModule.java
@@ -67,17 +67,19 @@
  */
 public class DashModule extends BlazeModule {
   private static final int ONE_MB = 1024 * 1024;
+  private static final NoOpSender NO_OP_SENDER = new NoOpSender();
 
   private static final String DASH_SECRET_HEADER = "bazel-dash-secret";
 
+  private final ExecutorService executorService;
+
   private Sendable sender;
   private CommandEnvironment env;
-  private final ExecutorService executorService;
   private BuildData optionsBuildData;
 
   public DashModule() {
     // Make sure sender != null before we hop on the event bus.
-    sender = new NoOpSender();
+    sender = NO_OP_SENDER;
     executorService = Executors.newFixedThreadPool(5,
         new ThreadFactory() {
           @Override
@@ -96,6 +98,13 @@
   }
 
   @Override
+  public void afterCommand() {
+    this.sender = NO_OP_SENDER;
+    this.env = null;
+    this.optionsBuildData = null;
+  }
+
+  @Override
   public Iterable<Class<? extends OptionsBase>> getCommandOptions(Command command) {
     return (command.name().equals("build") || command.name().equals("test"))
         ? ImmutableList.<Class<? extends OptionsBase>>of(DashOptions.class)
@@ -107,11 +116,11 @@
     DashOptions options = optionsProvider.getOptions(DashOptions.class);
     try {
       sender = (options == null || !options.useDash)
-          ? new NoOpSender()
+          ? NO_OP_SENDER
           : new Sender(options.url, options.secret, env, executorService);
     } catch (SenderException e) {
       env.getReporter().handle(e.toEvent());
-      sender = new NoOpSender();
+      sender = NO_OP_SENDER;
     }
     if (optionsBuildData != null) {
       sender.send("options", optionsBuildData);
@@ -360,5 +369,4 @@
     public void send(String suffix, BuildData message) {
     }
   }
-
 }
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BuildSummaryStatsModule.java b/src/main/java/com/google/devtools/build/lib/runtime/BuildSummaryStatsModule.java
index de79f05..73ba2f2 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BuildSummaryStatsModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BuildSummaryStatsModule.java
@@ -47,6 +47,13 @@
     eventBus.register(this);
   }
 
+  @Override
+  public void afterCommand() {
+    this.criticalPathComputer = null;
+    this.eventBus = null;
+    this.reporter = null;
+  }
+
   @Subscribe
   public void executionPhaseStarting(ExecutionStartingEvent event) {
     criticalPathComputer = new SimpleCriticalPathComputer(BlazeClock.instance());