Use the smallest version rather than the default version
The minimum version comparison was always using the default version sicne the comparison was flipped. Closes #11474
This commit is contained in:
parent
7264fd4eb8
commit
d621b160e9
|
@ -23,8 +23,6 @@ import com.google.common.base.Charsets;
|
|||
import com.google.common.base.Preconditions;
|
||||
import org.apache.lucene.codecs.PostingsFormat;
|
||||
import org.apache.lucene.index.CheckIndex;
|
||||
import org.apache.lucene.search.Query;
|
||||
import org.apache.lucene.search.join.BitDocIdSetFilter;
|
||||
import org.apache.lucene.store.AlreadyClosedException;
|
||||
import org.apache.lucene.util.IOUtils;
|
||||
import org.apache.lucene.util.ThreadInterruptedException;
|
||||
|
@ -41,14 +39,11 @@ import org.elasticsearch.cluster.routing.ShardRouting;
|
|||
import org.elasticsearch.cluster.routing.ShardRoutingState;
|
||||
import org.elasticsearch.common.Booleans;
|
||||
import org.elasticsearch.common.Nullable;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.bytes.BytesReference;
|
||||
import org.elasticsearch.common.collect.Tuple;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
||||
import org.elasticsearch.common.logging.ESLogger;
|
||||
import org.elasticsearch.common.lucene.Lucene;
|
||||
import org.elasticsearch.common.lucene.search.Queries;
|
||||
import org.elasticsearch.common.metrics.MeanMetric;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.unit.ByteSizeValue;
|
||||
|
@ -720,13 +715,13 @@ public class IndexShard extends AbstractIndexShardComponent {
|
|||
}
|
||||
|
||||
public org.apache.lucene.util.Version minimumCompatibleVersion() {
|
||||
org.apache.lucene.util.Version luceneVersion = Version.LUCENE_3_EMULATION_VERSION;
|
||||
org.apache.lucene.util.Version luceneVersion = null;
|
||||
for(Segment segment : engine().segments(false)) {
|
||||
if (luceneVersion.onOrAfter(segment.getVersion())) {
|
||||
if (luceneVersion == null || luceneVersion.onOrAfter(segment.getVersion())) {
|
||||
luceneVersion = segment.getVersion();
|
||||
}
|
||||
}
|
||||
return luceneVersion;
|
||||
return luceneVersion == null ? Version.indexCreated(indexSettings).luceneVersion : luceneVersion;
|
||||
}
|
||||
|
||||
public SnapshotIndexCommit snapshotIndex(boolean flushFirst) throws EngineException {
|
||||
|
|
|
@ -50,6 +50,7 @@ import java.util.concurrent.ExecutionException;
|
|||
import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_REPLICAS;
|
||||
import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_SHARDS;
|
||||
import static org.elasticsearch.common.settings.Settings.settingsBuilder;
|
||||
import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_VERSION_CREATED;
|
||||
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
|
||||
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
|
@ -362,4 +363,19 @@ public class IndexShardTests extends ElasticsearchSingleNodeTest {
|
|||
assertEquals(numDocs, searcher.reader().numDocs());
|
||||
}
|
||||
}
|
||||
|
||||
public void testMinimumCompatVersion() {
|
||||
Version versionCreated = VersionUtils.randomVersion(random());
|
||||
assertAcked(client().admin().indices().prepareCreate("test")
|
||||
.setSettings(SETTING_NUMBER_OF_SHARDS, 1, SETTING_NUMBER_OF_REPLICAS, 0, SETTING_VERSION_CREATED, versionCreated.id));
|
||||
client().prepareIndex("test", "test").setSource("{}").get();
|
||||
ensureGreen("test");
|
||||
IndicesService indicesService = getInstanceFromNode(IndicesService.class);
|
||||
IndexShard test = indicesService.indexService("test").shard(0);
|
||||
assertEquals(versionCreated.luceneVersion, test.minimumCompatibleVersion());
|
||||
client().prepareIndex("test", "test").setSource("{}").get();
|
||||
assertEquals(versionCreated.luceneVersion, test.minimumCompatibleVersion());
|
||||
test.engine().flush();
|
||||
assertEquals(Version.CURRENT.luceneVersion, test.minimumCompatibleVersion());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,11 @@
|
|||
|
||||
package org.elasticsearch.rest.action.admin.indices.upgrade;
|
||||
|
||||
import org.elasticsearch.Version;
|
||||
import org.elasticsearch.bwcompat.StaticIndexBackwardCompatibilityTest;
|
||||
import org.elasticsearch.cluster.metadata.IndexMetaData;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
|
||||
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures;
|
||||
|
||||
|
@ -29,6 +33,7 @@ public class UpgradeReallyOldIndexTest extends StaticIndexBackwardCompatibilityT
|
|||
String indexName = "index-0.90.6";
|
||||
|
||||
loadIndex(indexName);
|
||||
assertMinVersion(indexName, org.apache.lucene.util.Version.parse("4.5.1"));
|
||||
UpgradeTest.assertNotUpgraded(client(), indexName);
|
||||
assertTrue(UpgradeTest.hasAncientSegments(client(), indexName));
|
||||
assertNoFailures(client().admin().indices().prepareUpgrade(indexName).setUpgradeOnlyAncientSegments(true).get());
|
||||
|
@ -36,6 +41,18 @@ public class UpgradeReallyOldIndexTest extends StaticIndexBackwardCompatibilityT
|
|||
assertFalse(UpgradeTest.hasAncientSegments(client(), "index-0.90.6"));
|
||||
// This index has only ancient segments, so it should now be fully upgraded:
|
||||
UpgradeTest.assertUpgraded(client(), indexName);
|
||||
assertEquals(Version.CURRENT.luceneVersion.toString(), client().admin().indices().prepareGetSettings(indexName).get().getSetting(indexName, IndexMetaData.SETTING_VERSION_MINIMUM_COMPATIBLE));
|
||||
assertMinVersion(indexName, Version.CURRENT.luceneVersion);
|
||||
}
|
||||
|
||||
private void assertMinVersion(String index, org.apache.lucene.util.Version version) {
|
||||
for (IndicesService services : internalCluster().getInstances(IndicesService.class)) {
|
||||
IndexService indexService = services.indexService(index);
|
||||
if (indexService != null) {
|
||||
assertEquals(version, indexService.shard(0).minimumCompatibleVersion());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue