Skip to content

Commit 7632928

Browse files
comiusWyverald
authored andcommitted
Remove merging of java_outputs in JavaPluginInfo.
JavaPluginInfo merging of java_outputs caused a significant regression when a large number of plugins is present. This value is not used by native code and it does not get exposed to Starlark. The only use case for java_outputs is IDE integrations, where the value is used from a single java_plugin target. Fixes bazelbuild#14287 Closes bazelbuild#14288. PiperOrigin-RevId: 410502716
1 parent 6c4b16e commit 7632928

File tree

6 files changed

+12
-12
lines changed

6 files changed

+12
-12
lines changed

src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,7 @@ private JavaPluginInfo collectPlugins() {
787787
Iterables.addAll(result, getDirectJavaPluginInfoForAttribute(ruleContext, ":java_plugins"));
788788
Iterables.addAll(result, getDirectJavaPluginInfoForAttribute(ruleContext, "plugins"));
789789
Iterables.addAll(result, getExportedJavaPluginInfoForAttribute(ruleContext, "deps"));
790-
return JavaPluginInfo.merge(result);
790+
return JavaPluginInfo.mergeWithoutJavaOutputs(result);
791791
}
792792

793793
private static Iterable<JavaPluginInfo> getDirectJavaPluginInfoForAttribute(
@@ -841,7 +841,7 @@ private static ImmutableSet<String> getProcessorClasses(RuleContext ruleContext)
841841
}
842842

843843
public static JavaPluginInfo getTransitivePlugins(RuleContext ruleContext) {
844-
return JavaPluginInfo.merge(
844+
return JavaPluginInfo.mergeWithoutJavaOutputs(
845845
Iterables.concat(
846846
getDirectJavaPluginInfoForAttribute(ruleContext, "exported_plugins"),
847847
getExportedJavaPluginInfoForAttribute(ruleContext, "exports")));

src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public static JavaInfo merge(List<JavaInfo> providers, boolean withExportsProvid
159159
.addProvider(
160160
JavaRuleOutputJarsProvider.class,
161161
JavaRuleOutputJarsProvider.merge(javaRuleOutputJarsProviders))
162-
.javaPluginInfo(JavaPluginInfo.merge(javaPluginInfos))
162+
.javaPluginInfo(JavaPluginInfo.mergeWithoutJavaOutputs(javaPluginInfos))
163163
.addProvider(JavaCcInfoProvider.class, JavaCcInfoProvider.merge(javaCcInfoProviders))
164164
// TODO(b/65618333): add merge function to JavaGenJarsProvider. See #3769
165165
// TODO(iirina): merge or remove JavaCompilationInfoProvider

src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ private JavaExportsProvider createJavaExportsProvider(Iterable<JavaInfo> exports
235235

236236
private JavaPluginInfo mergeExportedJavaPluginInfo(
237237
Iterable<JavaPluginInfo> plugins, Iterable<JavaInfo> javaInfos) {
238-
return JavaPluginInfo.merge(
238+
return JavaPluginInfo.mergeWithoutJavaOutputs(
239239
concat(
240240
plugins,
241241
stream(javaInfos)

src/main/java/com/google/devtools/build/lib/rules/java/JavaPluginInfo.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -162,21 +162,21 @@ private JavaPluginData disableAnnotationProcessing() {
162162
}
163163
}
164164

165-
public static JavaPluginInfo merge(JavaPluginInfo a, JavaPluginInfo b) {
166-
return a.isEmpty() ? b : b.isEmpty() ? a : merge(ImmutableList.of(a, b));
165+
public static JavaPluginInfo mergeWithoutJavaOutputs(JavaPluginInfo a, JavaPluginInfo b) {
166+
return a.isEmpty() ? b : b.isEmpty() ? a : mergeWithoutJavaOutputs(ImmutableList.of(a, b));
167167
}
168168

169-
public static JavaPluginInfo merge(Iterable<JavaPluginInfo> providers) {
169+
public static JavaPluginInfo mergeWithoutJavaOutputs(Iterable<JavaPluginInfo> providers) {
170170
List<JavaPluginData> plugins = new ArrayList<>();
171171
List<JavaPluginData> apiGeneratingPlugins = new ArrayList<>();
172-
ImmutableList.Builder<JavaOutput> outputs = ImmutableList.builder();
173172
for (JavaPluginInfo provider : providers) {
174173
plugins.add(provider.plugins());
175174
apiGeneratingPlugins.add(provider.apiGeneratingPlugins());
176-
outputs.addAll(provider.getJavaOutputs());
177175
}
178176
return new AutoValue_JavaPluginInfo(
179-
outputs.build(), JavaPluginData.merge(plugins), JavaPluginData.merge(apiGeneratingPlugins));
177+
ImmutableList.of(),
178+
JavaPluginData.merge(plugins),
179+
JavaPluginData.merge(apiGeneratingPlugins));
180180
}
181181

182182
public static JavaPluginInfo create(

src/main/java/com/google/devtools/build/lib/rules/java/JavaPluginsFlagAliasRule.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public ConfiguredTarget create(RuleContext ruleContext)
7676
}
7777

7878
JavaPluginInfo javaPluginInfo =
79-
JavaPluginInfo.merge(
79+
JavaPluginInfo.mergeWithoutJavaOutputs(
8080
ruleContext.getPrerequisites(":java_plugins", JavaPluginInfo.PROVIDER));
8181

8282
return new RuleConfiguredTargetBuilder(ruleContext)

src/main/java/com/google/devtools/build/lib/rules/java/JavaTargetAttributes.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ public Builder addResourceJars(NestedSet<Artifact> resourceJars) {
298298

299299
public Builder addPlugin(JavaPluginInfo plugins) {
300300
Preconditions.checkArgument(!built);
301-
this.plugins = JavaPluginInfo.merge(this.plugins, plugins);
301+
this.plugins = JavaPluginInfo.mergeWithoutJavaOutputs(this.plugins, plugins);
302302
return this;
303303
}
304304

0 commit comments

Comments
 (0)