diff --git a/modules/reindex/build.gradle b/modules/reindex/build.gradle
index bb04fffc4f03a..37526a924da73 100644
--- a/modules/reindex/build.gradle
+++ b/modules/reindex/build.gradle
@@ -69,7 +69,6 @@ dependencies {
testImplementation project(':modules:transport-netty4')
// for parent/child testing
testImplementation project(':modules:parent-join')
- testImplementation project(':plugins:custom-codecs')
}
restResources {
@@ -96,5 +95,4 @@ forbiddenPatterns {
tasks.named("bundlePlugin").configure {
dependsOn("copyParentJoinMetadata")
dependsOn("copyTransportNetty4Metadata")
- dependsOn("copyCustomCodecsMetadata")
}
diff --git a/plugins/custom-codecs/build.gradle b/plugins/custom-codecs/build.gradle
deleted file mode 100644
index 253822e88b817..0000000000000
--- a/plugins/custom-codecs/build.gradle
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * SPDX-License-Identifier: Apache-2.0
- *
- * The OpenSearch Contributors require contributions made to
- * this file be licensed under the Apache-2.0 license or a
- * compatible open source license.
- *
- * Modifications Copyright OpenSearch Contributors. See
- * GitHub history for details.
- */
-
-apply plugin: 'opensearch.opensearchplugin'
-apply plugin: 'opensearch.internal-cluster-test'
-
-opensearchplugin {
- name 'custom-codecs'
- description 'A plugin that implements custom compression codecs.'
- classname 'org.opensearch.index.codec.customcodecs.CustomCodecPlugin'
- licenseFile rootProject.file('licenses/APACHE-LICENSE-2.0.txt')
- noticeFile rootProject.file('NOTICE.txt')
-}
-
-dependencies {
- api "com.github.luben:zstd-jni:1.5.5-5"
-}
-
-testingConventions.enabled = false;
diff --git a/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/CustomCodecPlugin.java b/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/CustomCodecPlugin.java
deleted file mode 100644
index 91a13a1d924a2..0000000000000
--- a/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/CustomCodecPlugin.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * SPDX-License-Identifier: Apache-2.0
- *
- * The OpenSearch Contributors require contributions made to
- * this file be licensed under the Apache-2.0 license or a
- * compatible open source license.
- */
-
-package org.opensearch.index.codec.customcodecs;
-
-import org.opensearch.index.IndexSettings;
-import org.opensearch.index.codec.CodecServiceFactory;
-import org.opensearch.index.engine.EngineConfig;
-import org.opensearch.plugins.EnginePlugin;
-import org.opensearch.plugins.Plugin;
-
-import java.util.Optional;
-
-/**
- * A plugin that implements custom codecs. Supports these codecs:
- *
- * - ZSTD
- *
- ZSTDNODICT
- *
- *
- * @opensearch.internal
- */
-public final class CustomCodecPlugin extends Plugin implements EnginePlugin {
-
- /**
- * Creates a new instance
- */
- public CustomCodecPlugin() {}
-
- /**
- * @param indexSettings is the default indexSettings
- * @return the engine factory
- */
- @Override
- public Optional getCustomCodecServiceFactory(final IndexSettings indexSettings) {
- String codecName = indexSettings.getValue(EngineConfig.INDEX_CODEC_SETTING);
- if (codecName.equals(CustomCodecService.ZSTD_NO_DICT_CODEC) || codecName.equals(CustomCodecService.ZSTD_CODEC)) {
- return Optional.of(new CustomCodecServiceFactory());
- }
- return Optional.empty();
- }
-}
diff --git a/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/CustomCodecService.java b/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/CustomCodecService.java
deleted file mode 100644
index de0eb2b3286d3..0000000000000
--- a/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/CustomCodecService.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * SPDX-License-Identifier: Apache-2.0
- *
- * The OpenSearch Contributors require contributions made to
- * this file be licensed under the Apache-2.0 license or a
- * compatible open source license.
- */
-
-package org.opensearch.index.codec.customcodecs;
-
-import org.apache.logging.log4j.Logger;
-import org.apache.lucene.codecs.Codec;
-import org.opensearch.common.collect.MapBuilder;
-import org.opensearch.index.IndexSettings;
-import org.opensearch.index.codec.CodecService;
-import org.opensearch.index.mapper.MapperService;
-
-import java.util.Arrays;
-import java.util.Map;
-import java.util.stream.Stream;
-
-import static org.opensearch.index.engine.EngineConfig.INDEX_CODEC_COMPRESSION_LEVEL_SETTING;
-
-/**
- * CustomCodecService provides ZSTD and ZSTD_NO_DICT compression codecs.
- */
-public class CustomCodecService extends CodecService {
- private final Map codecs;
- /**
- * ZStandard codec
- */
- public static final String ZSTD_CODEC = "zstd";
- /**
- * ZStandard without dictionary codec
- */
- public static final String ZSTD_NO_DICT_CODEC = "zstd_no_dict";
-
- /**
- * Creates a new CustomCodecService.
- *
- * @param mapperService The mapper service.
- * @param indexSettings The index settings.
- * @param logger The logger.
- */
- public CustomCodecService(MapperService mapperService, IndexSettings indexSettings, Logger logger) {
- super(mapperService, indexSettings, logger);
- int compressionLevel = indexSettings.getValue(INDEX_CODEC_COMPRESSION_LEVEL_SETTING);
- final MapBuilder codecs = MapBuilder.newMapBuilder();
- if (mapperService == null) {
- codecs.put(ZSTD_CODEC, new ZstdCodec(compressionLevel));
- codecs.put(ZSTD_NO_DICT_CODEC, new ZstdNoDictCodec(compressionLevel));
- } else {
- codecs.put(ZSTD_CODEC, new ZstdCodec(mapperService, logger, compressionLevel));
- codecs.put(ZSTD_NO_DICT_CODEC, new ZstdNoDictCodec(mapperService, logger, compressionLevel));
- }
- this.codecs = codecs.immutableMap();
- }
-
- @Override
- public Codec codec(String name) {
- Codec codec = codecs.get(name);
- if (codec == null) {
- return super.codec(name);
- }
- return codec;
- }
-
- @Override
- public String[] availableCodecs() {
- return Stream.concat(Arrays.stream(super.availableCodecs()), codecs.keySet().stream()).toArray(String[]::new);
- }
-}
diff --git a/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/CustomCodecServiceFactory.java b/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/CustomCodecServiceFactory.java
deleted file mode 100644
index d634616162684..0000000000000
--- a/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/CustomCodecServiceFactory.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * SPDX-License-Identifier: Apache-2.0
- *
- * The OpenSearch Contributors require contributions made to
- * this file be licensed under the Apache-2.0 license or a
- * compatible open source license.
- */
-
-package org.opensearch.index.codec.customcodecs;
-
-import org.opensearch.index.codec.CodecService;
-import org.opensearch.index.codec.CodecServiceConfig;
-import org.opensearch.index.codec.CodecServiceFactory;
-
-/**
- * A factory for creating new {@link CodecService} instance
- */
-public class CustomCodecServiceFactory implements CodecServiceFactory {
-
- /** Creates a new instance. */
- public CustomCodecServiceFactory() {}
-
- @Override
- public CodecService createCodecService(CodecServiceConfig config) {
- return new CustomCodecService(config.getMapperService(), config.getIndexSettings(), config.getLogger());
- }
-}
diff --git a/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/ZstdDeprecatedCodec.java b/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/ZstdDeprecatedCodec.java
deleted file mode 100644
index 02fa386db97b3..0000000000000
--- a/plugins/custom-codecs/src/main/java/org/opensearch/index/codec/customcodecs/ZstdDeprecatedCodec.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * SPDX-License-Identifier: Apache-2.0
- *
- * The OpenSearch Contributors require contributions made to
- * this file be licensed under the Apache-2.0 license or a
- * compatible open source license.
- */
-
-package org.opensearch.index.codec.customcodecs;
-
-import org.apache.logging.log4j.Logger;
-import org.opensearch.common.settings.Setting;
-import org.opensearch.index.codec.CodecSettings;
-import org.opensearch.index.engine.EngineConfig;
-import org.opensearch.index.mapper.MapperService;
-
-/**
- * ZstdDeprecatedCodec provides ZSTD compressor using the zstd-jni library.
- * Added to support backward compatibility for indices created with Lucene95CustomCodec as codec name.
- */
-@Deprecated(since = "2.10")
-public class ZstdDeprecatedCodec extends Lucene95CustomCodec implements CodecSettings {
-
- /**
- * Creates a new ZstdDefaultCodec instance with the default compression level.
- */
- public ZstdDeprecatedCodec() {
- this(DEFAULT_COMPRESSION_LEVEL);
- }
-
- /**
- * Creates a new ZstdDefaultCodec instance.
- *
- * @param compressionLevel The compression level.
- */
- public ZstdDeprecatedCodec(int compressionLevel) {
- super(Mode.ZSTD_DEPRECATED, compressionLevel);
- }
-
- /**
- * Creates a new ZstdDefaultCodec instance.
- *
- * @param mapperService The mapper service.
- * @param logger The logger.
- * @param compressionLevel The compression level.
- */
- public ZstdDeprecatedCodec(MapperService mapperService, Logger logger, int compressionLevel) {
- super(Mode.ZSTD_DEPRECATED, compressionLevel, mapperService, logger);
- }
-
- /** The name for this codec. */
- @Override
- public String toString() {
- return getClass().getSimpleName();
- }
-
- @Override
- public boolean supports(Setting> setting) {
- return setting.equals(EngineConfig.INDEX_CODEC_COMPRESSION_LEVEL_SETTING);
- }
-}
diff --git a/plugins/custom-codecs/src/main/plugin-metadata/plugin-security.policy b/plugins/custom-codecs/src/main/plugin-metadata/plugin-security.policy
deleted file mode 100644
index 8161010cfa897..0000000000000
--- a/plugins/custom-codecs/src/main/plugin-metadata/plugin-security.policy
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * SPDX-License-Identifier: Apache-2.0
- *
- * The OpenSearch Contributors require contributions made to
- * this file be licensed under the Apache-2.0 license or a
- * compatible open source license.
- */
-
-grant codeBase "${codebase.zstd-jni}" {
- permission java.lang.RuntimePermission "loadLibrary.*";
-};
diff --git a/plugins/custom-codecs/src/test/java/org/opensearch/index/codec/customcodecs/CustomCodecTests.java b/plugins/custom-codecs/src/test/java/org/opensearch/index/codec/customcodecs/CustomCodecTests.java
deleted file mode 100644
index 5365b9e222d9a..0000000000000
--- a/plugins/custom-codecs/src/test/java/org/opensearch/index/codec/customcodecs/CustomCodecTests.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * SPDX-License-Identifier: Apache-2.0
- *
- * The OpenSearch Contributors require contributions made to
- * this file be licensed under the Apache-2.0 license or a
- * compatible open source license.
- */
-
-/*
- * Licensed to Elasticsearch under one or more contributor
- * license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright
- * ownership. Elasticsearch 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.
- */
-
-/*
- * Modifications Copyright OpenSearch Contributors. See
- * GitHub history for details.
- */
-
-package org.opensearch.index.codec.customcodecs;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.lucene90.Lucene90StoredFieldsFormat;
-import org.apache.lucene.codecs.lucene95.Lucene95Codec;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.SegmentReader;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.tests.util.LuceneTestCase.SuppressCodecs;
-import org.opensearch.common.settings.IndexScopedSettings;
-import org.opensearch.common.settings.Settings;
-import org.opensearch.env.Environment;
-import org.opensearch.index.IndexSettings;
-import org.opensearch.index.analysis.IndexAnalyzers;
-import org.opensearch.index.codec.CodecService;
-import org.opensearch.index.codec.CodecServiceConfig;
-import org.opensearch.index.codec.CodecServiceFactory;
-import org.opensearch.index.codec.CodecSettings;
-import org.opensearch.index.engine.EngineConfig;
-import org.opensearch.index.mapper.MapperService;
-import org.opensearch.index.similarity.SimilarityService;
-import org.opensearch.indices.mapper.MapperRegistry;
-import org.opensearch.plugins.MapperPlugin;
-import org.opensearch.test.IndexSettingsModule;
-import org.opensearch.test.OpenSearchTestCase;
-import org.junit.Before;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Optional;
-
-import static org.opensearch.index.codec.customcodecs.CustomCodecService.ZSTD_CODEC;
-import static org.opensearch.index.codec.customcodecs.CustomCodecService.ZSTD_NO_DICT_CODEC;
-import static org.opensearch.index.engine.EngineConfig.INDEX_CODEC_COMPRESSION_LEVEL_SETTING;
-
-@SuppressCodecs("*") // we test against default codec so never get a random one here!
-public class CustomCodecTests extends OpenSearchTestCase {
-
- private CustomCodecPlugin plugin;
-
- @Before
- public void setup() {
- plugin = new CustomCodecPlugin();
- }
-
- public void testZstd() throws Exception {
- Codec codec = createCodecService(false).codec("zstd");
- assertStoredFieldsCompressionEquals(Lucene95CustomCodec.Mode.ZSTD, codec);
- Lucene95CustomStoredFieldsFormat storedFieldsFormat = (Lucene95CustomStoredFieldsFormat) codec.storedFieldsFormat();
- assertEquals(Lucene95CustomCodec.DEFAULT_COMPRESSION_LEVEL, storedFieldsFormat.getCompressionLevel());
- }
-
- public void testZstdNoDict() throws Exception {
- Codec codec = createCodecService(false).codec("zstd_no_dict");
- assertStoredFieldsCompressionEquals(Lucene95CustomCodec.Mode.ZSTD_NO_DICT, codec);
- Lucene95CustomStoredFieldsFormat storedFieldsFormat = (Lucene95CustomStoredFieldsFormat) codec.storedFieldsFormat();
- assertEquals(Lucene95CustomCodec.DEFAULT_COMPRESSION_LEVEL, storedFieldsFormat.getCompressionLevel());
- }
-
- public void testZstdDeprecatedCodec() {
- final IllegalArgumentException e = expectThrows(
- IllegalArgumentException.class,
- () -> createCodecService(false).codec("ZSTD_DEPRECATED")
- );
- assertTrue(e.getMessage().startsWith("failed to find codec"));
- }
-
- public void testZstdWithCompressionLevel() throws Exception {
- int randomCompressionLevel = randomIntBetween(1, 6);
- Codec codec = createCodecService(randomCompressionLevel, "zstd").codec("zstd");
- assertStoredFieldsCompressionEquals(Lucene95CustomCodec.Mode.ZSTD, codec);
- Lucene95CustomStoredFieldsFormat storedFieldsFormat = (Lucene95CustomStoredFieldsFormat) codec.storedFieldsFormat();
- assertEquals(randomCompressionLevel, storedFieldsFormat.getCompressionLevel());
- }
-
- public void testZstdNoDictWithCompressionLevel() throws Exception {
- int randomCompressionLevel = randomIntBetween(1, 6);
- Codec codec = createCodecService(randomCompressionLevel, "zstd_no_dict").codec("zstd_no_dict");
- assertStoredFieldsCompressionEquals(Lucene95CustomCodec.Mode.ZSTD_NO_DICT, codec);
- Lucene95CustomStoredFieldsFormat storedFieldsFormat = (Lucene95CustomStoredFieldsFormat) codec.storedFieldsFormat();
- assertEquals(randomCompressionLevel, storedFieldsFormat.getCompressionLevel());
- }
-
- public void testBestCompressionWithCompressionLevel() {
- final Settings zstdSettings = Settings.builder()
- .put(INDEX_CODEC_COMPRESSION_LEVEL_SETTING.getKey(), randomIntBetween(1, 6))
- .put(EngineConfig.INDEX_CODEC_SETTING.getKey(), randomFrom(ZSTD_CODEC, ZSTD_NO_DICT_CODEC))
- .build();
-
- // able to validate zstd
- final IndexScopedSettings zstdIndexScopedSettings = new IndexScopedSettings(
- zstdSettings,
- IndexScopedSettings.BUILT_IN_INDEX_SETTINGS
- );
- zstdIndexScopedSettings.validate(zstdSettings, true);
- }
-
- public void testLuceneCodecsWithCompressionLevel() {
- final Settings customCodecSettings = Settings.builder()
- .put(INDEX_CODEC_COMPRESSION_LEVEL_SETTING.getKey(), randomIntBetween(1, 6))
- .put(EngineConfig.INDEX_CODEC_SETTING.getKey(), randomFrom("zstd", "zstd_no_dict"))
- .build();
-
- final IndexScopedSettings customCodecIndexScopedSettings = new IndexScopedSettings(
- customCodecSettings,
- IndexScopedSettings.BUILT_IN_INDEX_SETTINGS
- );
- customCodecIndexScopedSettings.validate(customCodecSettings, true);
- }
-
- public void testZstandardCompressionLevelSupport() throws Exception {
- CodecService codecService = createCodecService(false);
- CodecSettings zstdCodec = (CodecSettings) codecService.codec("zstd");
- CodecSettings zstdNoDictCodec = (CodecSettings) codecService.codec("zstd_no_dict");
- assertTrue(zstdCodec.supports(INDEX_CODEC_COMPRESSION_LEVEL_SETTING));
- assertTrue(zstdNoDictCodec.supports(INDEX_CODEC_COMPRESSION_LEVEL_SETTING));
- }
-
- public void testDefaultMapperServiceNull() throws Exception {
- Codec codec = createCodecService(true).codec("default");
- assertStoredFieldsCompressionEquals(Lucene95Codec.Mode.BEST_SPEED, codec);
- }
-
- public void testBestCompressionMapperServiceNull() throws Exception {
- Codec codec = createCodecService(true).codec("best_compression");
- assertStoredFieldsCompressionEquals(Lucene95Codec.Mode.BEST_COMPRESSION, codec);
- }
-
- public void testZstdMapperServiceNull() throws Exception {
- Codec codec = createCodecService(true).codec("zstd");
- assertStoredFieldsCompressionEquals(Lucene95CustomCodec.Mode.ZSTD, codec);
- Lucene95CustomStoredFieldsFormat storedFieldsFormat = (Lucene95CustomStoredFieldsFormat) codec.storedFieldsFormat();
- assertEquals(Lucene95CustomCodec.DEFAULT_COMPRESSION_LEVEL, storedFieldsFormat.getCompressionLevel());
- }
-
- public void testZstdNoDictMapperServiceNull() throws Exception {
- Codec codec = createCodecService(true).codec("zstd_no_dict");
- assertStoredFieldsCompressionEquals(Lucene95CustomCodec.Mode.ZSTD_NO_DICT, codec);
- Lucene95CustomStoredFieldsFormat storedFieldsFormat = (Lucene95CustomStoredFieldsFormat) codec.storedFieldsFormat();
- assertEquals(Lucene95CustomCodec.DEFAULT_COMPRESSION_LEVEL, storedFieldsFormat.getCompressionLevel());
- }
-
- // write some docs with it, inspect .si to see this was the used compression
- private void assertStoredFieldsCompressionEquals(Lucene95Codec.Mode expected, Codec actual) throws Exception {
- SegmentReader sr = getSegmentReader(actual);
- String v = sr.getSegmentInfo().info.getAttribute(Lucene90StoredFieldsFormat.MODE_KEY);
- assertNotNull(v);
- assertEquals(expected, Lucene95Codec.Mode.valueOf(v));
- }
-
- private void assertStoredFieldsCompressionEquals(Lucene95CustomCodec.Mode expected, Codec actual) throws Exception {
- SegmentReader sr = getSegmentReader(actual);
- String v = sr.getSegmentInfo().info.getAttribute(Lucene95CustomStoredFieldsFormat.MODE_KEY);
- assertNotNull(v);
- assertEquals(expected, Lucene95CustomCodec.Mode.valueOf(v));
- }
-
- private CodecService createCodecService(boolean isMapperServiceNull) throws IOException {
- Settings nodeSettings = Settings.builder().put(Environment.PATH_HOME_SETTING.getKey(), createTempDir()).build();
- if (isMapperServiceNull) {
- return new CustomCodecService(null, IndexSettingsModule.newIndexSettings("_na", nodeSettings), LogManager.getLogger("test"));
- }
- return buildCodecService(nodeSettings);
- }
-
- private CodecService createCodecService(int randomCompressionLevel, String codec) throws IOException {
- Settings nodeSettings = Settings.builder()
- .put(Environment.PATH_HOME_SETTING.getKey(), createTempDir())
- .put("index.codec", codec)
- .put("index.codec.compression_level", randomCompressionLevel)
- .build();
- return buildCodecService(nodeSettings);
- }
-
- private CodecService buildCodecService(Settings nodeSettings) throws IOException {
-
- IndexSettings indexSettings = IndexSettingsModule.newIndexSettings("_na", nodeSettings);
- SimilarityService similarityService = new SimilarityService(indexSettings, null, Collections.emptyMap());
- IndexAnalyzers indexAnalyzers = createTestAnalysis(indexSettings, nodeSettings).indexAnalyzers;
- MapperRegistry mapperRegistry = new MapperRegistry(Collections.emptyMap(), Collections.emptyMap(), MapperPlugin.NOOP_FIELD_FILTER);
- MapperService service = new MapperService(
- indexSettings,
- indexAnalyzers,
- xContentRegistry(),
- similarityService,
- mapperRegistry,
- () -> null,
- () -> false,
- null
- );
-
- Optional customCodecServiceFactory = plugin.getCustomCodecServiceFactory(indexSettings);
- if (customCodecServiceFactory.isPresent()) {
- return customCodecServiceFactory.get().createCodecService(new CodecServiceConfig(indexSettings, service, logger));
- }
- return new CustomCodecService(service, indexSettings, LogManager.getLogger("test"));
- }
-
- private SegmentReader getSegmentReader(Codec codec) throws IOException {
- Directory dir = newDirectory();
- IndexWriterConfig iwc = newIndexWriterConfig(null);
- iwc.setCodec(codec);
- IndexWriter iw = new IndexWriter(dir, iwc);
- iw.addDocument(new Document());
- iw.commit();
- iw.close();
- DirectoryReader ir = DirectoryReader.open(dir);
- SegmentReader sr = (SegmentReader) ir.leaves().get(0).reader();
- ir.close();
- dir.close();
- return sr;
- }
-
-}