Automated rollback of commit 5fb12454ff1edadec4955099fb372134e752a457.
*** Reason for rollback ***
Breaks execution_phase_tests.
See https://buildkite.com/bazel/bazel-bazel/builds/13269 for an example in postsubmit.
RELNOTES: None
PiperOrigin-RevId: 321109644
diff --git a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
index c38a86d..982afbb 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
@@ -38,7 +38,6 @@
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
import com.google.devtools.build.lib.syntax.Sequence;
-import com.google.devtools.build.lib.vfs.BulkDeleter;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.Root;
import com.google.devtools.build.lib.vfs.Symlinks;
@@ -351,15 +350,8 @@
* directory recursively removes the contents of the directory.
*
* @param execRoot the exec root in which this action is executed
- * @param bulkDeleter a helper to bulk delete outputs to avoid delegating to the filesystem
*/
- protected void deleteOutputs(Path execRoot, @Nullable BulkDeleter bulkDeleter)
- throws IOException, InterruptedException {
- if (bulkDeleter != null) {
- bulkDeleter.bulkDelete(Artifact.asPathFragments(getOutputs()));
- return;
- }
-
+ protected void deleteOutputs(Path execRoot) throws IOException {
for (Artifact output : getOutputs()) {
deleteOutput(output.getPath(), output.getRoot());
}
@@ -457,9 +449,8 @@
}
@Override
- public void prepare(Path execRoot, @Nullable BulkDeleter bulkDeleter)
- throws IOException, InterruptedException {
- deleteOutputs(execRoot, bulkDeleter);
+ public void prepare(Path execRoot) throws IOException {
+ deleteOutputs(execRoot);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Action.java b/src/main/java/com/google/devtools/build/lib/actions/Action.java
index 7cee09c..82eb5c1 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Action.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Action.java
@@ -17,7 +17,6 @@
import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ConditionallyThreadCompatible;
-import com.google.devtools.build.lib.vfs.BulkDeleter;
import com.google.devtools.build.lib.vfs.Path;
import java.io.IOException;
import javax.annotation.Nullable;
@@ -83,10 +82,8 @@
* or the permissions should be changed, so that they can be safely overwritten by the action.
*
* @throws IOException if there is an error deleting the outputs.
- * @throws InterruptedException if the execution is interrupted
*/
- void prepare(Path execRoot, @Nullable BulkDeleter bulkDeleter)
- throws IOException, InterruptedException;
+ void prepare(Path execRoot) throws IOException;
/**
* Executes this action. This method <i>unconditionally does the work of the Action</i>, although
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
index 4314764..df0ad4e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
@@ -60,7 +60,6 @@
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.util.LoggingUtil;
import com.google.devtools.build.lib.util.Pair;
-import com.google.devtools.build.lib.vfs.BulkDeleter;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -478,9 +477,8 @@
* the test log base name with arbitrary prefix and extension.
*/
@Override
- protected void deleteOutputs(Path execRoot, @Nullable BulkDeleter bulkDeleter)
- throws IOException, InterruptedException {
- super.deleteOutputs(execRoot, bulkDeleter);
+ protected void deleteOutputs(Path execRoot) throws IOException {
+ super.deleteOutputs(execRoot);
// We do not rely on globs, as it causes quadratic behavior in --runs_per_test and test
// shard count.
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
index f9ae52f..49a7837 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
@@ -164,6 +164,7 @@
return s.getBytes(StandardCharsets.UTF_8);
}
+ @Override
public void prepare(Path execRoot) throws IOException {
// The default implementation of this method deletes all output files; override it to keep
// the old stableStatus around. This way we can reuse the existing file (preserving its mtime)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkAction.java
index 1966050..46b6a4f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkAction.java
@@ -34,7 +34,6 @@
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.util.DetailedExitCode;
import com.google.devtools.build.lib.util.Fingerprint;
-import com.google.devtools.build.lib.vfs.BulkDeleter;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.Symlinks;
import java.io.IOException;
@@ -65,12 +64,11 @@
}
@Override
- public void prepare(Path execRoot, @Nullable BulkDeleter bulkDeleter)
- throws IOException, InterruptedException {
+ public void prepare(Path execRoot) throws IOException {
if (includePath.isDirectory(Symlinks.NOFOLLOW)) {
includePath.deleteTree();
}
- super.prepare(execRoot, bulkDeleter);
+ super.prepare(execRoot);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index 03029fd..1bfb32f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -633,7 +633,7 @@
// Fall back to running with the full classpath. This requires first deleting potential
// artifacts generated by the reduced action and clearing the metadata caches.
try {
- deleteOutputs(actionExecutionContext.getExecRoot(), /* bulkDeleter= */ null);
+ deleteOutputs(actionExecutionContext.getExecRoot());
} catch (IOException e) {
throw toActionExecutionException(
new EnvironmentalExecException(
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
index 8b127a4..f74cfdd 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
@@ -430,17 +430,12 @@
workingDir = env.getExecRoot();
try {
- testAction.prepare(env.getExecRoot(), /* bulkDeleter= */ null);
+ testAction.prepare(env.getExecRoot());
} catch (IOException e) {
return reportAndCreateFailureResult(
env,
"Error while setting up test: " + e.getMessage(),
Code.TEST_ENVIRONMENT_SETUP_FAILURE);
- } catch (InterruptedException e) {
- return reportAndCreateFailureResult(
- env,
- "Error while setting up test: " + e.getMessage(),
- Code.TEST_ENVIRONMENT_SETUP_INTERRUPTED);
}
try {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
index cb0962c..b60c2ed 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
@@ -930,9 +930,7 @@
// This call generally deletes any files at locations that are declared outputs of the
// action, although some actions perform additional work, while others intentionally
// keep previous outputs in place.
- action.prepare(
- actionExecutionContext.getExecRoot(),
- outputService != null ? outputService.bulkDeleter() : null);
+ action.prepare(actionExecutionContext.getExecRoot());
} catch (IOException e) {
logger.atWarning().withCause(e).log(
"failed to delete output files before executing action: '%s'", action);
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/BulkDeleter.java b/src/main/java/com/google/devtools/build/lib/vfs/BulkDeleter.java
deleted file mode 100644
index 80b06987..0000000
--- a/src/main/java/com/google/devtools/build/lib/vfs/BulkDeleter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2020 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package com.google.devtools.build.lib.vfs;
-
-import java.io.IOException;
-
-/** An interface for deleting outputs in bulk. */
-public interface BulkDeleter {
- /**
- * Bulk delete outputs.
- *
- * @param paths the paths to delete, relative to the exec root.
- * @throws IOException on unexpected failure.
- * @throws InterruptedException on interrupt.
- */
- void bulkDelete(Iterable<PathFragment> paths) throws IOException, InterruptedException;
-}
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java b/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java
index cec1927..70dc472 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java
@@ -208,9 +208,4 @@
throws IOException {
throw new IllegalStateException("Path resolver not supported by this class");
}
-
- @Nullable
- default BulkDeleter bulkDeleter() {
- return null;
- }
}
diff --git a/src/main/protobuf/failure_details.proto b/src/main/protobuf/failure_details.proto
index f940d18..1c513d4 100644
--- a/src/main/protobuf/failure_details.proto
+++ b/src/main/protobuf/failure_details.proto
@@ -864,7 +864,6 @@
SCRIPT_WRITE_FAILURE = 12 [(metadata) = { exit_code: 6 }];
RUNFILES_DIRECTORIES_CREATION_FAILURE = 13 [(metadata) = { exit_code: 36 }];
RUNFILES_SYMLINKS_CREATION_FAILURE = 14 [(metadata) = { exit_code: 36 }];
- TEST_ENVIRONMENT_SETUP_INTERRUPTED = 15 [(metadata) = { exit_code: 8 }];
}
Code code = 1;
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
index baf695b..99639cc 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
@@ -154,7 +154,7 @@
Path extra = rootDirectory.getRelative("out/extra");
FileSystemUtils.createEmptyFile(extra);
assertThat(extra.exists()).isTrue();
- action.prepare(rootDirectory, /*bulkDeleter=*/ null);
+ action.prepare(rootDirectory);
assertThat(extra.exists()).isFalse();
}