Automated rollback of commit 353000ebc512e4f1654d123713b003011751e07e.

*** Reason for rollback ***

b/312694497

*** Original change description ***

Make the BesUploadMode per transport instead of per invocation.

As a result, `--build_event_[text|json|binary]_file_upload_mode` are introduced to set the upload mode for build event file respectively. The default value for them is `wait_for_upload_complete`. The implicit requirement on `--bes_upload_mode=wait_for_upload_complete` is also removed.

Alternate to https://github.com/bazelbuild/bazel/pull/19322.

PiperOrigin-RevId: 586076379
Change-Id: I020c969497fcf72fe77754a5438ff5353ab606cb
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
index 4304841..56991df 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
@@ -13,7 +13,6 @@
 // limitations under the License.
 package com.google.devtools.build.lib.buildeventservice;
 
-import static com.google.common.collect.ImmutableMap.toImmutableMap;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -81,11 +80,9 @@
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.time.Duration;
-import java.util.AbstractMap.SimpleEntry;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
@@ -116,9 +113,6 @@
   private boolean isRunsPerTestOverTheLimit;
   private BuildEventArtifactUploaderFactory uploaderFactoryToCleanup;
 
-  private BuildEventOutputStreamFactory buildEventOutputStreamFactory =
-      file -> new BufferedOutputStream(Files.newOutputStream(Paths.get(file)));
-
   /**
    * Holds the close futures for the upload of each transport with timeouts attached to them using
    * {@link #constructCloseFuturesMapWithTimeouts(ImmutableMap)} obtained from {@link
@@ -139,6 +133,8 @@
   private ImmutableMap<BuildEventTransport, ListenableFuture<Void>>
       halfCloseFuturesWithTimeoutsMap = ImmutableMap.of();
 
+  private BesUploadMode previousUploadMode = BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE;
+
   // TODO(lpino): Use Optional instead of @Nullable for the members below.
   @Nullable private OutErr outErr;
   @Nullable private ImmutableSet<BuildEventTransport> bepTransports;
@@ -202,17 +198,6 @@
     resetPendingUploads();
   }
 
-  private void removeFromPendingUploads(
-      Map<BuildEventTransport, ListenableFuture<Void>> transportFutures) {
-    transportFutures
-        .values()
-        .forEach(closeFuture -> closeFuture.cancel(/* mayInterruptIfRunning= */ true));
-    closeFuturesWithTimeoutsMap =
-        closeFuturesWithTimeoutsMap.entrySet().stream()
-            .filter(entry -> !transportFutures.containsKey(entry.getKey()))
-            .collect(toImmutableMap(Entry::getKey, Entry::getValue));
-  }
-
   private static boolean isTimeoutException(ExecutionException e) {
     return e.getCause() instanceof TimeoutException;
   }
@@ -234,31 +219,20 @@
       return;
     }
 
-    ImmutableMap<BuildEventTransport, ListenableFuture<Void>> waitingFutureMap =
-        closeFuturesWithTimeoutsMap.entrySet().stream()
-            .map(
-                entry -> {
-                  var transport = entry.getKey();
-                  var closeFuture = entry.getValue();
-                  ListenableFuture<Void> future = closeFuture;
-                  if (transport.getBesUploadMode() == BesUploadMode.FULLY_ASYNC) {
-                    future =
-                        isShutdown ? closeFuture : halfCloseFuturesWithTimeoutsMap.get(transport);
-                    if (future == null) {
-                      future = closeFuture;
-                    }
-                  }
-                  return new SimpleEntry<>(transport, future);
-                })
-            .collect(toImmutableMap(Entry::getKey, Entry::getValue));
-    ImmutableMap<BuildEventTransport, ListenableFuture<Void>> cancelCloseFutures =
-        closeFuturesWithTimeoutsMap.entrySet().stream()
-            .filter(
-                entry -> {
-                  var transport = entry.getKey();
-                  return transport.getBesUploadMode() != BesUploadMode.FULLY_ASYNC;
-                })
-            .collect(toImmutableMap(Entry::getKey, Entry::getValue));
+    ImmutableMap<BuildEventTransport, ListenableFuture<Void>> waitingFutureMap = null;
+    boolean cancelCloseFutures = true;
+    switch (previousUploadMode) {
+      case FULLY_ASYNC:
+        waitingFutureMap =
+            isShutdown ? closeFuturesWithTimeoutsMap : halfCloseFuturesWithTimeoutsMap;
+        cancelCloseFutures = false;
+        break;
+      case WAIT_FOR_UPLOAD_COMPLETE:
+      case NOWAIT_FOR_UPLOAD_COMPLETE:
+        waitingFutureMap = closeFuturesWithTimeoutsMap;
+        cancelCloseFutures = true;
+        break;
+    }
 
     Stopwatch stopwatch = Stopwatch.createStarted();
     try {
@@ -287,7 +261,7 @@
               waitedMillis / 1000, waitedMillis % 1000);
       reporter.handle(Event.warn(msg));
       logger.atWarning().withCause(exception).log("%s", msg);
