diff options
author | 2018-05-16 13:22:35 -0700 | |
---|---|---|
committer | 2018-05-16 13:23:50 -0700 | |
commit | c223cb8d73d915693cfa021cc9dbc56c4ef94a21 (patch) | |
tree | 4aa265e7580466dd9f39b8a5cb1d80d69e700cf0 /src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java | |
parent | 6f1a2ecbc05a3d8f7864de8ab085e6c6ec5b9f1a (diff) |
remote/exec: always mark files executable.
The main motivation for this change is to act as a workaround for #4751. Additionally,
this reduces the number of stat() system calls significantly e.g. by 50% when building Bazel
(600K vs 1.2M).
cc: @werkt @ola-rozenfeld
Closes #5204.
PiperOrigin-RevId: 196878093
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java b/src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java index 5012cb74d5..8cbc6191b4 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java +++ b/src/main/java/com/google/devtools/build/lib/remote/TreeNodeRepository.java @@ -362,23 +362,18 @@ public final class TreeNodeRepository { TreeNode child = entry.getChild(); if (child.isLeaf()) { ActionInput input = child.getActionInput(); + final Digest digest; if (input instanceof VirtualActionInput) { VirtualActionInput virtualInput = (VirtualActionInput) input; - Digest digest = digestUtil.compute(virtualInput); + digest = digestUtil.compute(virtualInput); virtualInputDigestCache.put(virtualInput, digest); // There may be multiple inputs with the same digest. In that case, we don't care which // one we get back from the digestVirtualInputCache later. digestVirtualInputCache.put(digest, virtualInput); - b.addFilesBuilder() - .setName(entry.getSegment()) - .setDigest(digest) - .setIsExecutable(false); } else { - b.addFilesBuilder() - .setName(entry.getSegment()) - .setDigest(DigestUtil.getFromInputCache(input, inputFileCache)) - .setIsExecutable(execRoot.getRelative(input.getExecPathString()).isExecutable()); + digest = DigestUtil.getFromInputCache(input, inputFileCache); } + b.addFilesBuilder().setName(entry.getSegment()).setDigest(digest).setIsExecutable(true); } else { Digest childDigest = Preconditions.checkNotNull(treeNodeDigestCache.get(child)); if (child.getActionInput() != null) { |