Merge branch 'stable-2.16' into stable-3.0
* stable-2.16:
Error Prone: Fix DefaultCharset in ListProjectsIT
Bazel: Enable Error-Prone by default
Parallelize account migration in schema 146 migration
Fix _nextStepHandle not being assigned a value when scrolling
Elasticsearch: Remove redundant handling of 'ignore_unmapped' property
Elasticsearch: Fix support for V6 versions earlier than 6.7.*
Clarify introduction to external IDs
ExternalIdNotes: Improve grammar in checkState messages
Update git submodules
Add example of external ID key in external ID documentation
Minor grammatical fixes in external ID documentation
ElasticVersionTest: Add missing assertions on V6_7
Also update the replication plugin revision to include the fix:
HttpResponse: Specify charset in constructor of InputStreamReader
which is needed due to enabling error prone checks on core plugins.
Change-Id: I90394f5c0d6aaf88b1169c26ceb65b699fddfe77
diff --git a/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java b/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java
index 41cec1e..e215759 100644
--- a/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java
+++ b/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java
@@ -305,7 +305,6 @@
protected JsonArray getSortArray(String idFieldName) {
JsonObject properties = new JsonObject();
properties.addProperty(ORDER, "asc");
- client.adapter().setIgnoreUnmapped(properties);
JsonArray sortArray = new JsonArray();
addNamedElement(idFieldName, properties, sortArray);
diff --git a/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java b/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java
index 0a64abd..c5fb77c 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java
@@ -164,7 +164,6 @@
private JsonArray getSortArray() {
JsonObject properties = new JsonObject();
properties.addProperty(ORDER, "desc");
- client.adapter().setIgnoreUnmapped(properties);
JsonArray sortArray = new JsonArray();
addNamedElement(ChangeField.UPDATED.getName(), properties, sortArray);
diff --git a/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java b/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java
index e34644e..b015678 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java
@@ -14,6 +14,8 @@
package com.google.gerrit.elasticsearch;
+import static com.google.gerrit.elasticsearch.ElasticVersion.V6_7;
+
import com.google.gson.JsonObject;
public class ElasticQueryAdapter {
@@ -22,7 +24,6 @@
private static final String INCLUDE_TYPE = "include_type_name=true";
private static final String INDICES = "?allow_no_indices=false";
- private final boolean ignoreUnmapped;
private final boolean useV5Type;
private final boolean useV6Type;
private final boolean omitType;
@@ -37,24 +38,18 @@
private final String includeTypeNameParam;
ElasticQueryAdapter(ElasticVersion version) {
- this.ignoreUnmapped = false;
this.useV5Type = !version.isV6OrLater();
this.useV6Type = version.isV6();
this.omitType = version.isV7OrLater();
this.versionDiscoveryUrl = version.isV6OrLater() ? "/%s*" : "/%s*/_aliases";
this.searchFilteringName = "_source";
- this.indicesExistParams = version.isV6() ? INDICES + "&" + INCLUDE_TYPE : INDICES;
+ this.indicesExistParams =
+ version.isAtLeastMinorVersion(V6_7) ? INDICES + "&" + INCLUDE_TYPE : INDICES;
this.exactFieldType = "keyword";
this.stringFieldType = "text";
this.indexProperty = "true";
this.rawFieldsKey = "_source";
- this.includeTypeNameParam = version.isV6() ? "?" + INCLUDE_TYPE : "";
- }
-
- void setIgnoreUnmapped(JsonObject properties) {
- if (ignoreUnmapped) {
- properties.addProperty("ignore_unmapped", true);
- }
+ this.includeTypeNameParam = version.isAtLeastMinorVersion(V6_7) ? "?" + INCLUDE_TYPE : "";
}
public void setType(JsonObject properties, String type) {
diff --git a/java/com/google/gerrit/elasticsearch/ElasticVersion.java b/java/com/google/gerrit/elasticsearch/ElasticVersion.java
index 98e1f7d..6be41c8 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticVersion.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticVersion.java
@@ -71,14 +71,22 @@
return isAtLeastVersion(7);
}
- private boolean isAtLeastVersion(int v) {
- return getMajor() >= v;
+ private boolean isAtLeastVersion(int major) {
+ return getMajor() >= major;
+ }
+
+ public boolean isAtLeastMinorVersion(ElasticVersion version) {
+ return getMajor().equals(version.getMajor()) && getMinor() >= version.getMinor();
}
private Integer getMajor() {
return Integer.valueOf(version.split("\\.")[0]);
}
+ private Integer getMinor() {
+ return Integer.valueOf(version.split("\\.")[1]);
+ }
+
@Override
public String toString() {
return version;
diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticVersionTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticVersionTest.java
index 61ad068..c06941c 100644
--- a/javatests/com/google/gerrit/elasticsearch/ElasticVersionTest.java
+++ b/javatests/com/google/gerrit/elasticsearch/ElasticVersionTest.java
@@ -63,10 +63,23 @@
assertThat(ElasticVersion.V6_4.isV6OrLater()).isTrue();
assertThat(ElasticVersion.V6_5.isV6OrLater()).isTrue();
assertThat(ElasticVersion.V6_6.isV6OrLater()).isTrue();
+ assertThat(ElasticVersion.V6_7.isV6OrLater()).isTrue();
assertThat(ElasticVersion.V7_0.isV6OrLater()).isTrue();
}
@Test
+ public void atLeastMinorVersion() throws Exception {
+ assertThat(ElasticVersion.V5_6.isAtLeastMinorVersion(ElasticVersion.V6_7)).isFalse();
+ assertThat(ElasticVersion.V6_2.isAtLeastMinorVersion(ElasticVersion.V6_7)).isFalse();
+ assertThat(ElasticVersion.V6_3.isAtLeastMinorVersion(ElasticVersion.V6_7)).isFalse();
+ assertThat(ElasticVersion.V6_4.isAtLeastMinorVersion(ElasticVersion.V6_7)).isFalse();
+ assertThat(ElasticVersion.V6_5.isAtLeastMinorVersion(ElasticVersion.V6_7)).isFalse();
+ assertThat(ElasticVersion.V6_6.isAtLeastMinorVersion(ElasticVersion.V6_7)).isFalse();
+ assertThat(ElasticVersion.V6_7.isAtLeastMinorVersion(ElasticVersion.V6_7)).isTrue();
+ assertThat(ElasticVersion.V7_0.isAtLeastMinorVersion(ElasticVersion.V6_7)).isFalse();
+ }
+
+ @Test
public void version7() throws Exception {
assertThat(ElasticVersion.V5_6.isV7OrLater()).isFalse();
assertThat(ElasticVersion.V6_2.isV7OrLater()).isFalse();
@@ -74,6 +87,7 @@
assertThat(ElasticVersion.V6_4.isV7OrLater()).isFalse();
assertThat(ElasticVersion.V6_5.isV7OrLater()).isFalse();
assertThat(ElasticVersion.V6_6.isV7OrLater()).isFalse();
+ assertThat(ElasticVersion.V6_7.isV7OrLater()).isFalse();
assertThat(ElasticVersion.V7_0.isV7OrLater()).isTrue();
}
}