-      cancelCloseFutures = closeFuturesWithTimeoutsMap;
+      cancelCloseFutures = true;
     } catch (ExecutionException e) {
       String msg;
       // Futures.withTimeout wraps the TimeoutException in an ExecutionException when the future
@@ -307,12 +281,13 @@
       }
       reporter.handle(Event.warn(msg));
       logger.atWarning().withCause(e).log("%s", msg);
-      cancelCloseFutures = closeFuturesWithTimeoutsMap;
+      cancelCloseFutures = true;
     } finally {
-      cancelCloseFutures
-          .values()
-          .forEach(closeFuture -> closeFuture.cancel(/* mayInterruptIfRunning= */ true));
-      resetPendingUploads();
+      if (cancelCloseFutures) {
+        cancelAndResetPendingUploads();
+      } else {
+        resetPendingUploads();
+      }
     }
   }
 
@@ -506,7 +481,8 @@
   }
 
   private void waitForBuildEventTransportsToClose(
-      Map<BuildEventTransport, ListenableFuture<Void>> transportFutures)
+      Map<BuildEventTransport, ListenableFuture<Void>> transportFutures,
+      boolean besUploadModeIsSynchronous)
       throws AbruptExitException {
     final ScheduledExecutorService executor =
         Executors.newSingleThreadScheduledExecutor(
@@ -543,7 +519,9 @@
               e.getCause().getMessage()),
           e);
     } finally {
-      removeFromPendingUploads(transportFutures);
+      if (besUploadModeIsSynchronous) {
+        cancelAndResetPendingUploads();
+      }
       executor.shutdown();
     }
   }
@@ -601,16 +579,17 @@
   }
 
   private void closeBepTransports() throws AbruptExitException {
+    previousUploadMode = besOptions.besUploadMode;
     closeFuturesWithTimeoutsMap =
         constructCloseFuturesMapWithTimeouts(streamer.getCloseFuturesMap());
     halfCloseFuturesWithTimeoutsMap =
         constructCloseFuturesMapWithTimeouts(streamer.getHalfClosedMap());
+    boolean besUploadModeIsSynchronous =
+        besOptions.besUploadMode == BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE;
     Map<BuildEventTransport, ListenableFuture<Void>> blockingTransportFutures = new HashMap<>();
     for (Map.Entry<BuildEventTransport, ListenableFuture<Void>> entry :
         closeFuturesWithTimeoutsMap.entrySet()) {
       BuildEventTransport bepTransport = entry.getKey();
-      boolean besUploadModeIsSynchronous =
-          bepTransport.getBesUploadMode() == BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE;
       if (!bepTransport.mayBeSlow() || besUploadModeIsSynchronous) {
         blockingTransportFutures.put(bepTransport, entry.getValue());
       } else {
@@ -620,7 +599,7 @@
       }
     }
     if (!blockingTransportFutures.isEmpty()) {
-      waitForBuildEventTransportsToClose(blockingTransportFutures);
+      waitForBuildEventTransportsToClose(blockingTransportFutures, besUploadModeIsSynchronous);
     }
   }
 
