aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/cache/ActionCache.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCache.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/cache/PersistentStringIndexer.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java3
5 files changed, 21 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/cache/ActionCache.java b/src/main/java/com/google/devtools/build/lib/actions/cache/ActionCache.java
index 1e123e5f93..59eb31ff09 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/cache/ActionCache.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/cache/ActionCache.java
@@ -187,6 +187,9 @@ public interface ActionCache {
*/
long save() throws IOException;
+ /** Clear the action cache, closing all opened file handle. */
+ void clear();
+
/**
* Dumps action cache content into the given PrintStream.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCache.java b/src/main/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCache.java
index 1dee81126b..95a986053e 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCache.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCache.java
@@ -293,6 +293,12 @@ public class CompactPersistentActionCache implements ActionCache {
}
@Override
+ public void clear() {
+ indexer.clear();
+ map.clear();
+ }
+
+ @Override
public synchronized String toString() {
StringBuilder builder = new StringBuilder();
// map.size() - 1 to avoid counting the validation key.
diff --git a/src/main/java/com/google/devtools/build/lib/actions/cache/PersistentStringIndexer.java b/src/main/java/com/google/devtools/build/lib/actions/cache/PersistentStringIndexer.java
index bf8d4384fd..28970bfca3 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/cache/PersistentStringIndexer.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/cache/PersistentStringIndexer.java
@@ -77,11 +77,6 @@ final class PersistentStringIndexer extends CanonicalStringIndexer {
throw new UnsupportedOperationException();
}
- @Override
- public void clear() {
- throw new UnsupportedOperationException();
- }
-
public void flush() {
super.forceFlush();
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java
index 1f54096a38..d5b05da5e9 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java
@@ -208,10 +208,19 @@ public final class BlazeWorkspace {
}
/**
+ * Reinitializes the Skyframe evaluator.
+ */
+ public void resetEvaluator() throws IOException {
+ skyframeExecutor.resetEvaluator();
+ }
+
+ /**
* Removes in-memory caches.
*/
public void clearCaches() throws IOException {
- skyframeExecutor.resetEvaluator();
+ if (actionCache != null) {
+ actionCache.clear();
+ }
actionCache = null;
FileSystemUtils.deleteTree(getCacheDirectory());
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java
index 352c19635e..ef107885dd 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java
@@ -227,6 +227,7 @@ public final class CleanCommand implements BlazeCommand {
if (env.getOutputService() != null) {
env.getOutputService().clean();
}
+ env.getBlazeWorkspace().clearCaches();
if (expunge) {
LOG.info("Expunging...");
env.getRuntime().prepareForAbruptShutdown();
@@ -255,7 +256,7 @@ public final class CleanCommand implements BlazeCommand {
asyncClean(env, outputBase, "Output base");
} else {
LOG.info("Output cleaning...");
- env.getBlazeWorkspace().clearCaches();
+ env.getBlazeWorkspace().resetEvaluator();
// In order to be sure that we delete everything, delete the workspace directory both for
// --deep_execroot and for --nodeep_execroot.
for (String directory : new String[] {workspaceDirectory, "execroot"}) {