aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java
diff options
context:
space:
mode:
authorGravatar ulfjack <ulfjack@google.com>2017-08-11 23:19:48 +0200
committerGravatar Irina Iancu <elenairina@google.com>2017-08-14 14:16:00 +0200
commit9274cba2540d1d1c7824147f1d999ac785eeed85 (patch)
tree8b7a6bf0409162ffbc1999bff8f2aa932ab23fae /src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java
parent95f7fba8394644623d121fc6765356d46dbd043b (diff)
Introduce a new SpawnCache API; add a RemoteSpawnCache implementation
AbstractSpawnRunner now uses a SpawnCache if one is registered, this allows adding caching to any spawn runner without having to be aware of the implementations. I will delete the old CachedLocalSpawnRunner in a follow-up CL. PiperOrigin-RevId: 165024382
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java
index 8424fca0c2..826de367c8 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java
@@ -37,8 +37,6 @@ final class RemoteActionContextProvider extends ActionContextProvider {
private final RemoteActionCache cache;
private final GrpcRemoteExecutor executor;
- private RemoteSpawnRunner spawnRunner;
-
RemoteActionContextProvider(CommandEnvironment env, @Nullable RemoteActionCache cache,
@Nullable GrpcRemoteExecutor executor) {
this.env = env;
@@ -52,14 +50,19 @@ final class RemoteActionContextProvider extends ActionContextProvider {
checkNotNull(env.getOptions().getOptions(ExecutionOptions.class));
RemoteOptions remoteOptions = checkNotNull(env.getOptions().getOptions(RemoteOptions.class));
- spawnRunner = new RemoteSpawnRunner(
- env.getExecRoot(),
- remoteOptions,
- createFallbackRunner(env),
- executionOptions.verboseFailures,
- cache,
- executor);
- return ImmutableList.of(new RemoteSpawnStrategy(spawnRunner));
+ if (remoteOptions.experimentalRemoteSpawnCache) {
+ RemoteSpawnCache spawnCache = new RemoteSpawnCache(env.getExecRoot(), remoteOptions, cache);
+ return ImmutableList.of(spawnCache);
+ } else {
+ RemoteSpawnRunner spawnRunner = new RemoteSpawnRunner(
+ env.getExecRoot(),
+ remoteOptions,
+ createFallbackRunner(env),
+ executionOptions.verboseFailures,
+ cache,
+ executor);
+ return ImmutableList.of(new RemoteSpawnStrategy(spawnRunner));
+ }
}
private static SpawnRunner createFallbackRunner(CommandEnvironment env) {
@@ -79,9 +82,8 @@ final class RemoteActionContextProvider extends ActionContextProvider {
@Override
public void executionPhaseEnding() {
- if (spawnRunner != null) {
- spawnRunner.close();
+ if (cache != null) {
+ cache.close();
}
- spawnRunner = null;
}
}