@@ -785,18 +764,16 @@
     if (!Strings.isNullOrEmpty(besStreamOptions.buildEventTextFile)) {
       try {
         BufferedOutputStream bepTextOutputStream =
-            buildEventOutputStreamFactory.create(besStreamOptions.buildEventTextFile);
+            new BufferedOutputStream(
+                Files.newOutputStream(Paths.get(besStreamOptions.buildEventTextFile)));
+
         BuildEventArtifactUploader localFileUploader =
             besStreamOptions.buildEventTextFilePathConversion
                 ? uploaderSupplier.get()
                 : new LocalFilesArtifactUploader();
         bepTransportsBuilder.add(
             new TextFormatFileTransport(
-                bepTextOutputStream,
-                bepOptions,
-                localFileUploader,
-                artifactGroupNamer,
-                besStreamOptions.buildEventTextFileUploadMode));
+                bepTextOutputStream, bepOptions, localFileUploader, artifactGroupNamer));
       } catch (IOException exception) {
         // TODO(b/125216340): Consider making this a warning instead of an error once the
         //  associated bug has been resolved.
@@ -814,18 +791,16 @@
     if (!Strings.isNullOrEmpty(besStreamOptions.buildEventBinaryFile)) {
       try {
         BufferedOutputStream bepBinaryOutputStream =
-            buildEventOutputStreamFactory.create(besStreamOptions.buildEventBinaryFile);
+            new BufferedOutputStream(
+                Files.newOutputStream(Paths.get(besStreamOptions.buildEventBinaryFile)));
+
         BuildEventArtifactUploader localFileUploader =
             besStreamOptions.buildEventBinaryFilePathConversion
                 ? uploaderSupplier.get()
                 : new LocalFilesArtifactUploader();
         bepTransportsBuilder.add(
             new BinaryFormatFileTransport(
-                bepBinaryOutputStream,
-                bepOptions,
-                localFileUploader,
-                artifactGroupNamer,
-                besStreamOptions.buildEventBinaryFileUploadMode));
+                bepBinaryOutputStream, bepOptions, localFileUploader, artifactGroupNamer));
       } catch (IOException exception) {
         // TODO(b/125216340): Consider making this a warning instead of an error once the
         //  associated bug has been resolved.
@@ -843,7 +818,8 @@
     if (!Strings.isNullOrEmpty(besStreamOptions.buildEventJsonFile)) {
       try {
         BufferedOutputStream bepJsonOutputStream =
-            buildEventOutputStreamFactory.create(besStreamOptions.buildEventJsonFile);
+            new BufferedOutputStream(
+                Files.newOutputStream(Paths.get(besStreamOptions.buildEventJsonFile)));
         BuildEventArtifactUploader localFileUploader =
             besStreamOptions.buildEventJsonFilePathConversion
                 ? uploaderSupplier.get()
@@ -854,8 +830,7 @@
                 bepOptions,
                 localFileUploader,
                 artifactGroupNamer,
-                makeJsonTypeRegistry(),
-                besStreamOptions.buildEventJsonFileUploadMode));
+                makeJsonTypeRegistry()));
       } catch (IOException exception) {
         // TODO(b/125216340): Consider making this a warning instead of an error once the
         //  associated bug has been resolved.
@@ -902,11 +877,6 @@
 
   protected abstract Set<String> allowedCommands(OptionsT besOptions);
 
-  @VisibleForTesting
-  void setBuildEventOutputStreamFactory(BuildEventOutputStreamFactory factory) {
-    this.buildEventOutputStreamFactory = factory;
-  }
-
   protected ImmutableSet<String> getBesKeywords(
       OptionsT besOptions, @Nullable OptionsParsingResult startupOptionsProvider) {
     List<String> userKeywords = besOptions.besKeywords;
@@ -963,9 +933,4 @@
       throw exception;
     }
   }
-
-  @VisibleForTesting
-  interface BuildEventOutputStreamFactory {
-    BufferedOutputStream create(String file) throws IOException;
-  }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java
index 7511621..e47edc7 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java
@@ -19,7 +19,6 @@
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.eventbus.EventBus;
 import com.google.common.util.concurrent.ListenableFuture;
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
 import com.google.devtools.build.lib.buildeventservice.client.BuildEventServiceClient;
 import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
 import com.google.devtools.build.lib.buildeventstream.BuildEvent;
@@ -38,7 +37,6 @@
 public class BuildEventServiceTransport implements BuildEventTransport {
   private final BuildEventServiceUploader besUploader;
   private final Duration besTimeout;
-  private final BesUploadMode besUploadMode;
 
   private BuildEventServiceTransport(
       BuildEventServiceClient besClient,
@@ -51,8 +49,7 @@
       EventBus eventBus,
       Duration closeTimeout,
       Sleeper sleeper,
-      Timestamp commandStartTime,
-      BesUploadMode besUploadMode) {
+      Timestamp commandStartTime) {
     this.besTimeout = closeTimeout;
     this.besUploader =
         new BuildEventServiceUploader.Builder()
@@ -67,7 +64,6 @@
             .eventBus(eventBus)
             .commandStartTime(commandStartTime)
             .build();
-    this.besUploadMode = besUploadMode;
   }
 
   @Override
@@ -96,11 +92,6 @@
   }
 
   @Override
-  public BesUploadMode getBesUploadMode() {
-    return besUploadMode;
-  }
-
-  @Override
   public void sendBuildEvent(BuildEvent event) {
     besUploader.enqueueEvent(event);
   }
@@ -197,8 +188,7 @@
           checkNotNull(eventBus),
           (besOptions.besTimeout != null) ? besOptions.besTimeout : Duration.ZERO,
           sleeper != null ? sleeper : new JavaSleeper(),
