diff --git a/server/src/main/java/org/opensearch/index/remote/RemoteStoreUtils.java b/server/src/main/java/org/opensearch/index/remote/RemoteStoreUtils.java index 4965456203210..e4466ca2cba5c 100644 --- a/server/src/main/java/org/opensearch/index/remote/RemoteStoreUtils.java +++ b/server/src/main/java/org/opensearch/index/remote/RemoteStoreUtils.java @@ -53,6 +53,12 @@ public static long invertLong(String str) { return Long.MAX_VALUE - num; } + /** + * Extracts the Lucene major version from the provided DocValuesUpdates file name + * @param filename DocValuesUpdates file name to parse + * @return Lucene major version that wrote the DocValuesUpdates file + * @throws CorruptIndexException If the Lucene major version cannot be inferred + */ public static int getLuceneVersionForDocValuesUpdates(String filename) throws CorruptIndexException { // TODO: The following regex could work incorrectly if both major and minor versions are double-digits. // This is because the major and minor versions do not have a separator in the filename currently diff --git a/server/src/test/java/org/opensearch/index/remote/RemoteStoreUtilsTests.java b/server/src/test/java/org/opensearch/index/remote/RemoteStoreUtilsTests.java index 5b9135afb66f3..130ee86d405ea 100644 --- a/server/src/test/java/org/opensearch/index/remote/RemoteStoreUtilsTests.java +++ b/server/src/test/java/org/opensearch/index/remote/RemoteStoreUtilsTests.java @@ -8,6 +8,7 @@ package org.opensearch.index.remote; +import org.apache.lucene.index.CorruptIndexException; import org.opensearch.test.OpenSearchTestCase; public class RemoteStoreUtilsTests extends OpenSearchTestCase { @@ -38,4 +39,12 @@ public void testinvert() { assertEquals(num, RemoteStoreUtils.invertLong(RemoteStoreUtils.invertLong(num))); } } + + public void testGetLuceneVersionForDocValuesUpdates() throws CorruptIndexException { + assertEquals(9, RemoteStoreUtils.getLuceneVersionForDocValuesUpdates("_0_1_Lucene90_0.dvm")); + } + + public void testGetLuceneVersionForDocValuesUpdatesException() { + assertThrows(CorruptIndexException.class, () -> RemoteStoreUtils.getLuceneVersionForDocValuesUpdates("_0_1_Asserting_0.dvm")); + } }