Resolve race when an event tries to schedule just after the thread pool was shutdown.

RELNOTES: None
PiperOrigin-RevId: 295174545
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 efef270..7537119 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
@@ -43,6 +43,7 @@
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executors;
 import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
@@ -228,8 +229,13 @@
     if (writer.isClosed.get()) {
       return;
     }
-    if (!writer.pendingWrites.add(asStreamProto(event, namer))) {
-      logger.log(Level.SEVERE, "Failed to add BEP event to the write queue");
+    try {
+      if (!writer.pendingWrites.add(asStreamProto(event, namer))) {
+        logger.log(Level.SEVERE, "Failed to add BEP event to the write queue");
+      }
+    } catch (RejectedExecutionException e) {
+      // If early shutdown races with this event, log but otherwise ignore.
+      logger.log(Level.WARNING, "Event upload started after shutdown");
     }
   }