-          checkNotNull(commandStartTime),
-          besOptions.besUploadMode);
+          checkNotNull(commandStartTime));
     }
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD b/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD
index be3e787..8562920 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD
@@ -21,7 +21,6 @@
     deps = [
         "//src/main/java/com/google/devtools/build/lib/actions:artifacts",
         "//src/main/java/com/google/devtools/build/lib/actions:file_metadata",
-        "//src/main/java/com/google/devtools/build/lib/buildeventservice:buildeventservice-options",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventTransport.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventTransport.java
index 945afed..5b2d2b3 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventTransport.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventTransport.java
@@ -13,8 +13,8 @@
 // limitations under the License.
 package com.google.devtools.build.lib.buildeventstream;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.util.concurrent.ListenableFuture;
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
 import java.time.Duration;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
@@ -24,12 +24,14 @@
  *
  * <p>All implementations need to be thread-safe. All methods are expected to return quickly.
  *
- * <p>Notice that this interface does not provide any error handling API. A transport may choose to
- * log interesting errors to the command line and/or abort the whole build.
+ * <p>Notice that this interface does not provide any error handling API. A transport may choose
+ * to log interesting errors to the command line and/or abort the whole build.
  */
 @ThreadSafe
 public interface BuildEventTransport {
-  /** The name of this transport as can be displayed to a user. */
+  /**
+   * The name of this transport as can be displayed to a user.
+   */
   String name();
 
   /**
@@ -85,9 +87,7 @@
    */
   boolean mayBeSlow();
 
-  /** Returns the desired {@link BesUploadMode} for the transport. */
-  BesUploadMode getBesUploadMode();
-
+  @VisibleForTesting
   @Nullable
   BuildEventArtifactUploader getUploader();
 }
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD
index fcab7f7..b74731e 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD
@@ -15,7 +15,6 @@
     name = "transports",
     srcs = glob(["*.java"]),
     deps = [
-        "//src/main/java/com/google/devtools/build/lib/buildeventservice:buildeventservice-options",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto",
         "//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception",
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BinaryFormatFileTransport.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BinaryFormatFileTransport.java
index c335338..c3a83c0 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BinaryFormatFileTransport.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BinaryFormatFileTransport.java
@@ -14,7 +14,6 @@
 
 package com.google.devtools.build.lib.buildeventstream.transports;
 
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
 import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
 import com.google.devtools.build.lib.buildeventstream.BuildEvent;
 import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader;
@@ -35,9 +34,8 @@
       BufferedOutputStream outputStream,
       BuildEventProtocolOptions options,
       BuildEventArtifactUploader uploader,
-      ArtifactGroupNamer namer,
-      BesUploadMode besUploadMode) {
-    super(outputStream, options, uploader, namer, besUploadMode);
+      ArtifactGroupNamer namer) {
+    super(outputStream, options, uploader, namer);
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventStreamOptions.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventStreamOptions.java
index 15ef420..6d38019 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventStreamOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventStreamOptions.java
@@ -14,8 +14,6 @@
 
 package com.google.devtools.build.lib.buildeventstream.transports;
 
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadModeConverter;
 import com.google.devtools.common.options.Option;
 import com.google.devtools.common.options.OptionDocumentationCategory;
 import com.google.devtools.common.options.OptionEffectTag;
@@ -48,6 +46,7 @@
       name = "build_event_binary_file",
       oldName = "experimental_build_event_binary_file",
       defaultValue = "",
+      implicitRequirements = {"--bes_upload_mode=wait_for_upload_complete"},
       documentationCategory = OptionDocumentationCategory.LOGGING,
       effectTags = {OptionEffectTag.AFFECTS_OUTPUTS},
       help =
@@ -60,6 +59,7 @@
       name = "build_event_json_file",
       oldName = "experimental_build_event_json_file",
       defaultValue = "",
+      implicitRequirements = {"--bes_upload_mode=wait_for_upload_complete"},
       documentationCategory = OptionDocumentationCategory.LOGGING,
       effectTags = {OptionEffectTag.AFFECTS_OUTPUTS},
       help =
@@ -68,54 +68,14 @@
   public String buildEventJsonFile;
 
   @Option(
-      name = "build_event_text_file_upload_mode",
-      defaultValue = "wait_for_upload_complete",
-      converter = BesUploadModeConverter.class,
-      documentationCategory = OptionDocumentationCategory.LOGGING,
-      effectTags = {OptionEffectTag.EAGERNESS_TO_EXIT},
-      help =
-          "Specifies whether the Build Event Service upload for --build_event_text_file should"
-              + " block the build completion or should end the invocation immediately and finish"
-              + " the upload in the background. Either 'wait_for_upload_complete' (default),"
-              + " 'nowait_for_upload_complete', or 'fully_async'.")
-  public BesUploadMode buildEventTextFileUploadMode;
-
-  @Option(
-      name = "build_event_binary_file_upload_mode",
-      defaultValue = "wait_for_upload_complete",
-      converter = BesUploadModeConverter.class,
-      documentationCategory = OptionDocumentationCategory.LOGGING,
-      effectTags = {OptionEffectTag.EAGERNESS_TO_EXIT},
-      help =
-          "Specifies whether the Build Event Service upload for --build_event_binary_file should"
-              + " block the build completion or should end the invocation immediately and finish"
-              + " the upload in the background. Either 'wait_for_upload_complete' (default),"
-              + " 'nowait_for_upload_complete', or 'fully_async'.")
-  public BesUploadMode buildEventBinaryFileUploadMode;
-
-  @Option(
-      name = "build_event_json_file_upload_mode",
-      defaultValue = "wait_for_upload_complete",
-      converter = BesUploadModeConverter.class,
-      documentationCategory = OptionDocumentationCategory.LOGGING,
-      effectTags = {OptionEffectTag.EAGERNESS_TO_EXIT},
-      help =
-          "Specifies whether the Build Event Service upload for --build_event_json_file should"
-              + " block the build completion or should end the invocation immediately and finish"
-              + " the upload in the background. Either 'wait_for_upload_complete' (default),"
-              + " 'nowait_for_upload_complete', or 'fully_async'.")
-  public BesUploadMode buildEventJsonFileUploadMode;
-
-  @Option(
       name = "build_event_text_file_path_conversion",
       oldName = "experimental_build_event_text_file_path_conversion",
       defaultValue = "true",
       documentationCategory = OptionDocumentationCategory.LOGGING,
       effectTags = {OptionEffectTag.AFFECTS_OUTPUTS},
-      help =
-          "Convert paths in the text file representation of the build event protocol to more "
-              + "globally valid URIs whenever possible; if disabled, the file:// uri scheme will "
-              + "always be used")
+      help = "Convert paths in the text file representation of the build event protocol to more "
+          + "globally valid URIs whenever possible; if disabled, the file:// uri scheme will "
+          + "always be used")
   public boolean buildEventTextFilePathConversion;
 
   @Option(
@@ -124,10 +84,9 @@
       defaultValue = "true",
       documentationCategory = OptionDocumentationCategory.LOGGING,
       effectTags = {OptionEffectTag.AFFECTS_OUTPUTS},
-      help =
-          "Convert paths in the binary file representation of the build event protocol to more "
-              + "globally valid URIs whenever possible; if disabled, the file:// uri scheme will "
-              + "always be used")
+      help = "Convert paths in the binary file representation of the build event protocol to more "
+          + "globally valid URIs whenever possible; if disabled, the file:// uri scheme will "
+          + "always be used")
   public boolean buildEventBinaryFilePathConversion;
 
   @Option(
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/FileTransport.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/FileTransport.java
index da3c2b7..7bc427d 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/FileTransport.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/FileTransport.java
@@ -24,7 +24,6 @@
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
 import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
 import com.google.devtools.build.lib.buildeventstream.BuildEvent;
 import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader;
@@ -67,7 +66,6 @@
   private final BuildEventArtifactUploader uploader;
   private final SequentialWriter writer;
   private final ArtifactGroupNamer namer;
-  private final BesUploadMode besUploadMode;
 
   private final ScheduledExecutorService timeoutExecutor =
       MoreExecutors.listeningDecorator(
@@ -78,14 +76,12 @@
       BufferedOutputStream outputStream,
       BuildEventProtocolOptions options,
       BuildEventArtifactUploader uploader,
-      ArtifactGroupNamer namer,
-      BesUploadMode besUploadMode) {
+      ArtifactGroupNamer namer) {
     this.uploader = uploader;
     this.options = options;
     this.writer =
         new SequentialWriter(outputStream, this::serializeEvent, uploader, timeoutExecutor);
     this.namer = namer;
-    this.besUploadMode = besUploadMode;
   }
 
   @ThreadSafe
@@ -174,7 +170,8 @@
       // Print a more useful error message when the upload times out.
       // An {@link ExecutionException} may be wrapping a {@link TimeoutException} if the
       // Future was created with {@link Futures#withTimeout}.
-      if (e instanceof ExecutionException && e.getCause() instanceof TimeoutException) {
+      if (e instanceof ExecutionException
+          && e.getCause() instanceof TimeoutException) {
         message = "Unable to write all BEP events to file due to timeout";
       } else {
         message =
@@ -323,11 +320,6 @@
   }
 
   @Override
-  public BesUploadMode getBesUploadMode() {
-    return besUploadMode;
-  }
-
-  @Override
   public BuildEventArtifactUploader getUploader() {
     return uploader;
   }
@@ -337,3 +329,4 @@
     return writer.getFlushInterval();
   }
 }
