From ed2e53d66ae8e29c5ef8b7de4f595734084dc07a Mon Sep 17 00:00:00 2001 From: Nicholas Walter Knize Date: Fri, 1 Apr 2022 17:10:00 -0500 Subject: [PATCH 1/8] [Version] Add initial 3.0 support logic This adds initial testing to prep 3.0 for removal of legacy support Signed-off-by: Nicholas Walter Knize --- .../plugins/RemovePluginCommandTests.java | 2 +- .../common/EdgeNGramTokenizerTests.java | 4 +-- ...DelimiterGraphTokenFilterFactoryTests.java | 2 +- .../src/main/java/org/opensearch/Version.java | 20 ++++++------ .../org/opensearch/LegacyESVersionTests.java | 5 ++- .../java/org/opensearch/VersionTests.java | 27 ++++++++++++++-- .../health/ClusterHealthRequestTests.java | 17 ++++++++-- .../ingest/SimulateProcessorResultTests.java | 4 +-- .../opensearch/cluster/FeatureAwareTests.java | 2 +- .../coordination/JoinTaskExecutorTests.java | 2 +- .../metadata/DataStreamTemplateTests.java | 2 +- .../MetadataIndexUpgradeServiceTests.java | 8 +++-- ...dexShardConstraintDeciderOverlapTests.java | 2 +- .../NodeVersionAllocationDeciderTests.java | 31 +++++++++++-------- .../common/lucene/uid/VersionsTests.java | 2 +- .../opensearch/index/IndexSettingsTests.java | 8 ++--- .../index/analysis/AnalysisRegistryTests.java | 2 +- .../PreConfiguredTokenFilterTests.java | 2 +- .../opensearch/ingest/IngestStatsTests.java | 4 +-- .../PersistentTasksCustomMetadataTests.java | 4 +-- .../action/document/RestIndexActionTests.java | 2 +- .../metrics/InternalScriptedMetricTests.java | 8 +++-- .../TransportServiceHandshakeTests.java | 2 +- .../org/opensearch/test/VersionUtils.java | 30 +++++++++++++++--- .../opensearch/test/VersionUtilsTests.java | 4 +-- 25 files changed, 134 insertions(+), 62 deletions(-) diff --git a/distribution/tools/plugin-cli/src/test/java/org/opensearch/plugins/RemovePluginCommandTests.java b/distribution/tools/plugin-cli/src/test/java/org/opensearch/plugins/RemovePluginCommandTests.java index 8f9aa27be7e84..72f07d2d8d0cf 100644 --- a/distribution/tools/plugin-cli/src/test/java/org/opensearch/plugins/RemovePluginCommandTests.java +++ b/distribution/tools/plugin-cli/src/test/java/org/opensearch/plugins/RemovePluginCommandTests.java @@ -173,7 +173,7 @@ public void testRemoveOldVersion() throws Exception { VersionUtils.randomVersionBetween( random(), Version.CURRENT.minimumIndexCompatibilityVersion(), - VersionUtils.getPreviousVersion() + VersionUtils.getPreviousReleasedVersion() ) ); removePlugin("fake", home, randomBoolean()); diff --git a/modules/analysis-common/src/test/java/org/opensearch/analysis/common/EdgeNGramTokenizerTests.java b/modules/analysis-common/src/test/java/org/opensearch/analysis/common/EdgeNGramTokenizerTests.java index 07ac0d69428af..f5e07de6759c4 100644 --- a/modules/analysis-common/src/test/java/org/opensearch/analysis/common/EdgeNGramTokenizerTests.java +++ b/modules/analysis-common/src/test/java/org/opensearch/analysis/common/EdgeNGramTokenizerTests.java @@ -73,7 +73,7 @@ public void testPreConfiguredTokenizer() throws IOException { Version version = VersionUtils.randomVersionBetween( random(), LegacyESVersion.fromString("7.0.0"), - VersionUtils.getPreviousVersion(LegacyESVersion.fromString("7.3.0")) + VersionUtils.getPreviousReleasedVersion(LegacyESVersion.fromString("7.3.0")) ); try (IndexAnalyzers indexAnalyzers = buildAnalyzers(version, "edge_ngram")) { NamedAnalyzer analyzer = indexAnalyzers.get("my_analyzer"); @@ -87,7 +87,7 @@ public void testPreConfiguredTokenizer() throws IOException { Version version = VersionUtils.randomVersionBetween( random(), LegacyESVersion.fromString("7.0.0"), - VersionUtils.getPreviousVersion(LegacyESVersion.fromString("7.3.0")) + VersionUtils.getPreviousReleasedVersion(LegacyESVersion.fromString("7.3.0")) ); try (IndexAnalyzers indexAnalyzers = buildAnalyzers(version, "edgeNGram")) { NamedAnalyzer analyzer = indexAnalyzers.get("my_analyzer"); diff --git a/modules/analysis-common/src/test/java/org/opensearch/analysis/common/WordDelimiterGraphTokenFilterFactoryTests.java b/modules/analysis-common/src/test/java/org/opensearch/analysis/common/WordDelimiterGraphTokenFilterFactoryTests.java index 6129971a69e18..1d47388c937c4 100644 --- a/modules/analysis-common/src/test/java/org/opensearch/analysis/common/WordDelimiterGraphTokenFilterFactoryTests.java +++ b/modules/analysis-common/src/test/java/org/opensearch/analysis/common/WordDelimiterGraphTokenFilterFactoryTests.java @@ -211,7 +211,7 @@ public void testPreconfiguredFilter() throws IOException { VersionUtils.randomVersionBetween( random(), LegacyESVersion.V_7_0_0, - VersionUtils.getPreviousVersion(LegacyESVersion.V_7_3_0) + VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_3_0) ) ) .put("index.analysis.analyzer.my_analyzer.tokenizer", "standard") diff --git a/server/src/main/java/org/opensearch/Version.java b/server/src/main/java/org/opensearch/Version.java index cd0bf7b8d8174..bef78c211c102 100644 --- a/server/src/main/java/org/opensearch/Version.java +++ b/server/src/main/java/org/opensearch/Version.java @@ -281,8 +281,8 @@ public boolean onOrBefore(Version version) { // LegacyESVersion major 7 is equivalent to Version major 1 public int compareMajor(Version other) { - int m = major == 1 ? 7 : major == 2 ? 8 : major; - int om = other.major == 1 ? 7 : other.major == 2 ? 8 : other.major; + int m = major == 1 ? 7 : major == 2 ? 8 : major == 3 ? 9 : major; + int om = other.major == 1 ? 7 : other.major == 2 ? 8 : major == 3 ? 9 : other.major; return Integer.compare(m, om); } @@ -396,6 +396,10 @@ private Version computeMinIndexCompatVersion() { bwcMajor = major - 1; } final int bwcMinor = 0; + // todo remove when LegacyESVersion is removed + if (major == 3) { + return Version.min(this, fromId((bwcMajor * 1000000 + bwcMinor * 10000 + 99) ^ MASK)); + } return Version.min(this, fromId((bwcMajor * 1000000 + bwcMinor * 10000 + 99))); } @@ -409,16 +413,12 @@ public boolean isCompatible(Version version) { // OpenSearch version 2 is the functional equivalent of predecessor unreleased version "8" // todo refactor this logic after removing deprecated features int a = major; - if (major == 1) { - a = 7; - } else if (major == 2) { - a = 8; + if (major <= 3) { + a += 6; // for legacy compatibility up to version 3.0 (to compare minCompat) } int b = version.major; - if (version.major == 1) { - b = 7; - } else if (version.major == 2) { - b = 8; + if (version.major <= 3) { + b += 6; } assert compatible == false || Math.max(a, b) - Math.min(a, b) <= 1; diff --git a/server/src/test/java/org/opensearch/LegacyESVersionTests.java b/server/src/test/java/org/opensearch/LegacyESVersionTests.java index 8fb3636dd8b2c..ea1ed41676e26 100644 --- a/server/src/test/java/org/opensearch/LegacyESVersionTests.java +++ b/server/src/test/java/org/opensearch/LegacyESVersionTests.java @@ -68,7 +68,10 @@ public void testVersionComparison() { } public void testMin() { - assertEquals(VersionUtils.getPreviousVersion(), LegacyESVersion.min(Version.CURRENT, VersionUtils.getPreviousVersion())); + assertEquals( + VersionUtils.getPreviousReleasedVersion(), + LegacyESVersion.min(Version.CURRENT, VersionUtils.getPreviousReleasedVersion()) + ); assertEquals(LegacyESVersion.fromString("7.0.1"), LegacyESVersion.min(LegacyESVersion.fromString("7.0.1"), Version.CURRENT)); Version legacyVersion = VersionUtils.randomLegacyVersion(random()); Version opensearchVersion = VersionUtils.randomOpenSearchVersion(random()); diff --git a/server/src/test/java/org/opensearch/VersionTests.java b/server/src/test/java/org/opensearch/VersionTests.java index beff71eceab0d..8963fa76a52e7 100644 --- a/server/src/test/java/org/opensearch/VersionTests.java +++ b/server/src/test/java/org/opensearch/VersionTests.java @@ -95,7 +95,7 @@ public void testVersionComparison() { } public void testMin() { - assertEquals(VersionUtils.getPreviousVersion(), Version.min(Version.CURRENT, VersionUtils.getPreviousVersion())); + assertEquals(VersionUtils.getPreviousReleasedVersion(), Version.min(Version.CURRENT, VersionUtils.getPreviousReleasedVersion())); assertEquals(LegacyESVersion.fromString("7.0.1"), Version.min(LegacyESVersion.fromString("7.0.1"), Version.CURRENT)); Version version = VersionUtils.randomVersion(random()); Version version1 = VersionUtils.randomVersion(random()); @@ -107,7 +107,7 @@ public void testMin() { } public void testMax() { - assertEquals(Version.CURRENT, Version.max(Version.CURRENT, VersionUtils.getPreviousVersion())); + assertEquals(Version.CURRENT, Version.max(Version.CURRENT, VersionUtils.getPreviousReleasedVersion())); assertEquals(Version.CURRENT, Version.max(Version.fromString("1.0.1"), Version.CURRENT)); Version version = VersionUtils.randomVersion(random()); Version version1 = VersionUtils.randomVersion(random()); @@ -236,6 +236,8 @@ public void testOpenSearchMinIndexCompatVersion() { major = 7; } else if (opensearchMajor == 2) { major = 8; + } else if (opensearchMajor == 3) { + major = 9; } Version expected = VersionUtils.getFirstVersionOfMajor(candidates, major - 1); Version actual = opensearchVersion.minimumIndexCompatibilityVersion(); @@ -245,6 +247,27 @@ public void testOpenSearchMinIndexCompatVersion() { assertEquals(expected.revision, actual.revision); } + /** test first version of opensearch compatibility that does not support legacy versions */ + public void testOpenSearchPreLegacyRemoval() { + Version opensearchVersion = Version.fromString("3.0.0"); + int opensearchMajor = opensearchVersion.major; + List candidates = VersionUtils.allOpenSearchVersions(); + Version expectedMinIndexCompat = VersionUtils.getFirstVersionOfMajor(candidates, opensearchMajor - 1); + Version actualMinIndexCompat = opensearchVersion.minimumIndexCompatibilityVersion(); + + Version expectedMinCompat = VersionUtils.getPreviousVersion(opensearchVersion); + expectedMinCompat = Version.fromId((expectedMinCompat.major * 1000000 + expectedMinCompat.minor * 10000 + 99) ^ MASK); + Version actualMinCompat = opensearchVersion.minimumCompatibilityVersion(); + // since some legacy versions still support build (alpha, beta, RC) we check major minor revision only + assertEquals(expectedMinIndexCompat.major, actualMinIndexCompat.major); + assertEquals(expectedMinIndexCompat.minor, actualMinIndexCompat.minor); + assertEquals(expectedMinIndexCompat.revision, actualMinIndexCompat.revision); + + assertEquals(expectedMinCompat.major, actualMinCompat.major); + assertEquals(expectedMinCompat.minor, actualMinCompat.minor); + assertEquals(expectedMinCompat.revision, actualMinCompat.revision); + } + public void testToString() { assertEquals("2.0.0-beta1", Version.fromString("2.0.0-beta1").toString()); assertEquals("5.0.0-alpha1", Version.fromId(5000001).toString()); diff --git a/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java b/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java index c84279a0782c3..c9d9dc5a2416c 100644 --- a/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java +++ b/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java @@ -44,7 +44,6 @@ import java.util.Locale; -import static org.opensearch.test.VersionUtils.getPreviousVersion; import static org.opensearch.test.VersionUtils.randomVersionBetween; import static org.hamcrest.core.IsEqual.equalTo; @@ -78,7 +77,13 @@ public void testBwcSerialization() throws Exception { for (int runs = 0; runs < randomIntBetween(5, 20); runs++) { // Generate a random cluster health request in version < 7.2.0 and serializes it final BytesStreamOutput out = new BytesStreamOutput(); - out.setVersion(randomVersionBetween(random(), VersionUtils.getFirstVersion(), getPreviousVersion(LegacyESVersion.V_7_2_0))); + out.setVersion( + randomVersionBetween( + random(), + VersionUtils.getFirstVersion(), + VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_2_0) + ) + ); final ClusterHealthRequest expected = randomRequest(); { @@ -133,7 +138,13 @@ public void testBwcSerialization() throws Exception { // Serialize to node in version < 7.2.0 final BytesStreamOutput out = new BytesStreamOutput(); - out.setVersion(randomVersionBetween(random(), VersionUtils.getFirstVersion(), getPreviousVersion(LegacyESVersion.V_7_2_0))); + out.setVersion( + randomVersionBetween( + random(), + VersionUtils.getFirstVersion(), + VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_2_0) + ) + ); expected.writeTo(out); // Deserialize and check the cluster health request diff --git a/server/src/test/java/org/opensearch/action/ingest/SimulateProcessorResultTests.java b/server/src/test/java/org/opensearch/action/ingest/SimulateProcessorResultTests.java index 6fa043761882e..86b697dae4d33 100644 --- a/server/src/test/java/org/opensearch/action/ingest/SimulateProcessorResultTests.java +++ b/server/src/test/java/org/opensearch/action/ingest/SimulateProcessorResultTests.java @@ -92,10 +92,10 @@ public void testBWCDescription() throws IOException { SimulateProcessorResult simulateProcessorResult = createTestInstance(isSuccessful, isIgnoredException, hasCondition); BytesStreamOutput out = new BytesStreamOutput(); - out.setVersion(VersionUtils.getPreviousVersion(LegacyESVersion.V_7_9_0)); + out.setVersion(VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_9_0)); simulateProcessorResult.writeTo(out); StreamInput in = out.bytes().streamInput(); - in.setVersion(VersionUtils.getPreviousVersion(LegacyESVersion.V_7_9_0)); + in.setVersion(VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_9_0)); SimulateProcessorResult otherSimulateProcessorResult = new SimulateProcessorResult(in); assertNull(otherSimulateProcessorResult.getDescription()); } diff --git a/server/src/test/java/org/opensearch/cluster/FeatureAwareTests.java b/server/src/test/java/org/opensearch/cluster/FeatureAwareTests.java index 0191492dcf9d3..ea2fb7caf54ae 100644 --- a/server/src/test/java/org/opensearch/cluster/FeatureAwareTests.java +++ b/server/src/test/java/org/opensearch/cluster/FeatureAwareTests.java @@ -134,7 +134,7 @@ public void testVersion() { final Version beforeVersion = randomVersionBetween( random(), VersionUtils.getFirstVersion(), - VersionUtils.getPreviousVersion(version) + VersionUtils.getPreviousReleasedVersion(version) ); out.setVersion(beforeVersion); if (custom.getRequiredFeature().isPresent() && randomBoolean()) { diff --git a/server/src/test/java/org/opensearch/cluster/coordination/JoinTaskExecutorTests.java b/server/src/test/java/org/opensearch/cluster/coordination/JoinTaskExecutorTests.java index a019235c99743..d42c4c22d2564 100644 --- a/server/src/test/java/org/opensearch/cluster/coordination/JoinTaskExecutorTests.java +++ b/server/src/test/java/org/opensearch/cluster/coordination/JoinTaskExecutorTests.java @@ -80,7 +80,7 @@ public void testPreventJoinClusterWithNewerIndices() { expectThrows( IllegalStateException.class, - () -> JoinTaskExecutor.ensureIndexCompatibility(VersionUtils.getPreviousVersion(Version.CURRENT), metadata) + () -> JoinTaskExecutor.ensureIndexCompatibility(VersionUtils.getPreviousReleasedVersion(Version.CURRENT), metadata) ); } diff --git a/server/src/test/java/org/opensearch/cluster/metadata/DataStreamTemplateTests.java b/server/src/test/java/org/opensearch/cluster/metadata/DataStreamTemplateTests.java index 23afc23c80279..14c0d667e6b7b 100644 --- a/server/src/test/java/org/opensearch/cluster/metadata/DataStreamTemplateTests.java +++ b/server/src/test/java/org/opensearch/cluster/metadata/DataStreamTemplateTests.java @@ -39,7 +39,7 @@ protected DataStreamTemplate createTestInstance() { } public void testBackwardCompatibleSerialization() throws Exception { - Version version = VersionUtils.getPreviousVersion(Version.V_1_0_0); + Version version = VersionUtils.getPreviousReleasedVersion(Version.V_1_0_0); BytesStreamOutput out = new BytesStreamOutput(); out.setVersion(version); diff --git a/server/src/test/java/org/opensearch/cluster/metadata/MetadataIndexUpgradeServiceTests.java b/server/src/test/java/org/opensearch/cluster/metadata/MetadataIndexUpgradeServiceTests.java index cee95323b8129..4ae293d4151d0 100644 --- a/server/src/test/java/org/opensearch/cluster/metadata/MetadataIndexUpgradeServiceTests.java +++ b/server/src/test/java/org/opensearch/cluster/metadata/MetadataIndexUpgradeServiceTests.java @@ -116,7 +116,11 @@ public void testIsUpgraded() { MetadataIndexUpgradeService service = getMetadataIndexUpgradeService(); IndexMetadata src = newIndexMeta("foo", Settings.builder().put("index.refresh_interval", "-200").build()); assertFalse(service.isUpgraded(src)); - Version version = VersionUtils.randomVersionBetween(random(), VersionUtils.getFirstVersion(), VersionUtils.getPreviousVersion()); + Version version = VersionUtils.randomVersionBetween( + random(), + VersionUtils.getFirstVersion(), + VersionUtils.getPreviousReleasedVersion() + ); src = newIndexMeta("foo", Settings.builder().put(IndexMetadata.SETTING_VERSION_UPGRADED, version).build()); assertFalse(service.isUpgraded(src)); src = newIndexMeta("foo", Settings.builder().put(IndexMetadata.SETTING_VERSION_UPGRADED, Version.CURRENT).build()); @@ -129,7 +133,7 @@ public void testFailUpgrade() { Version indexUpgraded = VersionUtils.randomVersionBetween( random(), minCompat, - Version.max(minCompat, VersionUtils.getPreviousVersion(Version.CURRENT)) + Version.max(minCompat, VersionUtils.getPreviousReleasedVersion(Version.CURRENT)) ); Version indexCreated = LegacyESVersion.fromString((minCompat.major - 1) + "." + randomInt(5) + "." + randomInt(5)); final IndexMetadata metadata = newIndexMeta( diff --git a/server/src/test/java/org/opensearch/cluster/routing/allocation/IndexShardConstraintDeciderOverlapTests.java b/server/src/test/java/org/opensearch/cluster/routing/allocation/IndexShardConstraintDeciderOverlapTests.java index 773c82be55ead..ce82e29c89d8a 100644 --- a/server/src/test/java/org/opensearch/cluster/routing/allocation/IndexShardConstraintDeciderOverlapTests.java +++ b/server/src/test/java/org/opensearch/cluster/routing/allocation/IndexShardConstraintDeciderOverlapTests.java @@ -116,7 +116,7 @@ public void testNodeVersionCompatibilityOverlap() { // Add an old version node and exclude a new version node DiscoveryNodes.Builder nb = DiscoveryNodes.builder(clusterState.nodes()) - .add(newNode("old_node", VersionUtils.getPreviousVersion())); + .add(newNode("old_node", VersionUtils.getPreviousReleasedVersion())); clusterState = ClusterState.builder(clusterState).nodes(nb.build()).build(); buildAllocationService("node_0"); diff --git a/server/src/test/java/org/opensearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java b/server/src/test/java/org/opensearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java index 5972cc9981254..aae43250f5347 100644 --- a/server/src/test/java/org/opensearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java +++ b/server/src/test/java/org/opensearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java @@ -164,7 +164,7 @@ public void testDoNotAllocateFromPrimary() { } clusterState = ClusterState.builder(clusterState) - .nodes(DiscoveryNodes.builder(clusterState.nodes()).add(newNode("node3", VersionUtils.getPreviousVersion()))) + .nodes(DiscoveryNodes.builder(clusterState.nodes()).add(newNode("node3", VersionUtils.getPreviousReleasedVersion()))) .build(); clusterState = strategy.reroute(clusterState, "reroute"); @@ -240,7 +240,9 @@ public void testRandom() { } else { for (int j = nodes.size(); j < numNodes; j++) { if (frequently()) { - nodes.add(newNode("node" + (nodeIdx++), randomBoolean() ? VersionUtils.getPreviousVersion() : Version.CURRENT)); + nodes.add( + newNode("node" + (nodeIdx++), randomBoolean() ? VersionUtils.getPreviousReleasedVersion() : Version.CURRENT) + ); } else { nodes.add(newNode("node" + (nodeIdx++), randomVersion(random()))); } @@ -289,9 +291,9 @@ public void testRollingRestart() { clusterState = ClusterState.builder(clusterState) .nodes( DiscoveryNodes.builder() - .add(newNode("old0", VersionUtils.getPreviousVersion())) - .add(newNode("old1", VersionUtils.getPreviousVersion())) - .add(newNode("old2", VersionUtils.getPreviousVersion())) + .add(newNode("old0", VersionUtils.getPreviousReleasedVersion())) + .add(newNode("old1", VersionUtils.getPreviousReleasedVersion())) + .add(newNode("old2", VersionUtils.getPreviousReleasedVersion())) ) .build(); clusterState = stabilize(clusterState, service); @@ -299,8 +301,8 @@ public void testRollingRestart() { clusterState = ClusterState.builder(clusterState) .nodes( DiscoveryNodes.builder() - .add(newNode("old0", VersionUtils.getPreviousVersion())) - .add(newNode("old1", VersionUtils.getPreviousVersion())) + .add(newNode("old0", VersionUtils.getPreviousReleasedVersion())) + .add(newNode("old1", VersionUtils.getPreviousReleasedVersion())) .add(newNode("new0")) ) .build(); @@ -309,7 +311,10 @@ public void testRollingRestart() { clusterState = ClusterState.builder(clusterState) .nodes( - DiscoveryNodes.builder().add(newNode("node0", VersionUtils.getPreviousVersion())).add(newNode("new1")).add(newNode("new0")) + DiscoveryNodes.builder() + .add(newNode("node0", VersionUtils.getPreviousReleasedVersion())) + .add(newNode("new1")) + .add(newNode("new0")) ) .build(); @@ -346,14 +351,14 @@ public void testRebalanceDoesNotAllocatePrimaryAndReplicasOnDifferentVersionNode buildNewFakeTransportAddress(), emptyMap(), MASTER_DATA_ROLES, - VersionUtils.getPreviousVersion() + VersionUtils.getPreviousReleasedVersion() ); final DiscoveryNode oldNode2 = new DiscoveryNode( "oldNode2", buildNewFakeTransportAddress(), emptyMap(), MASTER_DATA_ROLES, - VersionUtils.getPreviousVersion() + VersionUtils.getPreviousReleasedVersion() ); AllocationId allocationId1P = AllocationId.newInitializing(); AllocationId allocationId1R = AllocationId.newInitializing(); @@ -465,14 +470,14 @@ public void testRestoreDoesNotAllocateSnapshotOnOlderNodes() { buildNewFakeTransportAddress(), emptyMap(), MASTER_DATA_ROLES, - VersionUtils.getPreviousVersion() + VersionUtils.getPreviousReleasedVersion() ); final DiscoveryNode oldNode2 = new DiscoveryNode( "oldNode2", buildNewFakeTransportAddress(), emptyMap(), MASTER_DATA_ROLES, - VersionUtils.getPreviousVersion() + VersionUtils.getPreviousReleasedVersion() ); final Snapshot snapshot = new Snapshot("rep1", new SnapshotId("snp1", UUIDs.randomBase64UUID())); @@ -609,7 +614,7 @@ public void testMessages() { RoutingTable initialRoutingTable = RoutingTable.builder().addAsNew(metadata.index("test")).build(); RoutingNode newNode = new RoutingNode("newNode", newNode("newNode", Version.CURRENT)); - RoutingNode oldNode = new RoutingNode("oldNode", newNode("oldNode", VersionUtils.getPreviousVersion())); + RoutingNode oldNode = new RoutingNode("oldNode", newNode("oldNode", VersionUtils.getPreviousReleasedVersion())); final org.opensearch.cluster.ClusterName clusterName = org.opensearch.cluster.ClusterName.CLUSTER_NAME_SETTING.getDefault( Settings.EMPTY diff --git a/server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java b/server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java index 4c2a500bb5cd3..924775653897c 100644 --- a/server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java +++ b/server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java @@ -217,7 +217,7 @@ public void testCacheFilterReader() throws Exception { public void testLuceneVersionOnUnknownVersions() { // between two known versions, should use the lucene version of the previous version Version version = LegacyESVersion.fromString("7.10.50"); - assertEquals(VersionUtils.getPreviousVersion(Version.fromString("7.10.3")).luceneVersion, version.luceneVersion); + assertEquals(VersionUtils.getPreviousReleasedVersion(Version.fromString("7.10.3")).luceneVersion, version.luceneVersion); // too old version, major should be the oldest supported lucene version minus 1 version = LegacyESVersion.fromString("5.2.1"); diff --git a/server/src/test/java/org/opensearch/index/IndexSettingsTests.java b/server/src/test/java/org/opensearch/index/IndexSettingsTests.java index d67534bbfbddf..434253ff6d14f 100644 --- a/server/src/test/java/org/opensearch/index/IndexSettingsTests.java +++ b/server/src/test/java/org/opensearch/index/IndexSettingsTests.java @@ -61,7 +61,7 @@ public class IndexSettingsTests extends OpenSearchTestCase { public void testRunListener() { - Version version = VersionUtils.getPreviousVersion(); + Version version = VersionUtils.getPreviousReleasedVersion(); Settings theSettings = Settings.builder() .put(IndexMetadata.SETTING_VERSION_CREATED, version) .put(IndexMetadata.SETTING_INDEX_UUID, "0xdeadbeef") @@ -87,7 +87,7 @@ public void testRunListener() { } public void testSettingsUpdateValidator() { - Version version = VersionUtils.getPreviousVersion(); + Version version = VersionUtils.getPreviousReleasedVersion(); Settings theSettings = Settings.builder() .put(IndexMetadata.SETTING_VERSION_CREATED, version) .put(IndexMetadata.SETTING_INDEX_UUID, "0xdeadbeef") @@ -120,7 +120,7 @@ public void testSettingsUpdateValidator() { } public void testMergedSettingsArePassed() { - Version version = VersionUtils.getPreviousVersion(); + Version version = VersionUtils.getPreviousReleasedVersion(); Settings theSettings = Settings.builder() .put(IndexMetadata.SETTING_VERSION_CREATED, version) .put(IndexMetadata.SETTING_INDEX_UUID, "0xdeadbeef") @@ -158,7 +158,7 @@ public void testMergedSettingsArePassed() { } public void testSettingsConsistency() { - Version version = VersionUtils.getPreviousVersion(); + Version version = VersionUtils.getPreviousReleasedVersion(); IndexMetadata metadata = newIndexMeta("index", Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, version).build()); IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY); assertEquals(version, settings.getIndexVersionCreated()); diff --git a/server/src/test/java/org/opensearch/index/analysis/AnalysisRegistryTests.java b/server/src/test/java/org/opensearch/index/analysis/AnalysisRegistryTests.java index cbc189be491cd..ccb8fe08a65f4 100644 --- a/server/src/test/java/org/opensearch/index/analysis/AnalysisRegistryTests.java +++ b/server/src/test/java/org/opensearch/index/analysis/AnalysisRegistryTests.java @@ -449,7 +449,7 @@ public Map> getTokenFilters() { assertWarnings("Using deprecated token filter [deprecated]"); indexSettings = Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, VersionUtils.getPreviousVersion()) + .put(IndexMetadata.SETTING_VERSION_CREATED, VersionUtils.getPreviousReleasedVersion()) .put("index.analysis.filter.deprecated.type", "deprecated_normalizer") .putList("index.analysis.normalizer.custom.filter", "lowercase", "deprecated_normalizer") .put("index.analysis.filter.deprecated.type", "deprecated") diff --git a/server/src/test/java/org/opensearch/index/analysis/PreConfiguredTokenFilterTests.java b/server/src/test/java/org/opensearch/index/analysis/PreConfiguredTokenFilterTests.java index 67c865be70ac5..b069065261d03 100644 --- a/server/src/test/java/org/opensearch/index/analysis/PreConfiguredTokenFilterTests.java +++ b/server/src/test/java/org/opensearch/index/analysis/PreConfiguredTokenFilterTests.java @@ -149,7 +149,7 @@ public boolean incrementToken() { ); assertSame(tff_v1_1, tff_v1_2); - byte major = VersionUtils.getPreviousVersion().major; + byte major = VersionUtils.getPreviousReleasedVersion().major; Version version2 = Version.fromString(major - 1 + ".0.0"); Settings settings2 = Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, version2).build(); diff --git a/server/src/test/java/org/opensearch/ingest/IngestStatsTests.java b/server/src/test/java/org/opensearch/ingest/IngestStatsTests.java index 0486c9f29f86e..baedc5ef2559d 100644 --- a/server/src/test/java/org/opensearch/ingest/IngestStatsTests.java +++ b/server/src/test/java/org/opensearch/ingest/IngestStatsTests.java @@ -66,11 +66,11 @@ public void testBWCIngestProcessorTypeStats() throws IOException { // legacy output logic BytesStreamOutput out = new BytesStreamOutput(); - out.setVersion(VersionUtils.getPreviousVersion(LegacyESVersion.V_7_6_0)); + out.setVersion(VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_6_0)); expectedIngestStats.writeTo(out); StreamInput in = out.bytes().streamInput(); - in.setVersion(VersionUtils.getPreviousVersion(LegacyESVersion.V_7_6_0)); + in.setVersion(VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_6_0)); IngestStats serializedStats = new IngestStats(in); assertIngestStats(expectedIngestStats, serializedStats, true, false); } diff --git a/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java b/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java index 873176f5d42be..796dabd1e228a 100644 --- a/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java +++ b/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java @@ -64,6 +64,7 @@ import org.opensearch.persistent.TestPersistentTasksPlugin.TestParams; import org.opensearch.persistent.TestPersistentTasksPlugin.TestPersistentTasksExecutor; import org.opensearch.test.AbstractDiffableSerializationTestCase; +import org.opensearch.test.VersionUtils; import java.io.IOException; import java.util.ArrayList; @@ -79,7 +80,6 @@ import static org.opensearch.persistent.PersistentTasksExecutor.NO_NODE_FOUND; import static org.opensearch.test.VersionUtils.allReleasedVersions; import static org.opensearch.test.VersionUtils.compatibleFutureVersion; -import static org.opensearch.test.VersionUtils.getPreviousVersion; import static org.opensearch.test.VersionUtils.randomVersionBetween; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.not; @@ -281,7 +281,7 @@ public void testMinVersionSerialization() throws IOException { PersistentTasksCustomMetadata.Builder tasks = PersistentTasksCustomMetadata.builder(); Version minVersion = allReleasedVersions().stream().filter(Version::isRelease).findFirst().orElseThrow(NoSuchElementException::new); - final Version streamVersion = randomVersionBetween(random(), minVersion, getPreviousVersion(Version.CURRENT)); + final Version streamVersion = randomVersionBetween(random(), minVersion, VersionUtils.getPreviousReleasedVersion(Version.CURRENT)); tasks.addTask( "test_compatible_version", TestPersistentTasksExecutor.NAME, diff --git a/server/src/test/java/org/opensearch/rest/action/document/RestIndexActionTests.java b/server/src/test/java/org/opensearch/rest/action/document/RestIndexActionTests.java index 5a1d43ff5dd04..d129d2f9446c4 100644 --- a/server/src/test/java/org/opensearch/rest/action/document/RestIndexActionTests.java +++ b/server/src/test/java/org/opensearch/rest/action/document/RestIndexActionTests.java @@ -98,7 +98,7 @@ public void testAutoIdDefaultsToOptypeCreate() { public void testAutoIdDefaultsToOptypeIndexForOlderVersions() { checkAutoIdOpType( - VersionUtils.randomVersionBetween(random(), null, VersionUtils.getPreviousVersion(LegacyESVersion.V_7_5_0)), + VersionUtils.randomVersionBetween(random(), null, VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_5_0)), DocWriteRequest.OpType.INDEX ); } diff --git a/server/src/test/java/org/opensearch/search/aggregations/metrics/InternalScriptedMetricTests.java b/server/src/test/java/org/opensearch/search/aggregations/metrics/InternalScriptedMetricTests.java index 69c53d1a526e8..93c35dd7d71ad 100644 --- a/server/src/test/java/org/opensearch/search/aggregations/metrics/InternalScriptedMetricTests.java +++ b/server/src/test/java/org/opensearch/search/aggregations/metrics/InternalScriptedMetricTests.java @@ -290,7 +290,11 @@ public void testOldSerialization() throws IOException { original, getNamedWriteableRegistry(), InternalAggregation.class, - VersionUtils.randomVersionBetween(random(), LegacyESVersion.V_7_0_0, VersionUtils.getPreviousVersion(LegacyESVersion.V_7_8_0)) + VersionUtils.randomVersionBetween( + random(), + LegacyESVersion.V_7_0_0, + VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_8_0) + ) ); assertThat(roundTripped, equalTo(original)); @@ -311,7 +315,7 @@ public void testOldSerialization() throws IOException { VersionUtils.randomVersionBetween( random(), LegacyESVersion.V_7_0_0, - VersionUtils.getPreviousVersion(LegacyESVersion.V_7_8_0) + VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_8_0) ) ) ); diff --git a/server/src/test/java/org/opensearch/transport/TransportServiceHandshakeTests.java b/server/src/test/java/org/opensearch/transport/TransportServiceHandshakeTests.java index 8463d9268e760..6568a1b280582 100644 --- a/server/src/test/java/org/opensearch/transport/TransportServiceHandshakeTests.java +++ b/server/src/test/java/org/opensearch/transport/TransportServiceHandshakeTests.java @@ -175,7 +175,7 @@ public void testIncompatibleVersions() { NetworkHandle handleB = startServices( "TS_B", settings, - VersionUtils.getPreviousVersion(Version.CURRENT.minimumCompatibilityVersion()) + VersionUtils.getPreviousReleasedVersion(Version.CURRENT.minimumCompatibilityVersion()) ); DiscoveryNode discoveryNode = new DiscoveryNode( "", diff --git a/test/framework/src/main/java/org/opensearch/test/VersionUtils.java b/test/framework/src/main/java/org/opensearch/test/VersionUtils.java index 0f8525285fd08..e87dfe59bb618 100644 --- a/test/framework/src/main/java/org/opensearch/test/VersionUtils.java +++ b/test/framework/src/main/java/org/opensearch/test/VersionUtils.java @@ -210,9 +210,31 @@ public static List allLegacyVersions() { } /** - * Get the released version before {@code version}. + * Get the version (released or unreleased) before {@code version}. */ public static Version getPreviousVersion(Version version) { + for (int i = ALL_VERSIONS.size() - 1; i >= 0; i--) { + Version v = ALL_VERSIONS.get(i); + if (v.before(version)) { + return v; + } + } + throw new IllegalArgumentException("couldn't find any versions before [" + version + "]"); + } + + /** + * Get the released version before {@link Version#CURRENT}. + */ + public static Version getPreviousVersion() { + Version version = getPreviousVersion(Version.CURRENT); + assert version.before(Version.CURRENT); + return version; + } + + /** + * Get the released version before {@code version}. + */ + public static Version getPreviousReleasedVersion(Version version) { for (int i = RELEASED_VERSIONS.size() - 1; i >= 0; i--) { Version v = RELEASED_VERSIONS.get(i); if (v.before(version)) { @@ -225,8 +247,8 @@ public static Version getPreviousVersion(Version version) { /** * Get the released version before {@link Version#CURRENT}. */ - public static Version getPreviousVersion() { - Version version = getPreviousVersion(Version.CURRENT); + public static Version getPreviousReleasedVersion() { + Version version = getPreviousReleasedVersion(Version.CURRENT); assert version.before(Version.CURRENT); return version; } @@ -352,6 +374,6 @@ public static Version randomPreviousCompatibleVersion(Random random, Version ver // TODO: change this to minimumCompatibilityVersion(), but first need to remove released/unreleased // versions so getPreviousVerison returns the *actual* previous version. Otherwise eg 8.0.0 returns say 7.0.2 for previous, // but 7.2.0 for minimum compat - return randomVersionBetween(random, version.minimumIndexCompatibilityVersion(), getPreviousVersion(version)); + return randomVersionBetween(random, version.minimumIndexCompatibilityVersion(), getPreviousReleasedVersion(version)); } } diff --git a/test/framework/src/test/java/org/opensearch/test/VersionUtilsTests.java b/test/framework/src/test/java/org/opensearch/test/VersionUtilsTests.java index de1f650aff20c..ddc6bdd4f1d55 100644 --- a/test/framework/src/test/java/org/opensearch/test/VersionUtilsTests.java +++ b/test/framework/src/test/java/org/opensearch/test/VersionUtilsTests.java @@ -92,8 +92,8 @@ public void testRandomVersionBetween() { got = VersionUtils.randomVersionBetween(random(), LegacyESVersion.fromId(7000099), null); assertTrue(got.onOrAfter(LegacyESVersion.fromId(7000099))); assertTrue(got.onOrBefore(Version.CURRENT)); - got = VersionUtils.randomVersionBetween(random(), VersionUtils.getPreviousVersion(), null); - assertTrue(got.onOrAfter(VersionUtils.getPreviousVersion())); + got = VersionUtils.randomVersionBetween(random(), VersionUtils.getPreviousReleasedVersion(), null); + assertTrue(got.onOrAfter(VersionUtils.getPreviousReleasedVersion())); assertTrue(got.onOrBefore(Version.CURRENT)); // range of one From dd081fcda18c9c239053dbae5f3ab49e8e443c60 Mon Sep 17 00:00:00 2001 From: Nicholas Walter Knize Date: Sat, 2 Apr 2022 15:39:21 -0500 Subject: [PATCH 2/8] fix for version 3 Signed-off-by: Nicholas Walter Knize --- server/src/main/java/org/opensearch/Version.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/server/src/main/java/org/opensearch/Version.java b/server/src/main/java/org/opensearch/Version.java index bef78c211c102..951d88d4b7197 100644 --- a/server/src/main/java/org/opensearch/Version.java +++ b/server/src/main/java/org/opensearch/Version.java @@ -339,11 +339,7 @@ protected Version computeMinCompatVersion() { } else if (major == 6) { // force the minimum compatibility for version 6 to 5.6 since we don't reference version 5 anymore return LegacyESVersion.fromId(5060099); - } - /* - * TODO - uncomment this logic from OpenSearch version 3 onwards - * - else if (major >= 3) { + } else if (major >= 3) { // all major versions from 3 onwards are compatible with last minor series of the previous major Version bwcVersion = null; @@ -358,7 +354,6 @@ else if (major >= 3) { } return bwcVersion == null ? this : bwcVersion; } - */ return Version.min(this, fromId(maskId((int) major * 1000000 + 0 * 10000 + 99))); } From 0d91eea150f3b2e92c544b57a7feac83c6f3e5e5 Mon Sep 17 00:00:00 2001 From: Nicholas Walter Knize Date: Sat, 2 Apr 2022 16:28:57 -0500 Subject: [PATCH 3/8] continue to support legacy versions, for now Signed-off-by: Nicholas Walter Knize --- server/src/main/java/org/opensearch/Version.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/org/opensearch/Version.java b/server/src/main/java/org/opensearch/Version.java index 951d88d4b7197..6c04febf5fdb5 100644 --- a/server/src/main/java/org/opensearch/Version.java +++ b/server/src/main/java/org/opensearch/Version.java @@ -247,7 +247,7 @@ private static Version fromStringSlow(String version) { public final byte build; public final org.apache.lucene.util.Version luceneVersion; - Version(int id, org.apache.lucene.util.Version luceneVersion) { + protected Version(int id, org.apache.lucene.util.Version luceneVersion) { // flip the 28th bit of the ID; identify as an opensearch vs legacy system: // we start from version 1 for opensearch, so ignore the 0 (empty) version if (id != 0) { @@ -261,6 +261,8 @@ private static Version fromStringSlow(String version) { this.revision = (byte) ((id / 100) % 100); this.build = (byte) (id % 100); this.luceneVersion = Objects.requireNonNull(luceneVersion); + this.minCompatVersion = null; + this.minIndexCompatVersion = null; } public boolean after(Version version) { @@ -308,11 +310,11 @@ static class DeclaredVersionsHolder { // lazy initialized because we don't yet have the declared versions ready when instantiating the cached Version // instances - private Version minCompatVersion; + protected Version minCompatVersion; // lazy initialized because we don't yet have the declared versions ready when instantiating the cached Version // instances - private Version minIndexCompatVersion; + protected Version minIndexCompatVersion; /** * Returns the minimum compatible version based on the current @@ -339,8 +341,9 @@ protected Version computeMinCompatVersion() { } else if (major == 6) { // force the minimum compatibility for version 6 to 5.6 since we don't reference version 5 anymore return LegacyESVersion.fromId(5060099); - } else if (major >= 3) { + } else if (major >= 3 && major < 5) { // all major versions from 3 onwards are compatible with last minor series of the previous major + // todo: remove 5 check when removing LegacyESVersionTests Version bwcVersion = null; for (int i = DeclaredVersionsHolder.DECLARED_VERSIONS.size() - 1; i >= 0; i--) { From 7b12ef073ca3b33e51639491c86f01b6aac8c3b5 Mon Sep 17 00:00:00 2001 From: Nicholas Walter Knize Date: Sun, 3 Apr 2022 00:50:15 -0500 Subject: [PATCH 4/8] remove unneeded method visibility Signed-off-by: Nicholas Walter Knize --- server/src/main/java/org/opensearch/Version.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/org/opensearch/Version.java b/server/src/main/java/org/opensearch/Version.java index 6c04febf5fdb5..53ecd472c3630 100644 --- a/server/src/main/java/org/opensearch/Version.java +++ b/server/src/main/java/org/opensearch/Version.java @@ -247,7 +247,7 @@ private static Version fromStringSlow(String version) { public final byte build; public final org.apache.lucene.util.Version luceneVersion; - protected Version(int id, org.apache.lucene.util.Version luceneVersion) { + Version(int id, org.apache.lucene.util.Version luceneVersion) { // flip the 28th bit of the ID; identify as an opensearch vs legacy system: // we start from version 1 for opensearch, so ignore the 0 (empty) version if (id != 0) { @@ -261,8 +261,6 @@ protected Version(int id, org.apache.lucene.util.Version luceneVersion) { this.revision = (byte) ((id / 100) % 100); this.build = (byte) (id % 100); this.luceneVersion = Objects.requireNonNull(luceneVersion); - this.minCompatVersion = null; - this.minIndexCompatVersion = null; } public boolean after(Version version) { @@ -310,11 +308,11 @@ static class DeclaredVersionsHolder { // lazy initialized because we don't yet have the declared versions ready when instantiating the cached Version // instances - protected Version minCompatVersion; + private Version minCompatVersion; // lazy initialized because we don't yet have the declared versions ready when instantiating the cached Version // instances - protected Version minIndexCompatVersion; + private Version minIndexCompatVersion; /** * Returns the minimum compatible version based on the current From 48e54623dd2e9bab97aa74a71469c1a892cb98af Mon Sep 17 00:00:00 2001 From: Nicholas Walter Knize Date: Sun, 3 Apr 2022 20:56:44 -0500 Subject: [PATCH 5/8] revert previous for released only Signed-off-by: Nicholas Walter Knize --- .../plugins/RemovePluginCommandTests.java | 2 +- .../common/EdgeNGramTokenizerTests.java | 4 +-- ...DelimiterGraphTokenFilterFactoryTests.java | 2 +- .../org/opensearch/LegacyESVersionTests.java | 5 +-- .../java/org/opensearch/VersionTests.java | 4 +-- .../health/ClusterHealthRequestTests.java | 12 ++----- .../ingest/SimulateProcessorResultTests.java | 4 +-- .../opensearch/cluster/FeatureAwareTests.java | 2 +- .../coordination/JoinTaskExecutorTests.java | 2 +- .../metadata/DataStreamTemplateTests.java | 2 +- .../MetadataIndexUpgradeServiceTests.java | 8 ++--- ...dexShardConstraintDeciderOverlapTests.java | 2 +- .../NodeVersionAllocationDeciderTests.java | 31 ++++++++----------- .../common/lucene/uid/VersionsTests.java | 2 +- .../opensearch/index/IndexSettingsTests.java | 8 ++--- .../index/analysis/AnalysisRegistryTests.java | 2 +- .../PreConfiguredTokenFilterTests.java | 2 +- .../opensearch/ingest/IngestStatsTests.java | 4 +-- .../PersistentTasksCustomMetadataTests.java | 2 +- .../action/document/RestIndexActionTests.java | 2 +- .../metrics/InternalScriptedMetricTests.java | 8 ++--- .../TransportServiceHandshakeTests.java | 2 +- .../org/opensearch/test/VersionUtils.java | 30 +++--------------- .../opensearch/test/VersionUtilsTests.java | 4 +-- 24 files changed, 50 insertions(+), 96 deletions(-) diff --git a/distribution/tools/plugin-cli/src/test/java/org/opensearch/plugins/RemovePluginCommandTests.java b/distribution/tools/plugin-cli/src/test/java/org/opensearch/plugins/RemovePluginCommandTests.java index 72f07d2d8d0cf..8f9aa27be7e84 100644 --- a/distribution/tools/plugin-cli/src/test/java/org/opensearch/plugins/RemovePluginCommandTests.java +++ b/distribution/tools/plugin-cli/src/test/java/org/opensearch/plugins/RemovePluginCommandTests.java @@ -173,7 +173,7 @@ public void testRemoveOldVersion() throws Exception { VersionUtils.randomVersionBetween( random(), Version.CURRENT.minimumIndexCompatibilityVersion(), - VersionUtils.getPreviousReleasedVersion() + VersionUtils.getPreviousVersion() ) ); removePlugin("fake", home, randomBoolean()); diff --git a/modules/analysis-common/src/test/java/org/opensearch/analysis/common/EdgeNGramTokenizerTests.java b/modules/analysis-common/src/test/java/org/opensearch/analysis/common/EdgeNGramTokenizerTests.java index f5e07de6759c4..07ac0d69428af 100644 --- a/modules/analysis-common/src/test/java/org/opensearch/analysis/common/EdgeNGramTokenizerTests.java +++ b/modules/analysis-common/src/test/java/org/opensearch/analysis/common/EdgeNGramTokenizerTests.java @@ -73,7 +73,7 @@ public void testPreConfiguredTokenizer() throws IOException { Version version = VersionUtils.randomVersionBetween( random(), LegacyESVersion.fromString("7.0.0"), - VersionUtils.getPreviousReleasedVersion(LegacyESVersion.fromString("7.3.0")) + VersionUtils.getPreviousVersion(LegacyESVersion.fromString("7.3.0")) ); try (IndexAnalyzers indexAnalyzers = buildAnalyzers(version, "edge_ngram")) { NamedAnalyzer analyzer = indexAnalyzers.get("my_analyzer"); @@ -87,7 +87,7 @@ public void testPreConfiguredTokenizer() throws IOException { Version version = VersionUtils.randomVersionBetween( random(), LegacyESVersion.fromString("7.0.0"), - VersionUtils.getPreviousReleasedVersion(LegacyESVersion.fromString("7.3.0")) + VersionUtils.getPreviousVersion(LegacyESVersion.fromString("7.3.0")) ); try (IndexAnalyzers indexAnalyzers = buildAnalyzers(version, "edgeNGram")) { NamedAnalyzer analyzer = indexAnalyzers.get("my_analyzer"); diff --git a/modules/analysis-common/src/test/java/org/opensearch/analysis/common/WordDelimiterGraphTokenFilterFactoryTests.java b/modules/analysis-common/src/test/java/org/opensearch/analysis/common/WordDelimiterGraphTokenFilterFactoryTests.java index 1d47388c937c4..6129971a69e18 100644 --- a/modules/analysis-common/src/test/java/org/opensearch/analysis/common/WordDelimiterGraphTokenFilterFactoryTests.java +++ b/modules/analysis-common/src/test/java/org/opensearch/analysis/common/WordDelimiterGraphTokenFilterFactoryTests.java @@ -211,7 +211,7 @@ public void testPreconfiguredFilter() throws IOException { VersionUtils.randomVersionBetween( random(), LegacyESVersion.V_7_0_0, - VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_3_0) + VersionUtils.getPreviousVersion(LegacyESVersion.V_7_3_0) ) ) .put("index.analysis.analyzer.my_analyzer.tokenizer", "standard") diff --git a/server/src/test/java/org/opensearch/LegacyESVersionTests.java b/server/src/test/java/org/opensearch/LegacyESVersionTests.java index ea1ed41676e26..8fb3636dd8b2c 100644 --- a/server/src/test/java/org/opensearch/LegacyESVersionTests.java +++ b/server/src/test/java/org/opensearch/LegacyESVersionTests.java @@ -68,10 +68,7 @@ public void testVersionComparison() { } public void testMin() { - assertEquals( - VersionUtils.getPreviousReleasedVersion(), - LegacyESVersion.min(Version.CURRENT, VersionUtils.getPreviousReleasedVersion()) - ); + assertEquals(VersionUtils.getPreviousVersion(), LegacyESVersion.min(Version.CURRENT, VersionUtils.getPreviousVersion())); assertEquals(LegacyESVersion.fromString("7.0.1"), LegacyESVersion.min(LegacyESVersion.fromString("7.0.1"), Version.CURRENT)); Version legacyVersion = VersionUtils.randomLegacyVersion(random()); Version opensearchVersion = VersionUtils.randomOpenSearchVersion(random()); diff --git a/server/src/test/java/org/opensearch/VersionTests.java b/server/src/test/java/org/opensearch/VersionTests.java index 8963fa76a52e7..7e5f1caea7fda 100644 --- a/server/src/test/java/org/opensearch/VersionTests.java +++ b/server/src/test/java/org/opensearch/VersionTests.java @@ -95,7 +95,7 @@ public void testVersionComparison() { } public void testMin() { - assertEquals(VersionUtils.getPreviousReleasedVersion(), Version.min(Version.CURRENT, VersionUtils.getPreviousReleasedVersion())); + assertEquals(VersionUtils.getPreviousVersion(), Version.min(Version.CURRENT, VersionUtils.getPreviousVersion())); assertEquals(LegacyESVersion.fromString("7.0.1"), Version.min(LegacyESVersion.fromString("7.0.1"), Version.CURRENT)); Version version = VersionUtils.randomVersion(random()); Version version1 = VersionUtils.randomVersion(random()); @@ -107,7 +107,7 @@ public void testMin() { } public void testMax() { - assertEquals(Version.CURRENT, Version.max(Version.CURRENT, VersionUtils.getPreviousReleasedVersion())); + assertEquals(Version.CURRENT, Version.max(Version.CURRENT, VersionUtils.getPreviousVersion())); assertEquals(Version.CURRENT, Version.max(Version.fromString("1.0.1"), Version.CURRENT)); Version version = VersionUtils.randomVersion(random()); Version version1 = VersionUtils.randomVersion(random()); diff --git a/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java b/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java index c9d9dc5a2416c..4252bbf49e2b4 100644 --- a/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java +++ b/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java @@ -78,11 +78,7 @@ public void testBwcSerialization() throws Exception { // Generate a random cluster health request in version < 7.2.0 and serializes it final BytesStreamOutput out = new BytesStreamOutput(); out.setVersion( - randomVersionBetween( - random(), - VersionUtils.getFirstVersion(), - VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_2_0) - ) + randomVersionBetween(random(), VersionUtils.getFirstVersion(), VersionUtils.getPreviousVersion(LegacyESVersion.V_7_2_0)) ); final ClusterHealthRequest expected = randomRequest(); @@ -139,11 +135,7 @@ public void testBwcSerialization() throws Exception { // Serialize to node in version < 7.2.0 final BytesStreamOutput out = new BytesStreamOutput(); out.setVersion( - randomVersionBetween( - random(), - VersionUtils.getFirstVersion(), - VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_2_0) - ) + randomVersionBetween(random(), VersionUtils.getFirstVersion(), VersionUtils.getPreviousVersion(LegacyESVersion.V_7_2_0)) ); expected.writeTo(out); diff --git a/server/src/test/java/org/opensearch/action/ingest/SimulateProcessorResultTests.java b/server/src/test/java/org/opensearch/action/ingest/SimulateProcessorResultTests.java index 86b697dae4d33..6fa043761882e 100644 --- a/server/src/test/java/org/opensearch/action/ingest/SimulateProcessorResultTests.java +++ b/server/src/test/java/org/opensearch/action/ingest/SimulateProcessorResultTests.java @@ -92,10 +92,10 @@ public void testBWCDescription() throws IOException { SimulateProcessorResult simulateProcessorResult = createTestInstance(isSuccessful, isIgnoredException, hasCondition); BytesStreamOutput out = new BytesStreamOutput(); - out.setVersion(VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_9_0)); + out.setVersion(VersionUtils.getPreviousVersion(LegacyESVersion.V_7_9_0)); simulateProcessorResult.writeTo(out); StreamInput in = out.bytes().streamInput(); - in.setVersion(VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_9_0)); + in.setVersion(VersionUtils.getPreviousVersion(LegacyESVersion.V_7_9_0)); SimulateProcessorResult otherSimulateProcessorResult = new SimulateProcessorResult(in); assertNull(otherSimulateProcessorResult.getDescription()); } diff --git a/server/src/test/java/org/opensearch/cluster/FeatureAwareTests.java b/server/src/test/java/org/opensearch/cluster/FeatureAwareTests.java index ea2fb7caf54ae..0191492dcf9d3 100644 --- a/server/src/test/java/org/opensearch/cluster/FeatureAwareTests.java +++ b/server/src/test/java/org/opensearch/cluster/FeatureAwareTests.java @@ -134,7 +134,7 @@ public void testVersion() { final Version beforeVersion = randomVersionBetween( random(), VersionUtils.getFirstVersion(), - VersionUtils.getPreviousReleasedVersion(version) + VersionUtils.getPreviousVersion(version) ); out.setVersion(beforeVersion); if (custom.getRequiredFeature().isPresent() && randomBoolean()) { diff --git a/server/src/test/java/org/opensearch/cluster/coordination/JoinTaskExecutorTests.java b/server/src/test/java/org/opensearch/cluster/coordination/JoinTaskExecutorTests.java index d42c4c22d2564..a019235c99743 100644 --- a/server/src/test/java/org/opensearch/cluster/coordination/JoinTaskExecutorTests.java +++ b/server/src/test/java/org/opensearch/cluster/coordination/JoinTaskExecutorTests.java @@ -80,7 +80,7 @@ public void testPreventJoinClusterWithNewerIndices() { expectThrows( IllegalStateException.class, - () -> JoinTaskExecutor.ensureIndexCompatibility(VersionUtils.getPreviousReleasedVersion(Version.CURRENT), metadata) + () -> JoinTaskExecutor.ensureIndexCompatibility(VersionUtils.getPreviousVersion(Version.CURRENT), metadata) ); } diff --git a/server/src/test/java/org/opensearch/cluster/metadata/DataStreamTemplateTests.java b/server/src/test/java/org/opensearch/cluster/metadata/DataStreamTemplateTests.java index 14c0d667e6b7b..23afc23c80279 100644 --- a/server/src/test/java/org/opensearch/cluster/metadata/DataStreamTemplateTests.java +++ b/server/src/test/java/org/opensearch/cluster/metadata/DataStreamTemplateTests.java @@ -39,7 +39,7 @@ protected DataStreamTemplate createTestInstance() { } public void testBackwardCompatibleSerialization() throws Exception { - Version version = VersionUtils.getPreviousReleasedVersion(Version.V_1_0_0); + Version version = VersionUtils.getPreviousVersion(Version.V_1_0_0); BytesStreamOutput out = new BytesStreamOutput(); out.setVersion(version); diff --git a/server/src/test/java/org/opensearch/cluster/metadata/MetadataIndexUpgradeServiceTests.java b/server/src/test/java/org/opensearch/cluster/metadata/MetadataIndexUpgradeServiceTests.java index 4ae293d4151d0..cee95323b8129 100644 --- a/server/src/test/java/org/opensearch/cluster/metadata/MetadataIndexUpgradeServiceTests.java +++ b/server/src/test/java/org/opensearch/cluster/metadata/MetadataIndexUpgradeServiceTests.java @@ -116,11 +116,7 @@ public void testIsUpgraded() { MetadataIndexUpgradeService service = getMetadataIndexUpgradeService(); IndexMetadata src = newIndexMeta("foo", Settings.builder().put("index.refresh_interval", "-200").build()); assertFalse(service.isUpgraded(src)); - Version version = VersionUtils.randomVersionBetween( - random(), - VersionUtils.getFirstVersion(), - VersionUtils.getPreviousReleasedVersion() - ); + Version version = VersionUtils.randomVersionBetween(random(), VersionUtils.getFirstVersion(), VersionUtils.getPreviousVersion()); src = newIndexMeta("foo", Settings.builder().put(IndexMetadata.SETTING_VERSION_UPGRADED, version).build()); assertFalse(service.isUpgraded(src)); src = newIndexMeta("foo", Settings.builder().put(IndexMetadata.SETTING_VERSION_UPGRADED, Version.CURRENT).build()); @@ -133,7 +129,7 @@ public void testFailUpgrade() { Version indexUpgraded = VersionUtils.randomVersionBetween( random(), minCompat, - Version.max(minCompat, VersionUtils.getPreviousReleasedVersion(Version.CURRENT)) + Version.max(minCompat, VersionUtils.getPreviousVersion(Version.CURRENT)) ); Version indexCreated = LegacyESVersion.fromString((minCompat.major - 1) + "." + randomInt(5) + "." + randomInt(5)); final IndexMetadata metadata = newIndexMeta( diff --git a/server/src/test/java/org/opensearch/cluster/routing/allocation/IndexShardConstraintDeciderOverlapTests.java b/server/src/test/java/org/opensearch/cluster/routing/allocation/IndexShardConstraintDeciderOverlapTests.java index ce82e29c89d8a..773c82be55ead 100644 --- a/server/src/test/java/org/opensearch/cluster/routing/allocation/IndexShardConstraintDeciderOverlapTests.java +++ b/server/src/test/java/org/opensearch/cluster/routing/allocation/IndexShardConstraintDeciderOverlapTests.java @@ -116,7 +116,7 @@ public void testNodeVersionCompatibilityOverlap() { // Add an old version node and exclude a new version node DiscoveryNodes.Builder nb = DiscoveryNodes.builder(clusterState.nodes()) - .add(newNode("old_node", VersionUtils.getPreviousReleasedVersion())); + .add(newNode("old_node", VersionUtils.getPreviousVersion())); clusterState = ClusterState.builder(clusterState).nodes(nb.build()).build(); buildAllocationService("node_0"); diff --git a/server/src/test/java/org/opensearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java b/server/src/test/java/org/opensearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java index aae43250f5347..5972cc9981254 100644 --- a/server/src/test/java/org/opensearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java +++ b/server/src/test/java/org/opensearch/cluster/routing/allocation/NodeVersionAllocationDeciderTests.java @@ -164,7 +164,7 @@ public void testDoNotAllocateFromPrimary() { } clusterState = ClusterState.builder(clusterState) - .nodes(DiscoveryNodes.builder(clusterState.nodes()).add(newNode("node3", VersionUtils.getPreviousReleasedVersion()))) + .nodes(DiscoveryNodes.builder(clusterState.nodes()).add(newNode("node3", VersionUtils.getPreviousVersion()))) .build(); clusterState = strategy.reroute(clusterState, "reroute"); @@ -240,9 +240,7 @@ public void testRandom() { } else { for (int j = nodes.size(); j < numNodes; j++) { if (frequently()) { - nodes.add( - newNode("node" + (nodeIdx++), randomBoolean() ? VersionUtils.getPreviousReleasedVersion() : Version.CURRENT) - ); + nodes.add(newNode("node" + (nodeIdx++), randomBoolean() ? VersionUtils.getPreviousVersion() : Version.CURRENT)); } else { nodes.add(newNode("node" + (nodeIdx++), randomVersion(random()))); } @@ -291,9 +289,9 @@ public void testRollingRestart() { clusterState = ClusterState.builder(clusterState) .nodes( DiscoveryNodes.builder() - .add(newNode("old0", VersionUtils.getPreviousReleasedVersion())) - .add(newNode("old1", VersionUtils.getPreviousReleasedVersion())) - .add(newNode("old2", VersionUtils.getPreviousReleasedVersion())) + .add(newNode("old0", VersionUtils.getPreviousVersion())) + .add(newNode("old1", VersionUtils.getPreviousVersion())) + .add(newNode("old2", VersionUtils.getPreviousVersion())) ) .build(); clusterState = stabilize(clusterState, service); @@ -301,8 +299,8 @@ public void testRollingRestart() { clusterState = ClusterState.builder(clusterState) .nodes( DiscoveryNodes.builder() - .add(newNode("old0", VersionUtils.getPreviousReleasedVersion())) - .add(newNode("old1", VersionUtils.getPreviousReleasedVersion())) + .add(newNode("old0", VersionUtils.getPreviousVersion())) + .add(newNode("old1", VersionUtils.getPreviousVersion())) .add(newNode("new0")) ) .build(); @@ -311,10 +309,7 @@ public void testRollingRestart() { clusterState = ClusterState.builder(clusterState) .nodes( - DiscoveryNodes.builder() - .add(newNode("node0", VersionUtils.getPreviousReleasedVersion())) - .add(newNode("new1")) - .add(newNode("new0")) + DiscoveryNodes.builder().add(newNode("node0", VersionUtils.getPreviousVersion())).add(newNode("new1")).add(newNode("new0")) ) .build(); @@ -351,14 +346,14 @@ public void testRebalanceDoesNotAllocatePrimaryAndReplicasOnDifferentVersionNode buildNewFakeTransportAddress(), emptyMap(), MASTER_DATA_ROLES, - VersionUtils.getPreviousReleasedVersion() + VersionUtils.getPreviousVersion() ); final DiscoveryNode oldNode2 = new DiscoveryNode( "oldNode2", buildNewFakeTransportAddress(), emptyMap(), MASTER_DATA_ROLES, - VersionUtils.getPreviousReleasedVersion() + VersionUtils.getPreviousVersion() ); AllocationId allocationId1P = AllocationId.newInitializing(); AllocationId allocationId1R = AllocationId.newInitializing(); @@ -470,14 +465,14 @@ public void testRestoreDoesNotAllocateSnapshotOnOlderNodes() { buildNewFakeTransportAddress(), emptyMap(), MASTER_DATA_ROLES, - VersionUtils.getPreviousReleasedVersion() + VersionUtils.getPreviousVersion() ); final DiscoveryNode oldNode2 = new DiscoveryNode( "oldNode2", buildNewFakeTransportAddress(), emptyMap(), MASTER_DATA_ROLES, - VersionUtils.getPreviousReleasedVersion() + VersionUtils.getPreviousVersion() ); final Snapshot snapshot = new Snapshot("rep1", new SnapshotId("snp1", UUIDs.randomBase64UUID())); @@ -614,7 +609,7 @@ public void testMessages() { RoutingTable initialRoutingTable = RoutingTable.builder().addAsNew(metadata.index("test")).build(); RoutingNode newNode = new RoutingNode("newNode", newNode("newNode", Version.CURRENT)); - RoutingNode oldNode = new RoutingNode("oldNode", newNode("oldNode", VersionUtils.getPreviousReleasedVersion())); + RoutingNode oldNode = new RoutingNode("oldNode", newNode("oldNode", VersionUtils.getPreviousVersion())); final org.opensearch.cluster.ClusterName clusterName = org.opensearch.cluster.ClusterName.CLUSTER_NAME_SETTING.getDefault( Settings.EMPTY diff --git a/server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java b/server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java index 924775653897c..4c2a500bb5cd3 100644 --- a/server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java +++ b/server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java @@ -217,7 +217,7 @@ public void testCacheFilterReader() throws Exception { public void testLuceneVersionOnUnknownVersions() { // between two known versions, should use the lucene version of the previous version Version version = LegacyESVersion.fromString("7.10.50"); - assertEquals(VersionUtils.getPreviousReleasedVersion(Version.fromString("7.10.3")).luceneVersion, version.luceneVersion); + assertEquals(VersionUtils.getPreviousVersion(Version.fromString("7.10.3")).luceneVersion, version.luceneVersion); // too old version, major should be the oldest supported lucene version minus 1 version = LegacyESVersion.fromString("5.2.1"); diff --git a/server/src/test/java/org/opensearch/index/IndexSettingsTests.java b/server/src/test/java/org/opensearch/index/IndexSettingsTests.java index 434253ff6d14f..d67534bbfbddf 100644 --- a/server/src/test/java/org/opensearch/index/IndexSettingsTests.java +++ b/server/src/test/java/org/opensearch/index/IndexSettingsTests.java @@ -61,7 +61,7 @@ public class IndexSettingsTests extends OpenSearchTestCase { public void testRunListener() { - Version version = VersionUtils.getPreviousReleasedVersion(); + Version version = VersionUtils.getPreviousVersion(); Settings theSettings = Settings.builder() .put(IndexMetadata.SETTING_VERSION_CREATED, version) .put(IndexMetadata.SETTING_INDEX_UUID, "0xdeadbeef") @@ -87,7 +87,7 @@ public void testRunListener() { } public void testSettingsUpdateValidator() { - Version version = VersionUtils.getPreviousReleasedVersion(); + Version version = VersionUtils.getPreviousVersion(); Settings theSettings = Settings.builder() .put(IndexMetadata.SETTING_VERSION_CREATED, version) .put(IndexMetadata.SETTING_INDEX_UUID, "0xdeadbeef") @@ -120,7 +120,7 @@ public void testSettingsUpdateValidator() { } public void testMergedSettingsArePassed() { - Version version = VersionUtils.getPreviousReleasedVersion(); + Version version = VersionUtils.getPreviousVersion(); Settings theSettings = Settings.builder() .put(IndexMetadata.SETTING_VERSION_CREATED, version) .put(IndexMetadata.SETTING_INDEX_UUID, "0xdeadbeef") @@ -158,7 +158,7 @@ public void testMergedSettingsArePassed() { } public void testSettingsConsistency() { - Version version = VersionUtils.getPreviousReleasedVersion(); + Version version = VersionUtils.getPreviousVersion(); IndexMetadata metadata = newIndexMeta("index", Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, version).build()); IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY); assertEquals(version, settings.getIndexVersionCreated()); diff --git a/server/src/test/java/org/opensearch/index/analysis/AnalysisRegistryTests.java b/server/src/test/java/org/opensearch/index/analysis/AnalysisRegistryTests.java index ccb8fe08a65f4..cbc189be491cd 100644 --- a/server/src/test/java/org/opensearch/index/analysis/AnalysisRegistryTests.java +++ b/server/src/test/java/org/opensearch/index/analysis/AnalysisRegistryTests.java @@ -449,7 +449,7 @@ public Map> getTokenFilters() { assertWarnings("Using deprecated token filter [deprecated]"); indexSettings = Settings.builder() - .put(IndexMetadata.SETTING_VERSION_CREATED, VersionUtils.getPreviousReleasedVersion()) + .put(IndexMetadata.SETTING_VERSION_CREATED, VersionUtils.getPreviousVersion()) .put("index.analysis.filter.deprecated.type", "deprecated_normalizer") .putList("index.analysis.normalizer.custom.filter", "lowercase", "deprecated_normalizer") .put("index.analysis.filter.deprecated.type", "deprecated") diff --git a/server/src/test/java/org/opensearch/index/analysis/PreConfiguredTokenFilterTests.java b/server/src/test/java/org/opensearch/index/analysis/PreConfiguredTokenFilterTests.java index b069065261d03..67c865be70ac5 100644 --- a/server/src/test/java/org/opensearch/index/analysis/PreConfiguredTokenFilterTests.java +++ b/server/src/test/java/org/opensearch/index/analysis/PreConfiguredTokenFilterTests.java @@ -149,7 +149,7 @@ public boolean incrementToken() { ); assertSame(tff_v1_1, tff_v1_2); - byte major = VersionUtils.getPreviousReleasedVersion().major; + byte major = VersionUtils.getPreviousVersion().major; Version version2 = Version.fromString(major - 1 + ".0.0"); Settings settings2 = Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, version2).build(); diff --git a/server/src/test/java/org/opensearch/ingest/IngestStatsTests.java b/server/src/test/java/org/opensearch/ingest/IngestStatsTests.java index baedc5ef2559d..0486c9f29f86e 100644 --- a/server/src/test/java/org/opensearch/ingest/IngestStatsTests.java +++ b/server/src/test/java/org/opensearch/ingest/IngestStatsTests.java @@ -66,11 +66,11 @@ public void testBWCIngestProcessorTypeStats() throws IOException { // legacy output logic BytesStreamOutput out = new BytesStreamOutput(); - out.setVersion(VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_6_0)); + out.setVersion(VersionUtils.getPreviousVersion(LegacyESVersion.V_7_6_0)); expectedIngestStats.writeTo(out); StreamInput in = out.bytes().streamInput(); - in.setVersion(VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_6_0)); + in.setVersion(VersionUtils.getPreviousVersion(LegacyESVersion.V_7_6_0)); IngestStats serializedStats = new IngestStats(in); assertIngestStats(expectedIngestStats, serializedStats, true, false); } diff --git a/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java b/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java index 796dabd1e228a..96b33153ccf31 100644 --- a/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java +++ b/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java @@ -281,7 +281,7 @@ public void testMinVersionSerialization() throws IOException { PersistentTasksCustomMetadata.Builder tasks = PersistentTasksCustomMetadata.builder(); Version minVersion = allReleasedVersions().stream().filter(Version::isRelease).findFirst().orElseThrow(NoSuchElementException::new); - final Version streamVersion = randomVersionBetween(random(), minVersion, VersionUtils.getPreviousReleasedVersion(Version.CURRENT)); + final Version streamVersion = randomVersionBetween(random(), minVersion, VersionUtils.getPreviousVersion(Version.CURRENT)); tasks.addTask( "test_compatible_version", TestPersistentTasksExecutor.NAME, diff --git a/server/src/test/java/org/opensearch/rest/action/document/RestIndexActionTests.java b/server/src/test/java/org/opensearch/rest/action/document/RestIndexActionTests.java index d129d2f9446c4..5a1d43ff5dd04 100644 --- a/server/src/test/java/org/opensearch/rest/action/document/RestIndexActionTests.java +++ b/server/src/test/java/org/opensearch/rest/action/document/RestIndexActionTests.java @@ -98,7 +98,7 @@ public void testAutoIdDefaultsToOptypeCreate() { public void testAutoIdDefaultsToOptypeIndexForOlderVersions() { checkAutoIdOpType( - VersionUtils.randomVersionBetween(random(), null, VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_5_0)), + VersionUtils.randomVersionBetween(random(), null, VersionUtils.getPreviousVersion(LegacyESVersion.V_7_5_0)), DocWriteRequest.OpType.INDEX ); } diff --git a/server/src/test/java/org/opensearch/search/aggregations/metrics/InternalScriptedMetricTests.java b/server/src/test/java/org/opensearch/search/aggregations/metrics/InternalScriptedMetricTests.java index 93c35dd7d71ad..69c53d1a526e8 100644 --- a/server/src/test/java/org/opensearch/search/aggregations/metrics/InternalScriptedMetricTests.java +++ b/server/src/test/java/org/opensearch/search/aggregations/metrics/InternalScriptedMetricTests.java @@ -290,11 +290,7 @@ public void testOldSerialization() throws IOException { original, getNamedWriteableRegistry(), InternalAggregation.class, - VersionUtils.randomVersionBetween( - random(), - LegacyESVersion.V_7_0_0, - VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_8_0) - ) + VersionUtils.randomVersionBetween(random(), LegacyESVersion.V_7_0_0, VersionUtils.getPreviousVersion(LegacyESVersion.V_7_8_0)) ); assertThat(roundTripped, equalTo(original)); @@ -315,7 +311,7 @@ public void testOldSerialization() throws IOException { VersionUtils.randomVersionBetween( random(), LegacyESVersion.V_7_0_0, - VersionUtils.getPreviousReleasedVersion(LegacyESVersion.V_7_8_0) + VersionUtils.getPreviousVersion(LegacyESVersion.V_7_8_0) ) ) ); diff --git a/server/src/test/java/org/opensearch/transport/TransportServiceHandshakeTests.java b/server/src/test/java/org/opensearch/transport/TransportServiceHandshakeTests.java index 6568a1b280582..8463d9268e760 100644 --- a/server/src/test/java/org/opensearch/transport/TransportServiceHandshakeTests.java +++ b/server/src/test/java/org/opensearch/transport/TransportServiceHandshakeTests.java @@ -175,7 +175,7 @@ public void testIncompatibleVersions() { NetworkHandle handleB = startServices( "TS_B", settings, - VersionUtils.getPreviousReleasedVersion(Version.CURRENT.minimumCompatibilityVersion()) + VersionUtils.getPreviousVersion(Version.CURRENT.minimumCompatibilityVersion()) ); DiscoveryNode discoveryNode = new DiscoveryNode( "", diff --git a/test/framework/src/main/java/org/opensearch/test/VersionUtils.java b/test/framework/src/main/java/org/opensearch/test/VersionUtils.java index e87dfe59bb618..93fd7c10b80ae 100644 --- a/test/framework/src/main/java/org/opensearch/test/VersionUtils.java +++ b/test/framework/src/main/java/org/opensearch/test/VersionUtils.java @@ -210,7 +210,7 @@ public static List allLegacyVersions() { } /** - * Get the version (released or unreleased) before {@code version}. + * Get the version before {@code version}. */ public static Version getPreviousVersion(Version version) { for (int i = ALL_VERSIONS.size() - 1; i >= 0; i--) { @@ -219,11 +219,11 @@ public static Version getPreviousVersion(Version version) { return v; } } - throw new IllegalArgumentException("couldn't find any versions before [" + version + "]"); + throw new IllegalArgumentException("couldn't find any released versions before [" + version + "]"); } /** - * Get the released version before {@link Version#CURRENT}. + * Get the version before {@link Version#CURRENT}. */ public static Version getPreviousVersion() { Version version = getPreviousVersion(Version.CURRENT); @@ -231,28 +231,6 @@ public static Version getPreviousVersion() { return version; } - /** - * Get the released version before {@code version}. - */ - public static Version getPreviousReleasedVersion(Version version) { - for (int i = RELEASED_VERSIONS.size() - 1; i >= 0; i--) { - Version v = RELEASED_VERSIONS.get(i); - if (v.before(version)) { - return v; - } - } - throw new IllegalArgumentException("couldn't find any released versions before [" + version + "]"); - } - - /** - * Get the released version before {@link Version#CURRENT}. - */ - public static Version getPreviousReleasedVersion() { - Version version = getPreviousReleasedVersion(Version.CURRENT); - assert version.before(Version.CURRENT); - return version; - } - /** * Returns the released {@link Version} before the {@link Version#CURRENT} * where the minor version is less than the currents minor version. @@ -374,6 +352,6 @@ public static Version randomPreviousCompatibleVersion(Random random, Version ver // TODO: change this to minimumCompatibilityVersion(), but first need to remove released/unreleased // versions so getPreviousVerison returns the *actual* previous version. Otherwise eg 8.0.0 returns say 7.0.2 for previous, // but 7.2.0 for minimum compat - return randomVersionBetween(random, version.minimumIndexCompatibilityVersion(), getPreviousReleasedVersion(version)); + return randomVersionBetween(random, version.minimumIndexCompatibilityVersion(), getPreviousVersion(version)); } } diff --git a/test/framework/src/test/java/org/opensearch/test/VersionUtilsTests.java b/test/framework/src/test/java/org/opensearch/test/VersionUtilsTests.java index ddc6bdd4f1d55..de1f650aff20c 100644 --- a/test/framework/src/test/java/org/opensearch/test/VersionUtilsTests.java +++ b/test/framework/src/test/java/org/opensearch/test/VersionUtilsTests.java @@ -92,8 +92,8 @@ public void testRandomVersionBetween() { got = VersionUtils.randomVersionBetween(random(), LegacyESVersion.fromId(7000099), null); assertTrue(got.onOrAfter(LegacyESVersion.fromId(7000099))); assertTrue(got.onOrBefore(Version.CURRENT)); - got = VersionUtils.randomVersionBetween(random(), VersionUtils.getPreviousReleasedVersion(), null); - assertTrue(got.onOrAfter(VersionUtils.getPreviousReleasedVersion())); + got = VersionUtils.randomVersionBetween(random(), VersionUtils.getPreviousVersion(), null); + assertTrue(got.onOrAfter(VersionUtils.getPreviousVersion())); assertTrue(got.onOrBefore(Version.CURRENT)); // range of one From fba94e06d9b87119487ee49adce440858959f12c Mon Sep 17 00:00:00 2001 From: Nicholas Walter Knize Date: Sun, 3 Apr 2022 21:12:13 -0500 Subject: [PATCH 6/8] cleanup Signed-off-by: Nicholas Walter Knize --- .../admin/cluster/health/ClusterHealthRequestTests.java | 9 +++------ .../persistent/PersistentTasksCustomMetadataTests.java | 4 ++-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java b/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java index 4252bbf49e2b4..c84279a0782c3 100644 --- a/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java +++ b/server/src/test/java/org/opensearch/action/admin/cluster/health/ClusterHealthRequestTests.java @@ -44,6 +44,7 @@ import java.util.Locale; +import static org.opensearch.test.VersionUtils.getPreviousVersion; import static org.opensearch.test.VersionUtils.randomVersionBetween; import static org.hamcrest.core.IsEqual.equalTo; @@ -77,9 +78,7 @@ public void testBwcSerialization() throws Exception { for (int runs = 0; runs < randomIntBetween(5, 20); runs++) { // Generate a random cluster health request in version < 7.2.0 and serializes it final BytesStreamOutput out = new BytesStreamOutput(); - out.setVersion( - randomVersionBetween(random(), VersionUtils.getFirstVersion(), VersionUtils.getPreviousVersion(LegacyESVersion.V_7_2_0)) - ); + out.setVersion(randomVersionBetween(random(), VersionUtils.getFirstVersion(), getPreviousVersion(LegacyESVersion.V_7_2_0))); final ClusterHealthRequest expected = randomRequest(); { @@ -134,9 +133,7 @@ public void testBwcSerialization() throws Exception { // Serialize to node in version < 7.2.0 final BytesStreamOutput out = new BytesStreamOutput(); - out.setVersion( - randomVersionBetween(random(), VersionUtils.getFirstVersion(), VersionUtils.getPreviousVersion(LegacyESVersion.V_7_2_0)) - ); + out.setVersion(randomVersionBetween(random(), VersionUtils.getFirstVersion(), getPreviousVersion(LegacyESVersion.V_7_2_0))); expected.writeTo(out); // Deserialize and check the cluster health request diff --git a/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java b/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java index 96b33153ccf31..873176f5d42be 100644 --- a/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java +++ b/server/src/test/java/org/opensearch/persistent/PersistentTasksCustomMetadataTests.java @@ -64,7 +64,6 @@ import org.opensearch.persistent.TestPersistentTasksPlugin.TestParams; import org.opensearch.persistent.TestPersistentTasksPlugin.TestPersistentTasksExecutor; import org.opensearch.test.AbstractDiffableSerializationTestCase; -import org.opensearch.test.VersionUtils; import java.io.IOException; import java.util.ArrayList; @@ -80,6 +79,7 @@ import static org.opensearch.persistent.PersistentTasksExecutor.NO_NODE_FOUND; import static org.opensearch.test.VersionUtils.allReleasedVersions; import static org.opensearch.test.VersionUtils.compatibleFutureVersion; +import static org.opensearch.test.VersionUtils.getPreviousVersion; import static org.opensearch.test.VersionUtils.randomVersionBetween; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.not; @@ -281,7 +281,7 @@ public void testMinVersionSerialization() throws IOException { PersistentTasksCustomMetadata.Builder tasks = PersistentTasksCustomMetadata.builder(); Version minVersion = allReleasedVersions().stream().filter(Version::isRelease).findFirst().orElseThrow(NoSuchElementException::new); - final Version streamVersion = randomVersionBetween(random(), minVersion, VersionUtils.getPreviousVersion(Version.CURRENT)); + final Version streamVersion = randomVersionBetween(random(), minVersion, getPreviousVersion(Version.CURRENT)); tasks.addTask( "test_compatible_version", TestPersistentTasksExecutor.NAME, From e8d8e80475b9add452303b3044f9b498b1ba502a Mon Sep 17 00:00:00 2001 From: Nicholas Walter Knize Date: Sun, 3 Apr 2022 22:45:46 -0500 Subject: [PATCH 7/8] change version comparison to only translate versions for opensearch 1.x and 2.x Signed-off-by: Nicholas Walter Knize --- .../src/main/java/org/opensearch/Version.java | 28 ++++++++++++------- .../org/opensearch/LegacyESVersionTests.java | 4 +-- .../java/org/opensearch/VersionTests.java | 3 +- .../org/opensearch/test/VersionUtils.java | 8 +++--- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/server/src/main/java/org/opensearch/Version.java b/server/src/main/java/org/opensearch/Version.java index 53ecd472c3630..7ccf4449436cd 100644 --- a/server/src/main/java/org/opensearch/Version.java +++ b/server/src/main/java/org/opensearch/Version.java @@ -279,11 +279,16 @@ public boolean onOrBefore(Version version) { return version.id >= id; } - // LegacyESVersion major 7 is equivalent to Version major 1 public int compareMajor(Version other) { - int m = major == 1 ? 7 : major == 2 ? 8 : major == 3 ? 9 : major; - int om = other.major == 1 ? 7 : other.major == 2 ? 8 : major == 3 ? 9 : other.major; - return Integer.compare(m, om); + // comparing Legacy 7x for bwc + // todo: remove the following when removing legacy support in 3.0.0 + if (major == 7 || other.major == 7) { + // opensearch v1.x and v2.x need major translation to compare w/ legacy versions + int m = major == 1 ? 7 : major == 2 ? 8 : major; + int om = other.major == 1 ? 7 : other.major == 2 ? 8 : other.major; + return Integer.compare(m, om); + } + return Integer.compare(major, other.major); } @Override @@ -392,10 +397,10 @@ private Version computeMinIndexCompatVersion() { bwcMajor = major - 1; } final int bwcMinor = 0; - // todo remove when LegacyESVersion is removed if (major == 3) { return Version.min(this, fromId((bwcMajor * 1000000 + bwcMinor * 10000 + 99) ^ MASK)); } + // todo remove below when LegacyESVersion is removed in 3.0 return Version.min(this, fromId((bwcMajor * 1000000 + bwcMinor * 10000 + 99))); } @@ -409,12 +414,15 @@ public boolean isCompatible(Version version) { // OpenSearch version 2 is the functional equivalent of predecessor unreleased version "8" // todo refactor this logic after removing deprecated features int a = major; - if (major <= 3) { - a += 6; // for legacy compatibility up to version 3.0 (to compare minCompat) - } int b = version.major; - if (version.major <= 3) { - b += 6; + + if (a == 7 || b == 7) { + if (major <= 2) { + a += 6; // for legacy compatibility up to version 2.x (to compare minCompat) + } + if (version.major <= 2) { + b += 6; // for legacy compatibility up to version 2.x (to compare minCompat) + } } assert compatible == false || Math.max(a, b) - Math.min(a, b) <= 1; diff --git a/server/src/test/java/org/opensearch/LegacyESVersionTests.java b/server/src/test/java/org/opensearch/LegacyESVersionTests.java index 8fb3636dd8b2c..d59f5e38a4ed7 100644 --- a/server/src/test/java/org/opensearch/LegacyESVersionTests.java +++ b/server/src/test/java/org/opensearch/LegacyESVersionTests.java @@ -63,8 +63,8 @@ public void testVersionComparison() { // compare opensearch version to LegacyESVersion assertThat(Version.V_1_0_0.compareMajor(LegacyESVersion.V_7_0_0), is(0)); - assertThat(Version.V_1_0_0.compareMajor(LegacyESVersion.fromString("6.3.0")), is(1)); - assertThat(LegacyESVersion.fromString("6.3.0").compareMajor(Version.V_1_0_0), is(-1)); + assertThat(Version.V_2_0_0.compareMajor(LegacyESVersion.fromString("7.3.0")), is(1)); + assertThat(LegacyESVersion.fromString("7.3.0").compareMajor(Version.V_2_0_0), is(-1)); } public void testMin() { diff --git a/server/src/test/java/org/opensearch/VersionTests.java b/server/src/test/java/org/opensearch/VersionTests.java index 7e5f1caea7fda..1f1c56d462c6f 100644 --- a/server/src/test/java/org/opensearch/VersionTests.java +++ b/server/src/test/java/org/opensearch/VersionTests.java @@ -255,8 +255,7 @@ public void testOpenSearchPreLegacyRemoval() { Version expectedMinIndexCompat = VersionUtils.getFirstVersionOfMajor(candidates, opensearchMajor - 1); Version actualMinIndexCompat = opensearchVersion.minimumIndexCompatibilityVersion(); - Version expectedMinCompat = VersionUtils.getPreviousVersion(opensearchVersion); - expectedMinCompat = Version.fromId((expectedMinCompat.major * 1000000 + expectedMinCompat.minor * 10000 + 99) ^ MASK); + Version expectedMinCompat = VersionUtils.lastFirstReleasedMinorFromMajor(VersionUtils.allOpenSearchVersions(), opensearchMajor - 1); Version actualMinCompat = opensearchVersion.minimumCompatibilityVersion(); // since some legacy versions still support build (alpha, beta, RC) we check major minor revision only assertEquals(expectedMinIndexCompat.major, actualMinIndexCompat.major); diff --git a/test/framework/src/main/java/org/opensearch/test/VersionUtils.java b/test/framework/src/main/java/org/opensearch/test/VersionUtils.java index 93fd7c10b80ae..0f8525285fd08 100644 --- a/test/framework/src/main/java/org/opensearch/test/VersionUtils.java +++ b/test/framework/src/main/java/org/opensearch/test/VersionUtils.java @@ -210,11 +210,11 @@ public static List allLegacyVersions() { } /** - * Get the version before {@code version}. + * Get the released version before {@code version}. */ public static Version getPreviousVersion(Version version) { - for (int i = ALL_VERSIONS.size() - 1; i >= 0; i--) { - Version v = ALL_VERSIONS.get(i); + for (int i = RELEASED_VERSIONS.size() - 1; i >= 0; i--) { + Version v = RELEASED_VERSIONS.get(i); if (v.before(version)) { return v; } @@ -223,7 +223,7 @@ public static Version getPreviousVersion(Version version) { } /** - * Get the version before {@link Version#CURRENT}. + * Get the released version before {@link Version#CURRENT}. */ public static Version getPreviousVersion() { Version version = getPreviousVersion(Version.CURRENT); From 6e9bc4016828955589414fdda4bdf2ec57be2d7c Mon Sep 17 00:00:00 2001 From: Nicholas Walter Knize Date: Mon, 4 Apr 2022 11:41:21 -0500 Subject: [PATCH 8/8] revert unneeded test change Signed-off-by: Nicholas Walter Knize --- server/src/test/java/org/opensearch/VersionTests.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/src/test/java/org/opensearch/VersionTests.java b/server/src/test/java/org/opensearch/VersionTests.java index 1f1c56d462c6f..c2566e83dd9b6 100644 --- a/server/src/test/java/org/opensearch/VersionTests.java +++ b/server/src/test/java/org/opensearch/VersionTests.java @@ -236,8 +236,6 @@ public void testOpenSearchMinIndexCompatVersion() { major = 7; } else if (opensearchMajor == 2) { major = 8; - } else if (opensearchMajor == 3) { - major = 9; } Version expected = VersionUtils.getFirstVersionOfMajor(candidates, major - 1); Version actual = opensearchVersion.minimumIndexCompatibilityVersion();