aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar felly <felly@google.com>2018-06-11 10:20:28 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-11 10:22:34 -0700
commit8df3747348989b82d7e360dc202da2fcbcd4f8cb (patch)
treefbad7c2bf59b5650b181a4a3c7737cb6ebef6129
parent15b8c259db111012b4642287172cb4d1d82151f3 (diff)
Consolidate filesystem metadata operations in ActionFS by extending AbstractFileSystemWithCustomStat.
RELNOTES: None PiperOrigin-RevId: 200071031
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ActionFileSystem.java37
1 files changed, 7 insertions, 30 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionFileSystem.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionFileSystem.java
index 6fe598d282..757c310697 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionFileSystem.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionFileSystem.java
@@ -36,6 +36,7 @@ import com.google.devtools.build.lib.actions.MetadataProvider;
import com.google.devtools.build.lib.profiler.Profiler;
import com.google.devtools.build.lib.profiler.ProfilerTask;
import com.google.devtools.build.lib.profiler.SilentCloseable;
+import com.google.devtools.build.lib.vfs.AbstractFileSystemWithCustomStat;
import com.google.devtools.build.lib.vfs.FileStatus;
import com.google.devtools.build.lib.vfs.FileSystem;
import com.google.devtools.build.lib.vfs.Path;
@@ -51,7 +52,6 @@ import java.io.InterruptedIOException;
import java.io.OutputStream;
import java.util.Collection;
import java.util.HashMap;
-import java.util.logging.Logger;
import javax.annotation.Nullable;
/**
@@ -65,9 +65,9 @@ import javax.annotation.Nullable;
* access {@link env}, they must also used synchronized access.
* </ul>
*/
-final class ActionFileSystem extends FileSystem implements MetadataProvider, InjectionListener {
- private static final Logger LOGGER = Logger.getLogger(ActionFileSystem.class.getName());
- public static final BaseEncoding LOWER_CASE_HEX = BaseEncoding.base16().lowerCase();
+final class ActionFileSystem extends AbstractFileSystemWithCustomStat
+ implements MetadataProvider, InjectionListener {
+ private static final BaseEncoding LOWER_CASE_HEX = BaseEncoding.base16().lowerCase();
/** Actual underlying filesystem. */
private final FileSystem delegate;
@@ -214,11 +214,14 @@ final class ActionFileSystem extends FileSystem implements MetadataProvider, Inj
@Override
public boolean isDirectory() {
+ // TODO(felly): Support directory awareness.
return false;
}
@Override
public boolean isSymbolicLink() {
+ // TODO(felly): We should have minimal support for symlink awareness when looking at
+ // output --> src and src --> src symlinks.
return false;
}
@@ -306,37 +309,11 @@ final class ActionFileSystem extends FileSystem implements MetadataProvider, Inj
}
@Override
- protected boolean isSymbolicLink(Path path) {
- // TODO(felly): We should have minimal support for symlink awareness when looking at
- // output --> src and src --> src symlinks.
- return false;
- }
-
- @Override
- protected boolean isDirectory(Path path, boolean followSymlinks) {
- // TODO(felly): Support directory awareness.
- return true;
- }
-
- @Override
protected Collection<String> getDirectoryEntries(Path path) throws IOException {
// TODO(felly): Support directory traversal.
return ImmutableList.of();
}
- @Override
- protected boolean isFile(Path path, boolean followSymlinks) {
- // TODO(felly): Unify is* methods with the stat() operation.
- FileArtifactValue metadata = getMetadataUnchecked(path);
- return metadata == null ? false : metadata.getType() == FileStateType.REGULAR_FILE;
- }
-
- @Override
- protected boolean isSpecialFile(Path path, boolean followSymlinks) {
- FileArtifactValue metadata = getMetadataUnchecked(path);
- return metadata == null ? false : metadata.getType() == FileStateType.SPECIAL_FILE;
- }
-
private static String createSymbolicLinkErrorMessage(
Path linkPath, PathFragment targetFragment, String message) {
return "createSymbolicLink(" + linkPath + ", " + targetFragment + "): " + message;