+
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransport.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransport.java
index b6033d8..5d7af3a 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransport.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransport.java
@@ -18,7 +18,6 @@
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.flogger.GoogleLogger;
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
 import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
 import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader;
 import com.google.devtools.build.lib.buildeventstream.BuildEventProtocolOptions;
@@ -48,9 +47,8 @@
       BuildEventProtocolOptions options,
       BuildEventArtifactUploader uploader,
       ArtifactGroupNamer namer,
-      TypeRegistry typeRegistry,
-      BesUploadMode besUploadMode) {
-    super(outputStream, options, uploader, namer, besUploadMode);
+      TypeRegistry typeRegistry) {
+    super(outputStream, options, uploader, namer);
     jsonPrinter =
         JsonFormat.printer().usingTypeRegistry(typeRegistry).omittingInsignificantWhitespace();
   }
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/TextFormatFileTransport.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/TextFormatFileTransport.java
index 02086a8..34e26e6 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/TextFormatFileTransport.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/TextFormatFileTransport.java
@@ -16,7 +16,6 @@
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
 import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
 import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader;
 import com.google.devtools.build.lib.buildeventstream.BuildEventProtocolOptions;
@@ -36,9 +35,8 @@
       BufferedOutputStream outputStream,
       BuildEventProtocolOptions options,
       BuildEventArtifactUploader uploader,
