From 73e821b84e37b7aeb972566953731e4139ec1e6f Mon Sep 17 00:00:00 2001 From: Simon Cooper Date: Mon, 28 Jul 2025 11:38:32 +0100 Subject: [PATCH 1/4] Turn direct IO off by default --- .../codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java b/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java index 5df81c35bbd40..80213a778abfe 100644 --- a/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java +++ b/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java @@ -87,7 +87,7 @@ */ public class ES818BinaryQuantizedVectorsFormat extends FlatVectorsFormat { - static final boolean USE_DIRECT_IO = Boolean.parseBoolean(System.getProperty("vector.rescoring.directio", "true")); + static final boolean USE_DIRECT_IO = Boolean.parseBoolean(System.getProperty("vector.rescoring.directio", "false")); public static final String BINARIZED_VECTOR_COMPONENT = "BVEC"; public static final String NAME = "ES818BinaryQuantizedVectorsFormat"; From 4666b3ac0a0d84eac2c929d05d8e59e52201903a Mon Sep 17 00:00:00 2001 From: Simon Cooper Date: Mon, 28 Jul 2025 12:45:47 +0100 Subject: [PATCH 2/4] Disable tests when direct IO turned off --- .../vectors/es818/ES818BinaryQuantizedVectorsFormatTests.java | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/test/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormatTests.java b/server/src/test/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormatTests.java index ce3f285bdf45d..ca4721c354ef9 100644 --- a/server/src/test/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormatTests.java +++ b/server/src/test/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormatTests.java @@ -373,6 +373,7 @@ private Directory newFSDirectory() throws IOException { } static void checkDirectIOSupported() { + assumeTrue("test requires direct IO", ES818BinaryQuantizedVectorsFormat.USE_DIRECT_IO); Path path = createTempDir("directIOProbe"); try (Directory dir = open(path); IndexOutput out = dir.createOutput("out", IOContext.DEFAULT)) { out.writeString("test"); From c672a6d7cfc71cccc8d17cb27671a1c74ba54e03 Mon Sep 17 00:00:00 2001 From: Simon Cooper Date: Mon, 28 Jul 2025 13:25:12 +0100 Subject: [PATCH 3/4] And this test too --- .../es818/ES818HnswBinaryQuantizedVectorsFormatTests.java | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/test/java/org/elasticsearch/index/codec/vectors/es818/ES818HnswBinaryQuantizedVectorsFormatTests.java b/server/src/test/java/org/elasticsearch/index/codec/vectors/es818/ES818HnswBinaryQuantizedVectorsFormatTests.java index 3a4a0d097ea1b..98aed559d9768 100644 --- a/server/src/test/java/org/elasticsearch/index/codec/vectors/es818/ES818HnswBinaryQuantizedVectorsFormatTests.java +++ b/server/src/test/java/org/elasticsearch/index/codec/vectors/es818/ES818HnswBinaryQuantizedVectorsFormatTests.java @@ -221,6 +221,7 @@ private Directory newFSDirectory() throws IOException { } static void checkDirectIOSupported() { + assumeTrue("test requires direct IO", ES818BinaryQuantizedVectorsFormat.USE_DIRECT_IO); Path path = createTempDir("directIOProbe"); try (Directory dir = open(path); IndexOutput out = dir.createOutput("out", IOContext.DEFAULT)) { out.writeString("test"); From 812e93e70010a1e8bfd1fca082a849bb56a6a7d5 Mon Sep 17 00:00:00 2001 From: Simon Cooper Date: Mon, 28 Jul 2025 14:00:06 +0100 Subject: [PATCH 4/4] And this one --- .../java/org/elasticsearch/index/store/DirectIOIT.java | 2 ++ .../codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/server/src/internalClusterTest/java/org/elasticsearch/index/store/DirectIOIT.java b/server/src/internalClusterTest/java/org/elasticsearch/index/store/DirectIOIT.java index f9af9fea6e3b1..f7707d27b41e7 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/index/store/DirectIOIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/index/store/DirectIOIT.java @@ -17,6 +17,7 @@ import org.apache.lucene.store.IndexOutput; import org.apache.lucene.tests.util.LuceneTestCase; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.codec.vectors.es818.ES818BinaryQuantizedVectorsFormat; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.search.vectors.KnnSearchBuilder; import org.elasticsearch.search.vectors.VectorData; @@ -46,6 +47,7 @@ public class DirectIOIT extends ESIntegTestCase { @BeforeClass public static void checkSupported() throws IOException { + assumeTrue("test requires direct IO", ES818BinaryQuantizedVectorsFormat.USE_DIRECT_IO); Path path = createTempDir("directIOProbe"); try (Directory dir = open(path); IndexOutput out = dir.createOutput("out", IOContext.DEFAULT)) { out.writeString("test"); diff --git a/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java b/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java index 80213a778abfe..146164b55f00a 100644 --- a/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java +++ b/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java @@ -87,7 +87,7 @@ */ public class ES818BinaryQuantizedVectorsFormat extends FlatVectorsFormat { - static final boolean USE_DIRECT_IO = Boolean.parseBoolean(System.getProperty("vector.rescoring.directio", "false")); + public static final boolean USE_DIRECT_IO = Boolean.parseBoolean(System.getProperty("vector.rescoring.directio", "false")); public static final String BINARIZED_VECTOR_COMPONENT = "BVEC"; public static final String NAME = "ES818BinaryQuantizedVectorsFormat";