Get desktop application:
View/edit binary Protocol Buffers messages
Metrics contains all the timing metrics about a Node.
Used in:
The time when the node started, as milliseconds from the Unix epoch.
How long did this node last. This should be the sum of all the parts below, but is included separately to identify issues when that's not true.
Total time spent on failed attempts.
Mapping from error code to the time spent on attempts that failed with that error.
Time spent where we don't have more detailed information. This should be just duration_millis minus all the other parts, but it is kept separately to identify bugs in the code that produces the timing info.
Node is one entry in the executed graph.
All nodes should have a description so human debuggers could see what was going on in this step. This should be ActionAnalysisMetadata.prettyPrint().
The index is a unique (within a single build) but arbitrary identifier for this node. The same node will likely have different indexes across builds. For performance reasons, the set of all indexes in a build should be dense.
The target name. The field is not set if a spawn or action is shared between multiple targets or if it doesn't belong to any target. Note that a target can trigger several spawns, that can run in parallel or in sequence.
The spawn or action mnemonic. For example, Javac, GoLink, TestRunner, etc.
The rule class for the above target. Examples: java_test, cc_library, etc.
A list of node indexes corresponding to direct dependencies of this node.
The name of the spawn runner that ran the spawn, if applicable.
Details about the runner.
A node index that this is a retry of. For example, the second attempt of a flaky test would point to the first attempt, and the third attempt would point to the second.