Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import java.util.Optional;
import java.util.OptionalLong;
import java.util.Set;
import java.util.function.BiFunction;
import java.util.function.BiPredicate;

public class FsDirectoryFactory implements IndexStorePlugin.DirectoryFactory {
Expand Down Expand Up @@ -96,18 +97,11 @@ protected Directory newFSDirectory(Path location, LockFactory lockFactory, Index
}
}

private static Optional<ReadAdvice> overrideReadAdvice(String name, IOContext context) {
if (context.hints().contains(StandardIOBehaviorHint.INSTANCE)) {
return Optional.of(ReadAdvice.NORMAL);
}
return Optional.empty();
}

/** Sets the preload, if any, on the given directory based on the extensions. Returns the same directory instance. */
// visibility and extensibility for testing
public MMapDirectory setMMapFunctions(MMapDirectory mMapDirectory, Set<String> preLoadExtensions) {
mMapDirectory.setPreload(getPreloadFunc(preLoadExtensions));
mMapDirectory.setReadAdviceOverride(FsDirectoryFactory::overrideReadAdvice);
mMapDirectory.setReadAdvice(getReadAdviceFunc());
return mMapDirectory;
}

Expand All @@ -123,6 +117,15 @@ static BiPredicate<String, IOContext> getPreloadFunc(Set<String> preLoadExtensio
return MMapDirectory.NO_FILES;
}

private static BiFunction<String, IOContext, Optional<ReadAdvice>> getReadAdviceFunc() {
return (name, context) -> {
if (context.hints().contains(StandardIOBehaviorHint.INSTANCE)) {
return Optional.of(ReadAdvice.NORMAL);
}
return MMapDirectory.ADVISE_BY_CONTEXT.apply(name, context);
};
}

/**
* Returns true iff the directory is a hybrid fs directory
*/
Expand Down