You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by iv...@apache.org on 2021/02/11 07:40:10 UTC

[lucene-solr] branch master updated: Fix file leak in Lucene90VectorWriter (#2331)

This is an automated email from the ASF dual-hosted git repository.

ivera pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/master by this push:
     new 73d4f8c  Fix file leak in Lucene90VectorWriter  (#2331)
73d4f8c is described below

commit 73d4f8cd034e512496aa354772273c629e591f89
Author: Ignacio Vera <iv...@apache.org>
AuthorDate: Thu Feb 11 08:39:48 2021 +0100

    Fix file leak in Lucene90VectorWriter  (#2331)
    
    Adds a new test class based on BaseIndexFileFormatTestCase
---
 .../codecs/lucene90/Lucene90VectorWriter.java      |  15 ++-
 .../codecs/lucene90/TestLucene90VectorFormat.java  |  29 ++++
 .../lucene/index/BaseVectorFormatTestCase.java}    | 150 +++++++++++----------
 3 files changed, 120 insertions(+), 74 deletions(-)

diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90VectorWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90VectorWriter.java
index 21ab611..e070784 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90VectorWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90VectorWriter.java
@@ -54,23 +54,25 @@ public final class Lucene90VectorWriter extends VectorWriter {
     String metaFileName =
         IndexFileNames.segmentFileName(
             state.segmentInfo.name, state.segmentSuffix, Lucene90VectorFormat.META_EXTENSION);
-    meta = state.directory.createOutput(metaFileName, state.context);
 
     String vectorDataFileName =
         IndexFileNames.segmentFileName(
             state.segmentInfo.name,
             state.segmentSuffix,
             Lucene90VectorFormat.VECTOR_DATA_EXTENSION);
-    vectorData = state.directory.createOutput(vectorDataFileName, state.context);
 
     String indexDataFileName =
         IndexFileNames.segmentFileName(
             state.segmentInfo.name,
             state.segmentSuffix,
             Lucene90VectorFormat.VECTOR_INDEX_EXTENSION);
-    vectorIndex = state.directory.createOutput(indexDataFileName, state.context);
 
+    boolean success = false;
     try {
+      meta = state.directory.createOutput(metaFileName, state.context);
+      vectorData = state.directory.createOutput(vectorDataFileName, state.context);
+      vectorIndex = state.directory.createOutput(indexDataFileName, state.context);
+
       CodecUtil.writeIndexHeader(
           meta,
           Lucene90VectorFormat.META_CODEC_NAME,
@@ -89,8 +91,11 @@ public final class Lucene90VectorWriter extends VectorWriter {
           Lucene90VectorFormat.VERSION_CURRENT,
           state.segmentInfo.getId(),
           state.segmentSuffix);
-    } catch (IOException e) {
-      IOUtils.closeWhileHandlingException(this);
+      success = true;
+    } finally {
+      if (success == false) {
+        IOUtils.closeWhileHandlingException(this);
+      }
     }
   }
 
diff --git a/lucene/core/src/test/org/apache/lucene/codecs/lucene90/TestLucene90VectorFormat.java b/lucene/core/src/test/org/apache/lucene/codecs/lucene90/TestLucene90VectorFormat.java
new file mode 100644
index 0000000..1906ecf
--- /dev/null
+++ b/lucene/core/src/test/org/apache/lucene/codecs/lucene90/TestLucene90VectorFormat.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.lucene.codecs.lucene90;
+
+import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.index.BaseVectorFormatTestCase;
+import org.apache.lucene.util.TestUtil;
+
+public class TestLucene90VectorFormat extends BaseVectorFormatTestCase {
+
+  @Override
+  protected Codec getCodec() {
+    return TestUtil.getDefaultCodec();
+  }
+}
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestVectorValues.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseVectorFormatTestCase.java
similarity index 87%
rename from lucene/core/src/test/org/apache/lucene/index/TestVectorValues.java
rename to lucene/test-framework/src/java/org/apache/lucene/index/BaseVectorFormatTestCase.java
index 9691efb..047c373 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestVectorValues.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseVectorFormatTestCase.java
@@ -22,42 +22,45 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.Arrays;
 import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.codecs.VectorFormat;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
-import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.VectorField;
-import org.apache.lucene.index.VectorValues.SearchStrategy;
 import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.SortField;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 import org.apache.lucene.util.VectorUtil;
 
-/** Test Indexing/IndexWriter with vectors */
-public class TestVectorValues extends LuceneTestCase {
+/**
+ * Base class aiming at testing {@link VectorFormat vectors formats}. To test a new format, all you
+ * need is to register a new {@link Codec} which uses it and extend this class and override {@link
+ * #getCodec()}.
+ *
+ * @lucene.experimental
+ */
+public abstract class BaseVectorFormatTestCase extends BaseIndexFileFormatTestCase {
 
-  private IndexWriterConfig createIndexWriterConfig() {
-    IndexWriterConfig iwc = newIndexWriterConfig();
-    iwc.setCodec(Codec.forName("Lucene90"));
-    return iwc;
+  @Override
+  protected void addRandomFields(Document doc) {
+    doc.add(new VectorField("v2", randomVector(30), VectorValues.SearchStrategy.NONE));
   }
 
   // Suddenly add vectors to an existing field:
   public void testUpgradeFieldToVectors() throws Exception {
     try (Directory dir = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
-        doc.add(newStringField("f", "foo", Store.NO));
+        doc.add(newStringField("f", "foo", Field.Store.NO));
         w.addDocument(doc);
       }
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
@@ -79,7 +82,7 @@ public class TestVectorValues extends LuceneTestCase {
     expectThrows(IllegalArgumentException.class, () -> new VectorField("f", null));
     expectThrows(
         IllegalArgumentException.class,
-        () -> new VectorField("f", new float[1], (SearchStrategy) null));
+        () -> new VectorField("f", new float[1], (VectorValues.SearchStrategy) null));
     expectThrows(IllegalArgumentException.class, () -> new VectorField("f", new float[0]));
     expectThrows(
         IllegalArgumentException.class,
@@ -101,12 +104,15 @@ public class TestVectorValues extends LuceneTestCase {
   public void testFieldCreateFieldType() {
     expectThrows(
         IllegalArgumentException.class,
-        () -> VectorField.createHnswType(0, SearchStrategy.EUCLIDEAN_HNSW, 16, 16));
+        () -> VectorField.createHnswType(0, VectorValues.SearchStrategy.EUCLIDEAN_HNSW, 16, 16));
     expectThrows(
         IllegalArgumentException.class,
         () ->
             VectorField.createHnswType(
-                VectorValues.MAX_DIMENSIONS + 1, SearchStrategy.EUCLIDEAN_HNSW, 16, 16));
+                VectorValues.MAX_DIMENSIONS + 1,
+                VectorValues.SearchStrategy.EUCLIDEAN_HNSW,
+                16,
+                16));
     expectThrows(
         IllegalArgumentException.class,
         () -> VectorField.createHnswType(VectorValues.MAX_DIMENSIONS + 1, null, 16, 16));
@@ -114,14 +120,14 @@ public class TestVectorValues extends LuceneTestCase {
         IllegalArgumentException.class,
         () ->
             VectorField.createHnswType(
-                VectorValues.MAX_DIMENSIONS + 1, SearchStrategy.NONE, 16, 16));
+                VectorValues.MAX_DIMENSIONS + 1, VectorValues.SearchStrategy.NONE, 16, 16));
   }
 
   // Illegal schema change tests:
 
   public void testIllegalDimChangeTwoDocs() throws Exception {
     try (Directory dir = newDirectory();
-        IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+        IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
       Document doc = new Document();
       doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
       w.addDocument(doc);
@@ -141,7 +147,7 @@ public class TestVectorValues extends LuceneTestCase {
 
   public void testIllegalSearchStrategyChange() throws Exception {
     try (Directory dir = newDirectory();
-        IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+        IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
       Document doc = new Document();
       doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
       w.addDocument(doc);
@@ -162,13 +168,13 @@ public class TestVectorValues extends LuceneTestCase {
 
   public void testIllegalDimChangeTwoWriters() throws Exception {
     try (Directory dir = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
       }
 
-      try (IndexWriter w2 = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc2 = new Document();
         doc2.add(new VectorField("f", new float[1], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         IllegalArgumentException expected =
@@ -181,13 +187,13 @@ public class TestVectorValues extends LuceneTestCase {
 
   public void testIllegalSearchStrategyChangeTwoWriters() throws Exception {
     try (Directory dir = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
       }
 
-      try (IndexWriter w2 = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc2 = new Document();
         doc2.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.EUCLIDEAN_HNSW));
         IllegalArgumentException expected =
@@ -205,10 +211,10 @@ public class TestVectorValues extends LuceneTestCase {
     doc.add(new VectorField(fieldName, new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
     try (Directory dir = newDirectory();
         Directory dir2 = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         w.addDocument(doc);
       }
-      try (IndexWriter w2 = new IndexWriter(dir2, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir2, newIndexWriterConfig())) {
         w2.addIndexes(dir);
         w2.forceMerge(1);
         try (IndexReader reader = w2.getReader()) {
@@ -227,12 +233,12 @@ public class TestVectorValues extends LuceneTestCase {
     Document doc = new Document();
     try (Directory dir = newDirectory();
         Directory dir2 = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         w.addDocument(doc);
       }
       doc.add(
           new VectorField(fieldName, new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
-      try (IndexWriter w2 = new IndexWriter(dir2, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir2, newIndexWriterConfig())) {
         w2.addDocument(doc);
         w2.addIndexes(dir);
         w2.forceMerge(1);
@@ -254,10 +260,10 @@ public class TestVectorValues extends LuceneTestCase {
     doc.add(new VectorField(fieldName, vector, VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
     try (Directory dir = newDirectory();
         Directory dir2 = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         w.addDocument(doc);
       }
-      try (IndexWriter w2 = new IndexWriter(dir2, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir2, newIndexWriterConfig())) {
         vector[0] = 1;
         w2.addDocument(doc);
         w2.addIndexes(dir);
@@ -280,12 +286,12 @@ public class TestVectorValues extends LuceneTestCase {
   public void testIllegalDimChangeViaAddIndexesDirectory() throws Exception {
     try (Directory dir = newDirectory();
         Directory dir2 = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
-        doc.add(new VectorField("f", new float[4], SearchStrategy.DOT_PRODUCT_HNSW));
+        doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
       }
-      try (IndexWriter w2 = new IndexWriter(dir2, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir2, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[5], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w2.addDocument(doc);
@@ -301,12 +307,12 @@ public class TestVectorValues extends LuceneTestCase {
   public void testIllegalSearchStrategyChangeViaAddIndexesDirectory() throws Exception {
     try (Directory dir = newDirectory();
         Directory dir2 = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
       }
-      try (IndexWriter w2 = new IndexWriter(dir2, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir2, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.EUCLIDEAN_HNSW));
         w2.addDocument(doc);
@@ -322,12 +328,12 @@ public class TestVectorValues extends LuceneTestCase {
   public void testIllegalDimChangeViaAddIndexesCodecReader() throws Exception {
     try (Directory dir = newDirectory();
         Directory dir2 = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
-        doc.add(new VectorField("f", new float[4], SearchStrategy.DOT_PRODUCT_HNSW));
+        doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
       }
-      try (IndexWriter w2 = new IndexWriter(dir2, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir2, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[5], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w2.addDocument(doc);
@@ -346,12 +352,12 @@ public class TestVectorValues extends LuceneTestCase {
   public void testIllegalSearchStrategyChangeViaAddIndexesCodecReader() throws Exception {
     try (Directory dir = newDirectory();
         Directory dir2 = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
       }
-      try (IndexWriter w2 = new IndexWriter(dir2, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir2, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.EUCLIDEAN_HNSW));
         w2.addDocument(doc);
@@ -371,12 +377,12 @@ public class TestVectorValues extends LuceneTestCase {
   public void testIllegalDimChangeViaAddIndexesSlowCodecReader() throws Exception {
     try (Directory dir = newDirectory();
         Directory dir2 = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
       }
-      try (IndexWriter w2 = new IndexWriter(dir2, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir2, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[5], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w2.addDocument(doc);
@@ -393,14 +399,14 @@ public class TestVectorValues extends LuceneTestCase {
   public void testIllegalSearchStrategyChangeViaAddIndexesSlowCodecReader() throws Exception {
     try (Directory dir = newDirectory();
         Directory dir2 = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
       }
-      try (IndexWriter w2 = new IndexWriter(dir2, createIndexWriterConfig())) {
+      try (IndexWriter w2 = new IndexWriter(dir2, newIndexWriterConfig())) {
         Document doc = new Document();
-        doc.add(new VectorField("f", new float[4], SearchStrategy.EUCLIDEAN_HNSW));
+        doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.EUCLIDEAN_HNSW));
         w2.addDocument(doc);
         try (DirectoryReader r = DirectoryReader.open(dir)) {
           IllegalArgumentException expected =
@@ -415,7 +421,7 @@ public class TestVectorValues extends LuceneTestCase {
 
   public void testIllegalMultipleValues() throws Exception {
     try (Directory dir = newDirectory();
-        IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+        IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
       Document doc = new Document();
       doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
       doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
@@ -429,7 +435,7 @@ public class TestVectorValues extends LuceneTestCase {
 
   public void testIllegalDimensionTooLarge() throws Exception {
     try (Directory dir = newDirectory();
-        IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+        IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
       Document doc = new Document();
       expectThrows(
           IllegalArgumentException.class,
@@ -448,12 +454,12 @@ public class TestVectorValues extends LuceneTestCase {
 
   public void testIllegalEmptyVector() throws Exception {
     try (Directory dir = newDirectory();
-        IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+        IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
       Document doc = new Document();
       Exception e =
           expectThrows(
               IllegalArgumentException.class,
-              () -> doc.add(new VectorField("f", new float[0], SearchStrategy.NONE)));
+              () -> doc.add(new VectorField("f", new float[0], VectorValues.SearchStrategy.NONE)));
       assertEquals("cannot index an empty vector", e.getMessage());
 
       Document doc2 = new Document();
@@ -465,7 +471,7 @@ public class TestVectorValues extends LuceneTestCase {
   // Write vectors, one segment with default codec, another with SimpleText, then forceMerge
   public void testDifferentCodecs1() throws Exception {
     try (Directory dir = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
@@ -491,7 +497,7 @@ public class TestVectorValues extends LuceneTestCase {
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
       }
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("f", new float[4], VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
         w.addDocument(doc);
@@ -512,9 +518,9 @@ public class TestVectorValues extends LuceneTestCase {
 
   public void testDeleteAllVectorDocs() throws Exception {
     try (Directory dir = newDirectory();
-        IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+        IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
       Document doc = new Document();
-      doc.add(new StringField("id", "0", Store.NO));
+      doc.add(new StringField("id", "0", Field.Store.NO));
       doc.add(
           new VectorField(
               "v", new float[] {2, 3, 5}, VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
@@ -535,9 +541,9 @@ public class TestVectorValues extends LuceneTestCase {
 
   public void testVectorFieldMissingFromOneSegment() throws Exception {
     try (Directory dir = FSDirectory.open(createTempDir());
-        IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+        IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
       Document doc = new Document();
-      doc.add(new StringField("id", "0", Store.NO));
+      doc.add(new StringField("id", "0", Field.Store.NO));
       doc.add(
           new VectorField(
               "v0", new float[] {2, 3, 5}, VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
@@ -568,7 +574,7 @@ public class TestVectorValues extends LuceneTestCase {
               random().nextInt(VectorValues.SearchStrategy.values().length)];
     }
     try (Directory dir = newDirectory();
-        RandomIndexWriter w = new RandomIndexWriter(random(), dir, createIndexWriterConfig())) {
+        RandomIndexWriter w = new RandomIndexWriter(random(), dir, newIndexWriterConfig())) {
       for (int i = 0; i < numDocs; i++) {
         Document doc = new Document();
         for (int field = 0; field < numFields; field++) {
@@ -610,7 +616,7 @@ public class TestVectorValues extends LuceneTestCase {
     String fieldName = "field";
     float[] v = {0};
     try (Directory dir = newDirectory();
-        IndexWriter iw = new IndexWriter(dir, createIndexWriterConfig())) {
+        IndexWriter iw = new IndexWriter(dir, newIndexWriterConfig())) {
       Document doc1 = new Document();
       doc1.add(new VectorField(fieldName, v, VectorValues.SearchStrategy.EUCLIDEAN_HNSW));
       v[0] = 1;
@@ -637,7 +643,7 @@ public class TestVectorValues extends LuceneTestCase {
   }
 
   public void testSortedIndex() throws Exception {
-    IndexWriterConfig iwc = createIndexWriterConfig();
+    IndexWriterConfig iwc = newIndexWriterConfig();
     iwc.setIndexSort(new Sort(new SortField("sortkey", SortField.Type.INT)));
     String fieldName = "field";
     try (Directory dir = newDirectory();
@@ -675,13 +681,15 @@ public class TestVectorValues extends LuceneTestCase {
         IndexWriter iw = new IndexWriter(dir, newIndexWriterConfig())) {
       Document doc = new Document();
       float[] v = new float[] {1};
-      doc.add(new VectorField("field1", v, SearchStrategy.EUCLIDEAN_HNSW));
-      doc.add(new VectorField("field2", new float[] {1, 2, 3}, SearchStrategy.NONE));
+      doc.add(new VectorField("field1", v, VectorValues.SearchStrategy.EUCLIDEAN_HNSW));
+      doc.add(new VectorField("field2", new float[] {1, 2, 3}, VectorValues.SearchStrategy.NONE));
       iw.addDocument(doc);
       v[0] = 2;
       iw.addDocument(doc);
       doc = new Document();
-      doc.add(new VectorField("field3", new float[] {1, 2, 3}, SearchStrategy.DOT_PRODUCT_HNSW));
+      doc.add(
+          new VectorField(
+              "field3", new float[] {1, 2, 3}, VectorValues.SearchStrategy.DOT_PRODUCT_HNSW));
       iw.addDocument(doc);
       iw.forceMerge(1);
       try (IndexReader reader = iw.getReader()) {
@@ -721,7 +729,7 @@ public class TestVectorValues extends LuceneTestCase {
    * consistently.
    */
   public void testRandom() throws Exception {
-    IndexWriterConfig iwc = createIndexWriterConfig();
+    IndexWriterConfig iwc = newIndexWriterConfig();
     if (random().nextBoolean()) {
       iwc.setIndexSort(new Sort(new SortField("sortkey", SortField.Type.INT)));
     }
@@ -742,9 +750,9 @@ public class TestVectorValues extends LuceneTestCase {
         if (random().nextBoolean() && values[i] != null) {
           // sometimes use a shared scratch array
           System.arraycopy(values[i], 0, scratch, 0, scratch.length);
-          add(iw, fieldName, i, scratch, SearchStrategy.NONE);
+          add(iw, fieldName, i, scratch, VectorValues.SearchStrategy.NONE);
         } else {
-          add(iw, fieldName, i, values[i], SearchStrategy.NONE);
+          add(iw, fieldName, i, values[i], VectorValues.SearchStrategy.NONE);
         }
         if (random().nextInt(10) == 2) {
           // sometimes delete a random document
@@ -817,7 +825,7 @@ public class TestVectorValues extends LuceneTestCase {
         values[i] = value;
         id2value[id] = value;
         id2ord[id] = i;
-        add(iw, fieldName, id, value, SearchStrategy.EUCLIDEAN_HNSW);
+        add(iw, fieldName, id, value, VectorValues.SearchStrategy.EUCLIDEAN_HNSW);
       }
       try (IndexReader reader = iw.getReader()) {
         for (LeafReaderContext ctx : reader.leaves()) {
@@ -850,14 +858,18 @@ public class TestVectorValues extends LuceneTestCase {
   }
 
   private void add(
-      IndexWriter iw, String field, int id, float[] vector, SearchStrategy searchStrategy)
+      IndexWriter iw,
+      String field,
+      int id,
+      float[] vector,
+      VectorValues.SearchStrategy searchStrategy)
       throws IOException {
     add(iw, field, id, random().nextInt(100), vector, searchStrategy);
   }
 
   private void add(IndexWriter iw, String field, int id, int sortkey, float[] vector)
       throws IOException {
-    add(iw, field, id, sortkey, vector, SearchStrategy.NONE);
+    add(iw, field, id, sortkey, vector, VectorValues.SearchStrategy.NONE);
   }
 
   private void add(
@@ -866,7 +878,7 @@ public class TestVectorValues extends LuceneTestCase {
       int id,
       int sortkey,
       float[] vector,
-      SearchStrategy searchStrategy)
+      VectorValues.SearchStrategy searchStrategy)
       throws IOException {
     Document doc = new Document();
     if (vector != null) {
@@ -890,7 +902,7 @@ public class TestVectorValues extends LuceneTestCase {
 
   public void testCheckIndexIncludesVectors() throws Exception {
     try (Directory dir = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         Document doc = new Document();
         doc.add(new VectorField("v1", randomVector(3), VectorValues.SearchStrategy.NONE));
         w.addDocument(doc);
@@ -924,14 +936,14 @@ public class TestVectorValues extends LuceneTestCase {
 
   public void testAdvance() throws Exception {
     try (Directory dir = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(dir, createIndexWriterConfig())) {
+      try (IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
         int numdocs = atLeast(1500);
         String fieldName = "field";
         for (int i = 0; i < numdocs; i++) {
           Document doc = new Document();
           // randomly add a vector field
           if (random().nextInt(4) == 3) {
-            doc.add(new VectorField(fieldName, new float[4], SearchStrategy.NONE));
+            doc.add(new VectorField(fieldName, new float[4], VectorValues.SearchStrategy.NONE));
           }
           w.addDocument(doc);
         }