-      ArtifactGroupNamer namer,
-      BesUploadMode besUploadMode) {
-    super(outputStream, options, uploader, namer, besUploadMode);
+      ArtifactGroupNamer namer) {
+    super(outputStream, options, uploader, namer);
   }
 
   @Override
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventservice/BUILD b/src/test/java/com/google/devtools/build/lib/buildeventservice/BUILD
index 6ec644c..0c2a557 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventservice/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildeventservice/BUILD
@@ -74,7 +74,6 @@
         "@googleapis//:google_devtools_build_v1_build_events_java_proto",
         "@googleapis//:google_devtools_build_v1_publish_build_event_java_grpc",
         "@googleapis//:google_devtools_build_v1_publish_build_event_java_proto",
-        "@maven//:com_google_testparameterinjector_test_parameter_injector",
         "@remoteapis//:build_bazel_remote_execution_v2_remote_execution_java_proto",
     ],
 )
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java b/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java
index 1115c36..dfea5f7 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java
@@ -37,7 +37,6 @@
 import com.google.devtools.build.lib.bugreport.Crash;
 import com.google.devtools.build.lib.bugreport.CrashContext;
 import com.google.devtools.build.lib.buildeventservice.BazelBuildEventServiceModule.BackendConfig;
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceModule.BuildEventOutputStreamFactory;
 import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader;
 import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos;
 import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted;
@@ -75,8 +74,6 @@
 import com.google.devtools.build.v1.PublishLifecycleEventRequest;
 import com.google.devtools.build.v1.StreamId;
 import com.google.protobuf.Empty;
-import com.google.testing.junit.testparameterinjector.TestParameter;
-import com.google.testing.junit.testparameterinjector.TestParameterInjector;
 import io.grpc.ManagedChannel;
 import io.grpc.Metadata;
 import io.grpc.Server;
@@ -87,15 +84,11 @@
 import io.grpc.inprocess.InProcessServerBuilder;
 import io.grpc.stub.StreamObserver;
 import io.grpc.util.MutableHandlerRegistry;
-import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.lang.Thread.UncaughtExceptionHandler;
-import java.nio.file.Files;
-import java.nio.file.Paths;
 import java.time.Duration;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -109,7 +102,6 @@
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.GuardedBy;
 import org.junit.After;
