Skip to content

Commit edcbe31

Browse files
authored
Refactor codec to leverage backwards_codecs (opensearch-project#2546)
Refactors codec management to move codecs that are read only into a new package, backwards codecs. Also, remove codecs that can no longer be used in 3.0 (everything before 9.1. With this, I remove the enum structure of KNNCodecVersion, as there is really only one codec that can be used to actively write at a time. Signed-off-by: John Mazanec <jmazane@amazon.com>
1 parent f9d8b53 commit edcbe31

33 files changed

+203
-907
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
1515
### Maintenance
1616
* Update package name to fix compilation issue [#2513](https://github.com/opensearch-project/k-NN/pull/2513)
1717
### Refactoring
18+
* Refactor codec to leverage backwards_codecs [#2546](https://github.com/opensearch-project/k-NN/pull/2546)
1819

1920
## [Unreleased 2.x](https://github.com/opensearch-project/k-NN/compare/2.19...2.x)
2021
### Features

src/main/java/org/opensearch/knn/index/codec/KNN10010Codec/KNN10010Codec.java

+16-11
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,37 @@
1212
import org.apache.lucene.codecs.FilterCodec;
1313
import org.apache.lucene.codecs.KnnVectorsFormat;
1414
import org.apache.lucene.codecs.StoredFieldsFormat;
15+
import org.apache.lucene.codecs.lucene101.Lucene101Codec;
1516
import org.apache.lucene.codecs.perfield.PerFieldKnnVectorsFormat;
1617
import org.opensearch.index.mapper.MapperService;
18+
import org.opensearch.knn.index.codec.KNN80Codec.KNN80CompoundFormat;
19+
import org.opensearch.knn.index.codec.KNN80Codec.KNN80DocValuesFormat;
1720
import org.opensearch.knn.index.codec.KNN9120Codec.DerivedSourceStoredFieldsFormat;
18-
import org.opensearch.knn.index.codec.KNNCodecVersion;
19-
import org.opensearch.knn.index.codec.KNNFormatFacade;
21+
import org.opensearch.knn.index.codec.KNN9120Codec.KNN9120PerFieldKnnVectorsFormat;
2022
import org.opensearch.knn.index.codec.derivedsource.DerivedSourceReadersSupplier;
2123

24+
import java.util.Optional;
25+
2226
/**
2327
* KNN Codec that wraps the Lucene Codec which is part of Lucene 10.0.1
2428
*/
2529

2630
public class KNN10010Codec extends FilterCodec {
2731

28-
private static final KNNCodecVersion VERSION = KNNCodecVersion.V_10_01_0;
29-
private final KNNFormatFacade knnFormatFacade;
32+
private static final String NAME = "KNN10010Codec";
33+
public static final Codec DEFAULT_DELEGATE = new Lucene101Codec();
34+
private static final PerFieldKnnVectorsFormat DEFAULT_KNN_VECTOR_FORMAT = new KNN9120PerFieldKnnVectorsFormat(Optional.empty());
35+
3036
private final PerFieldKnnVectorsFormat perFieldKnnVectorsFormat;
3137
private final StoredFieldsFormat storedFieldsFormat;
3238

3339
private final MapperService mapperService;
3440

3541
/**
36-
* No arg constructor that uses Lucene99 as the delegate
42+
* No arg constructor that uses Lucene101Codec as the delegate
3743
*/
3844
public KNN10010Codec() {
39-
this(VERSION.getDefaultCodecDelegate(), VERSION.getPerFieldKnnVectorsFormat(), null);
45+
this(DEFAULT_DELEGATE, DEFAULT_KNN_VECTOR_FORMAT, null);
4046
}
4147

4248
/**
@@ -47,22 +53,21 @@ public KNN10010Codec() {
4753
* @param knnVectorsFormat per field format for KnnVector
4854
*/
4955
@Builder
50-
protected KNN10010Codec(Codec delegate, PerFieldKnnVectorsFormat knnVectorsFormat, MapperService mapperService) {
51-
super(VERSION.getCodecName(), delegate);
52-
knnFormatFacade = VERSION.getKnnFormatFacadeSupplier().apply(delegate);
56+
public KNN10010Codec(Codec delegate, PerFieldKnnVectorsFormat knnVectorsFormat, MapperService mapperService) {
57+
super(NAME, delegate);
5358
perFieldKnnVectorsFormat = knnVectorsFormat;
5459
this.mapperService = mapperService;
5560
this.storedFieldsFormat = getStoredFieldsFormat();
5661
}
5762

5863
@Override
5964
public DocValuesFormat docValuesFormat() {
60-
return knnFormatFacade.docValuesFormat();
65+
return new KNN80DocValuesFormat(delegate.docValuesFormat());
6166
}
6267

6368
@Override
6469
public CompoundFormat compoundFormat() {
65-
return knnFormatFacade.compoundFormat();
70+
return new KNN80CompoundFormat(delegate.compoundFormat());
6671
}
6772

6873
@Override

src/main/java/org/opensearch/knn/index/codec/KNN80Codec/KNN80Codec.java

-120
This file was deleted.

src/main/java/org/opensearch/knn/index/codec/KNN84Codec/KNN84Codec.java

-124
This file was deleted.

0 commit comments

Comments
 (0)