Skip to content

Commit

Permalink
Remove aquery v1 code
Browse files Browse the repository at this point in the history
This CL removes the code path of Aquery v1.

RELNOTES: None
PiperOrigin-RevId: 346731944
  • Loading branch information
joeleba authored and copybara-github committed Dec 10, 2020
1 parent 72ce2f6 commit 80ead8f
Show file tree
Hide file tree
Showing 8 changed files with 86 additions and 302 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.query2.PostAnalysisQueryEnvironment;
import com.google.devtools.build.lib.query2.PostAnalysisQueryEnvironment.TopLevelConfigurations;
import com.google.devtools.build.lib.query2.aquery.ActionGraphProtoV2OutputFormatterCallback;
import com.google.devtools.build.lib.query2.aquery.ActionGraphProtoOutputFormatterCallback;
import com.google.devtools.build.lib.query2.aquery.ActionGraphQueryEnvironment;
import com.google.devtools.build.lib.query2.aquery.AqueryActionFilter;
import com.google.devtools.build.lib.query2.aquery.AqueryOptions;
Expand All @@ -45,7 +45,6 @@
import com.google.devtools.build.lib.skyframe.actiongraph.v2.InvalidAqueryOutputFormatException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.WalkableGraph;
import com.google.protobuf.TextFormat;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Collection;
Expand Down Expand Up @@ -75,52 +74,25 @@ public BlazeCommandResult dumpActionGraphFromSkyframe(BuildRequest request) {
? null
: new PrintStream(queryRuntimeHelper.getOutputStreamForQueryOutput());

if (aqueryOptions.protoV2) {
try (AqueryOutputHandler aqueryOutputHandler =
ActionGraphProtoV2OutputFormatterCallback.constructAqueryOutputHandler(
OutputType.fromString(aqueryOptions.outputFormat),
queryRuntimeHelper.getOutputStreamForQueryOutput(),
printStream)) {
ActionGraphDump actionGraphDump =
new ActionGraphDump(
aqueryOptions.includeCommandline,
aqueryOptions.includeArtifacts,
actionFilters,
aqueryOptions.includeParamFiles,
aqueryOutputHandler);
((SequencedSkyframeExecutor) env.getSkyframeExecutor())
.dumpSkyframeState(actionGraphDump);
} catch (InvalidAqueryOutputFormatException e) {
String message =
"--skyframe_state must be used with --output=proto|textproto|jsonproto. "
+ e.getMessage();
env.getReporter().handle(Event.error(message));
return getFailureResult(message, Code.SKYFRAME_STATE_PREREQ_UNMET);
}
} else {
// TODO(b/154500246) Remove this code path.
ActionGraphContainer actionGraphContainer =
((SequencedSkyframeExecutor) env.getSkyframeExecutor())
.getActionGraphContainer(
aqueryOptions.includeCommandline,
actionFilters,
aqueryOptions.includeParamFiles,
aqueryOptions.includeArtifacts);

// Write the data.
if (OutputType.BINARY.formatName().equals(aqueryOptions.outputFormat)) {
actionGraphContainer.writeTo(printStream);
} else if (OutputType.TEXT.formatName().equals(aqueryOptions.outputFormat)) {
TextFormat.printer().print(actionGraphContainer, printStream);
} else {
String message =
String.format(
"Unsupported output format %s: --skyframe_state must be used with --output=proto"
+ " or --output=textproto.",
aqueryOptions.outputFormat);
env.getReporter().handle(Event.error(message));
return getFailureResult(message, Code.SKYFRAME_STATE_PREREQ_UNMET);
}
try (AqueryOutputHandler aqueryOutputHandler =
ActionGraphProtoOutputFormatterCallback.constructAqueryOutputHandler(
OutputType.fromString(aqueryOptions.outputFormat),
queryRuntimeHelper.getOutputStreamForQueryOutput(),
printStream)) {
ActionGraphDump actionGraphDump =
new ActionGraphDump(
aqueryOptions.includeCommandline,
aqueryOptions.includeArtifacts,
actionFilters,
aqueryOptions.includeParamFiles,
aqueryOutputHandler);
((SequencedSkyframeExecutor) env.getSkyframeExecutor()).dumpSkyframeState(actionGraphDump);
} catch (InvalidAqueryOutputFormatException e) {
String message =
"--skyframe_state must be used with --output=proto|textproto|jsonproto. "
+ e.getMessage();
env.getReporter().handle(Event.error(message));
return getFailureResult(message, Code.SKYFRAME_STATE_PREREQ_UNMET);
}
return BlazeCommandResult.success();
} catch (CommandLineExpansionException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
import com.google.devtools.build.lib.profiler.ProfilePhase;
import com.google.devtools.build.lib.profiler.Profiler;
import com.google.devtools.build.lib.profiler.SilentCloseable;
import com.google.devtools.build.lib.query2.aquery.ActionGraphProtoV2OutputFormatterCallback;
import com.google.devtools.build.lib.query2.aquery.ActionGraphProtoOutputFormatterCallback;
import com.google.devtools.build.lib.runtime.BlazeRuntime;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.server.FailureDetails.ActionQuery;
Expand Down Expand Up @@ -331,7 +331,7 @@ private void dumpSkyframeStateAfterBuild(
try (OutputStream outputStream = initOutputStream(streamingContext, localOutputFilePath);
PrintStream printStream = new PrintStream(outputStream);
AqueryOutputHandler aqueryOutputHandler =
ActionGraphProtoV2OutputFormatterCallback.constructAqueryOutputHandler(
ActionGraphProtoOutputFormatterCallback.constructAqueryOutputHandler(
OutputType.fromString(format), outputStream, printStream)) {
// These options are fixed for simplicity. We'll add more configurability if the need arises.
ActionGraphDump actionGraphDump =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,46 +13,36 @@
// limitations under the License.
package com.google.devtools.build.lib.query2.aquery;

import com.google.common.annotations.VisibleForTesting;
import com.google.devtools.build.lib.actions.CommandLineExpansionException;
import com.google.devtools.build.lib.analysis.AnalysisProtos;
import com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer;
import com.google.devtools.build.lib.analysis.AspectValue;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.query2.engine.QueryEnvironment.TargetAccessor;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetValue;
import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
import com.google.devtools.build.lib.skyframe.actiongraph.ActionGraphDump;
import com.google.protobuf.TextFormat;
import com.google.protobuf.util.JsonFormat;
import com.google.devtools.build.lib.skyframe.actiongraph.v2.ActionGraphDump;
import com.google.devtools.build.lib.skyframe.actiongraph.v2.AqueryOutputHandler;
import com.google.devtools.build.lib.skyframe.actiongraph.v2.AqueryOutputHandler.OutputType;
import com.google.devtools.build.lib.skyframe.actiongraph.v2.MonolithicOutputHandler;
import com.google.devtools.build.lib.skyframe.actiongraph.v2.StreamedOutputHandler;
import com.google.protobuf.CodedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;

/** Default output callback for aquery, prints proto output. */
public class ActionGraphProtoOutputFormatterCallback extends AqueryThreadsafeCallback {

/** Defines the types of proto output this class can handle. */
public enum OutputType {
BINARY("proto"),
TEXT("textproto"),
JSON("jsonproto");

private final String formatName;

OutputType(String formatName) {
this.formatName = formatName;
}

public String formatName() {
return formatName;
}
}

private final OutputType outputType;
private final ActionGraphDump actionGraphDump;
private final AqueryActionFilter actionFilters;
private final JsonFormat.Printer jsonPrinter = JsonFormat.printer();
private final AqueryOutputHandler aqueryOutputHandler;

/**
* Pseudo-arbitrarily chosen buffer size for output. Chosen to be large enough to fit a handful of
* messages without needing to flush to the underlying output, which may not be buffered.
*/
private static final int OUTPUT_BUFFER_SIZE = 16384;

ActionGraphProtoOutputFormatterCallback(
ExtendedEventHandler eventHandler,
Expand All @@ -65,12 +55,28 @@ public String formatName() {
super(eventHandler, options, out, skyframeExecutor, accessor);
this.outputType = outputType;
this.actionFilters = actionFilters;
this.aqueryOutputHandler = constructAqueryOutputHandler(outputType, out, printStream);
this.actionGraphDump =
new ActionGraphDump(
options.includeCommandline,
options.includeArtifacts,
this.actionFilters,
options.includeParamFiles);
options.includeParamFiles,
aqueryOutputHandler);
}

public static AqueryOutputHandler constructAqueryOutputHandler(
OutputType outputType, OutputStream out, PrintStream printStream) {
switch (outputType) {
case BINARY:
case TEXT:
return new StreamedOutputHandler(
outputType, CodedOutputStream.newInstance(out, OUTPUT_BUFFER_SIZE), printStream);
case JSON:
return new MonolithicOutputHandler(printStream);
}
// The above cases are exhaustive.
throw new AssertionError("Wrong output type: " + outputType);
}

@Override
Expand Down Expand Up @@ -102,29 +108,8 @@ public void processOutput(Iterable<ConfiguredTargetValue> partialResult)

@Override
public void close(boolean failFast) throws IOException {
if (!failFast && printStream != null) {
ActionGraphContainer actionGraphContainer = actionGraphDump.build();

// Write the data.
switch (outputType) {
case BINARY:
actionGraphContainer.writeTo(printStream);
break;
case TEXT:
TextFormat.print(actionGraphContainer, printStream);
break;
case JSON:
jsonPrinter.appendTo(actionGraphContainer, printStream);
printStream.println();
break;
default:
throw new IllegalStateException("Unknown outputType " + outputType.formatName());
}
if (!failFast) {
aqueryOutputHandler.close();
}
}

@VisibleForTesting
public AnalysisProtos.ActionGraphContainer getProtoResult() {
return actionGraphDump.build();
}
}

This file was deleted.

Loading

0 comments on commit 80ead8f

Please sign in to comment.