@@ -119,9 +111,10 @@
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /** Tests for {@link BazelBuildEventServiceModule}. */
-@RunWith(TestParameterInjector.class)
+@RunWith(JUnit4.class)
 public final class BazelBuildEventServiceModuleTest extends BuildIntegrationTestCase {
 
   private static final Duration WAIT_FOR_LAST_INVOCATION_TIMEOUT = Duration.ofSeconds(2);
@@ -137,8 +130,6 @@
 
   @Rule public TemporaryFolder tmpFolder = new TemporaryFolder();
 
-  @Nullable private BuildEventOutputStreamFactory buildEventOutputStreamFactory;
-
   @Override
   protected BlazeModule getConnectivityModule() {
     return connectivityModule;
@@ -176,9 +167,6 @@
   private void runBuildWithOptions(String... options) throws Exception {
     addOptions(options);
     besModule = runtimeWrapper.getRuntime().getBlazeModule(BazelBuildEventServiceModule.class);
-    if (buildEventOutputStreamFactory != null) {
-      besModule.setBuildEventOutputStreamFactory(buildEventOutputStreamFactory);
-    }
     runtimeWrapper.newCommand();
     buildTarget();
   }
@@ -455,65 +443,6 @@
     events.assertNoWarningsOrErrors();
   }
 
-  enum BuildEventFile {
-    TEXT,
-    JSON,
-    BINARY;
-
-    String getBuildEventFileFlag(String file) {
-      switch (this) {
-        case TEXT:
-          return "--build_event_text_file=" + file;
-        case JSON:
-          return "--build_event_json_file=" + file;
-        case BINARY:
-          return "--build_event_binary_file=" + file;
-      }
-      throw new IllegalStateException();
-    }
-
-    String getBuildEventFileUploadModeFlag(String mode) {
-      switch (this) {
-        case TEXT:
-          return "--build_event_text_file_upload_mode=" + mode;
-        case JSON:
-          return "--build_event_json_file_upload_mode=" + mode;
-        case BINARY:
-          return "--build_event_binary_file_upload_mode=" + mode;
-      }
-      throw new IllegalStateException();
-    }
-  }
-
-  @Test
-  public void testAfterCommand_buildEventFile_waitForUploadComplete(
-      @TestParameter BuildEventFile buildEventFile) throws Exception {
-    AtomicReference<DelayingCloseBufferedOutputStream> outRef = new AtomicReference<>(null);
-    buildEventOutputStreamFactory =
-        (file) -> {
-          var out =
-              new DelayingCloseBufferedOutputStream(
-                  Files.newOutputStream(Paths.get(file)), Duration.ofSeconds(1));
-          outRef.set(out);
-          return out;
-        };
-    buildEventService.setDelayBeforeClosingStream(Duration.ofSeconds(10));
-    var file = tmpFolder.newFile();
-
-    runBuildWithOptions(
-        "--bes_backend=inprocess",
-        "--bes_upload_mode=FULLY_ASYNC",
-        "--bes_timeout=1s",
-        buildEventFile.getBuildEventFileFlag(file.getAbsolutePath()),
-        buildEventFile.getBuildEventFileUploadModeFlag("wait_for_upload_complete"));
-    afterBuildCommand();
-
-    assertThat(outRef.get().isClosed()).isTrue();
-    // Expect Bazel doesn't wait for uploading to bes_backend, otherwise there will be a timeout
-    // error.
-    events.assertNoWarningsOrErrors();
-  }
-
   @Test
   public void testAfterCommand_fullyAsync_slowHalfCloseIgnored() throws Exception {
     buildEventService.setDelayBeforeHalfClosingStream(Duration.ofSeconds(10));
@@ -1126,26 +1055,4 @@
           new StatusRuntimeException(Status.DATA_LOSS.withDescription(errorMessage)));
     }
   }
-
-  private static final class DelayingCloseBufferedOutputStream extends BufferedOutputStream {
-    private final Duration delay;
-    private final AtomicBoolean closed = new AtomicBoolean(false);
-
-    DelayingCloseBufferedOutputStream(OutputStream out, Duration delay) {
-      super(out);
-      this.delay = delay;
-      this.out = out;
-    }
-
-    @Override
-    public void close() throws IOException {
-      Uninterruptibles.sleepUninterruptibly(delay);
-      super.close();
-      closed.set(true);
-    }
-
-    public boolean isClosed() {
-      return closed.get();
-    }
-  }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD
index 1272740..3caaa10 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD
@@ -19,7 +19,6 @@
     test_class = "com.google.devtools.build.lib.AllTests",
     runtime_deps = ["//src/test/java/com/google/devtools/build/lib:test_runner"],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib/buildeventservice:buildeventservice-options",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream/transports",
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BinaryFormatFileTransportTest.java b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BinaryFormatFileTransportTest.java
index 916d563..527bcce 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BinaryFormatFileTransportTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BinaryFormatFileTransportTest.java
@@ -25,7 +25,6 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
 import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
 import com.google.devtools.build.lib.buildeventstream.BuildEvent;
 import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile;
@@ -108,8 +107,7 @@
             outputStream,
             defaultOpts,
             new LocalFilesArtifactUploader(),
-            artifactGroupNamer,
-            BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE);
+            artifactGroupNamer);
     transport.sendBuildEvent(buildEvent);
 
     BuildEventStreamProtos.BuildEvent progress =
@@ -159,12 +157,7 @@
     BufferedOutputStream outputStream =
         new BufferedOutputStream(Files.newOutputStream(Paths.get(output.getAbsolutePath())));
     BinaryFormatFileTransport transport =
-        new BinaryFormatFileTransport(
-            outputStream,
-            defaultOpts,
-            uploader,
-            artifactGroupNamer,
-            BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE);
+        new BinaryFormatFileTransport(outputStream, defaultOpts, uploader, artifactGroupNamer);
     transport.sendBuildEvent(event1);
 
     ExecutionException expected =
@@ -196,8 +189,7 @@
             outputStream,
             defaultOpts,
             new LocalFilesArtifactUploader(),
-            artifactGroupNamer,
-            BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE);
+            artifactGroupNamer);
 
     transport.close().get();
 
@@ -228,8 +220,7 @@
             outputStream,
             defaultOpts,
             new LocalFilesArtifactUploader(),
-            artifactGroupNamer,
-            BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE);
+            artifactGroupNamer);
 
     transport.sendBuildEvent(buildEvent);
     Future<Void> closeFuture = transport.close();
