Propagate javac_supports_workers_cancellation bit through the toolchain to make java workers support cancellation. RELNOTES: None. PiperOrigin-RevId: 389929033
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java index 5337b06..f0e1407 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
@@ -360,6 +360,9 @@ if (javaToolchain.getJavacSupportsMultiplexWorkers()) { workerInfo.put(ExecutionRequirements.SUPPORTS_MULTIPLEX_WORKERS, "1"); } + if (javaToolchain.getJavacSupportsWorkerCancellation()) { + workerInfo.put(ExecutionRequirements.SUPPORTS_WORKER_CANCELLATION, "1"); + } executionInfo.putAll( getConfiguration() .modifiedExecutionInfo(workerInfo.build(), JavaCompileActionBuilder.MNEMONIC));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java index bf53a09..675dded 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java
@@ -63,6 +63,8 @@ ruleContext.attributes().get("javac_supports_workers", Type.BOOLEAN); boolean javacSupportsMultiplexWorkers = ruleContext.attributes().get("javac_supports_multiplex_workers", Type.BOOLEAN); + boolean javacSupportsWorkerCancellation = + ruleContext.attributes().get("javac_supports_worker_cancellation", Type.BOOLEAN); ImmutableSet<String> headerCompilerBuiltinProcessors = ImmutableSet.copyOf( ruleContext.attributes().get("header_compiler_builtin_processors", Type.STRING_LIST)); @@ -156,6 +158,7 @@ jvmOpts, javacSupportsWorkers, javacSupportsMultiplexWorkers, + javacSupportsWorkerCancellation, bootclasspath, tools, javabuilder,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java index eb1435f..8fe0b14 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java
@@ -98,6 +98,7 @@ NestedSet<String> jvmOptions, boolean javacSupportsWorkers, boolean javacSupportsMultiplexWorkers, + boolean javacSupportsWorkerCancellation, BootClassPathInfo bootclasspath, NestedSet<Artifact> tools, JavaToolchainTool javaBuilder, @@ -145,6 +146,7 @@ jvmOptions, javacSupportsWorkers, javacSupportsMultiplexWorkers, + javacSupportsWorkerCancellation, packageConfiguration, jacocoRunner, proguardAllowlister, @@ -175,6 +177,7 @@ private final NestedSet<String> jvmOptions; private final boolean javacSupportsWorkers; private final boolean javacSupportsMultiplexWorkers; + private final boolean javacSupportsWorkerCancellation; private final ImmutableList<JavaPackageConfigurationProvider> packageConfiguration; private final FilesToRunProvider jacocoRunner; private final FilesToRunProvider proguardAllowlister; @@ -206,6 +209,7 @@ NestedSet<String> jvmOptions, boolean javacSupportsWorkers, boolean javacSupportsMultiplexWorkers, + boolean javacSupportsWorkerCancellation, ImmutableList<JavaPackageConfigurationProvider> packageConfiguration, FilesToRunProvider jacocoRunner, FilesToRunProvider proguardAllowlister, @@ -235,6 +239,7 @@ this.jvmOptions = jvmOptions; this.javacSupportsWorkers = javacSupportsWorkers; this.javacSupportsMultiplexWorkers = javacSupportsMultiplexWorkers; + this.javacSupportsWorkerCancellation = javacSupportsWorkerCancellation; this.packageConfiguration = packageConfiguration; this.jacocoRunner = jacocoRunner; this.proguardAllowlister = proguardAllowlister; @@ -396,6 +401,11 @@ return javacSupportsMultiplexWorkers; } + /** Returns whether JavaBuilders supports running persistent workers with cancellation */ + public boolean getJavacSupportsWorkerCancellation() { + return javacSupportsWorkerCancellation; + } + /** Returns the global {@code java_plugin_configuration} data. */ public ImmutableList<JavaPackageConfigurationProvider> packageConfiguration() { return packageConfiguration;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java index 8ce70a3..0e3f1aa 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java
@@ -125,6 +125,10 @@ True if JavaBuilder supports running as a multiplex persistent worker, false if it doesn't. <!-- #END_BLAZE_RULE.ATTRIBUTE --> */ .add(attr("javac_supports_multiplex_workers", BOOLEAN).value(true)) + /* <!-- #BLAZE_RULE(java_toolchain).ATTRIBUTE(javac_supports_workers_cancellation) --> + True if JavaBuilder supports cancellation of persistent workers, false if it doesn't. + <!-- #END_BLAZE_RULE.ATTRIBUTE --> */ + .add(attr("javac_supports_worker_cancellation", BOOLEAN).value(false)) /* <!-- #BLAZE_RULE(java_toolchain).ATTRIBUTE(tools) --> Labels of tools available for label-expansion in jvm_opts. <!-- #END_BLAZE_RULE.ATTRIBUTE --> */