@@ -276,12 +267,7 @@
     BufferedOutputStream outputStream =
         new BufferedOutputStream(Files.newOutputStream(Paths.get(output.getAbsolutePath())));
     BinaryFormatFileTransport transport =
-        new BinaryFormatFileTransport(
-            outputStream,
-            defaultOpts,
-            uploader,
-            artifactGroupNamer,
-            BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE);
+        new BinaryFormatFileTransport(outputStream, defaultOpts, uploader, artifactGroupNamer);
     transport.sendBuildEvent(event1);
     transport.sendBuildEvent(event2);
     transport.close().get();
@@ -321,12 +307,7 @@
     BufferedOutputStream outputStream =
         new BufferedOutputStream(Files.newOutputStream(Paths.get(output.getAbsolutePath())));
     BinaryFormatFileTransport transport =
-        new BinaryFormatFileTransport(
-            outputStream,
-            defaultOpts,
-            uploader,
-            artifactGroupNamer,
-            BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE);
+        new BinaryFormatFileTransport(outputStream, defaultOpts, uploader, artifactGroupNamer);
     transport.sendBuildEvent(event1);
     transport.close().get();
 
@@ -364,12 +345,7 @@
     BufferedOutputStream outputStream =
         new BufferedOutputStream(Files.newOutputStream(Paths.get(output.getAbsolutePath())));
     BinaryFormatFileTransport transport =
-        new BinaryFormatFileTransport(
-            outputStream,
-            defaultOpts,
-            uploader,
-            artifactGroupNamer,
-            BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE);
+        new BinaryFormatFileTransport(outputStream, defaultOpts, uploader, artifactGroupNamer);
     transport.sendBuildEvent(event);
     ListenableFuture<Void> closeFuture = transport.close();
 
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java
index 3217f89..fe9dd01 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java
@@ -18,7 +18,6 @@
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.mockito.Mockito.when;
 
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
 import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
 import com.google.devtools.build.lib.buildeventstream.BuildEvent;
 import com.google.devtools.build.lib.buildeventstream.BuildEventProtocolOptions;
@@ -91,8 +90,7 @@
             defaultOpts,
             new LocalFilesArtifactUploader(),
             artifactGroupNamer,
-            SPAWN_EXEC_TYPE_REGISTRY,
-            BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE);
+            SPAWN_EXEC_TYPE_REGISTRY);
   }
 
   @Test
@@ -173,8 +171,7 @@
             defaultOpts,
             new LocalFilesArtifactUploader(),
             artifactGroupNamer,
-            SPAWN_EXEC_TYPE_REGISTRY,
-            BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE);
+            SPAWN_EXEC_TYPE_REGISTRY);
 
     BuildEventStreamProtos.BuildEvent started =
         BuildEventStreamProtos.BuildEvent.newBuilder()
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/TextFormatFileTransportTest.java b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/TextFormatFileTransportTest.java
index 146076f..a307a12 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/TextFormatFileTransportTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/TextFormatFileTransportTest.java
@@ -19,7 +19,6 @@
 
 import com.google.common.base.Joiner;
 import com.google.common.io.Files;
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
 import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
 import com.google.devtools.build.lib.buildeventstream.BuildEvent;
 import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
@@ -89,8 +88,7 @@
             outputStream,
             defaultOpts,
             new LocalFilesArtifactUploader(),
-            artifactGroupNamer,
-            BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE);
+            artifactGroupNamer);
     transport.sendBuildEvent(buildEvent);
 
     BuildEventStreamProtos.BuildEvent progress =
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BUILD b/src/test/java/com/google/devtools/build/lib/runtime/BUILD
index fd00301..cff0cf3 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BUILD
@@ -51,7 +51,6 @@
         "//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader",
         "//src/main/java/com/google/devtools/build/lib/bazel/rules",
         "//src/main/java/com/google/devtools/build/lib/bugreport",
-        "//src/main/java/com/google/devtools/build/lib/buildeventservice:buildeventservice-options",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream/transports",
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
index 648d789..d224ac5 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
@@ -45,7 +45,6 @@
 import com.google.devtools.build.lib.analysis.config.FragmentFactory;
 import com.google.devtools.build.lib.analysis.config.FragmentRegistry;
 import com.google.devtools.build.lib.bugreport.BugReport;
-import com.google.devtools.build.lib.buildeventservice.BuildEventServiceOptions.BesUploadMode;
 import com.google.devtools.build.lib.buildeventstream.AnnounceBuildEventTransportsEvent;
 import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
 import com.google.devtools.build.lib.buildeventstream.BuildEvent;
@@ -174,11 +173,6 @@
     }
 
     @Override
-    public BesUploadMode getBesUploadMode() {
-      return BesUploadMode.WAIT_FOR_UPLOAD_COMPLETE;
-    }
-
-    @Override
     public synchronized void sendBuildEvent(BuildEvent event) {
       events.add(event);
       try {