Merge branch 'stable-2.15'
* stable-2.15:
AsyncReceiveCommits#onPreReceive: Early exit when commands already processed
Replace download links for releases index page
concept-changes: Fix 'invalid reference: topic' warning
concept-changes: Fix 'invalid reference: submit-strategy' warning
Set version to 2.14.14
Update jruby to 9.1.17 and asciidoctorj to v1.5.7
Elasticsearch: Ensure request URI is always prefixed with "/"
AbstractElasticIndex: Factor out more variants of {post,perform}Request
rest-api-projects: Fix "unterminated listing block" warning
config-gerrit: Fix "invalid reference: database.h2.cachesize" warning
Bazel: Specify name for downloaded file to http_file starlark rule
Set version to 2.14.14-SNAPSHOT
CreateProject: Provide signed push option on project creation
Revert "AsyncReceiveCommits: Move ReceiveCommits into Worker"
Change-Id: I839334906060534e8dd9bd2658c6eb57ccd79c69
diff --git a/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java b/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java
index 2c1c93a..fec7137 100644
--- a/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java
+++ b/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java
@@ -26,6 +26,7 @@
import com.google.common.collect.Lists;
import com.google.common.flogger.FluentLogger;
import com.google.common.io.CharStreams;
+import com.google.gerrit.common.Nullable;
import com.google.gerrit.elasticsearch.ElasticMapping.MappingProperties;
import com.google.gerrit.elasticsearch.builders.QueryBuilder;
import com.google.gerrit.elasticsearch.builders.SearchSourceBuilder;
@@ -160,7 +161,7 @@
@Override
public void delete(K id) throws IOException {
String uri = getURI(type, BULK);
- Response response = postRequest(getDeleteActions(id), uri, getRefreshParam());
+ Response response = postRequest(uri, getDeleteActions(id), getRefreshParam());
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
throw new IOException(
@@ -172,10 +173,10 @@
public void deleteAll() throws IOException {
// Delete the index, if it exists.
String endpoint = indexName + client.adapter().indicesExistParam();
- Response response = client.get().performRequest(new Request("HEAD", endpoint));
+ Response response = performRequest("HEAD", endpoint);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
- response = client.get().performRequest(new Request("DELETE", indexName));
+ response = performRequest("DELETE", indexName);
statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
throw new IOException(
@@ -185,7 +186,7 @@
// Recreate the index.
String indexCreationFields = concatJsonString(getSettings(), getMappings());
- response = performRequest("PUT", indexCreationFields, indexName, Collections.emptyMap());
+ response = performRequest("PUT", indexName, indexCreationFields);
statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
String error = String.format("Failed to create index %s: %s", indexName, statusCode);
@@ -297,20 +298,36 @@
return encodedIndexName + "/" + encodedType + "/" + request;
}
- protected Response postRequest(Object payload, String uri, Map<String, String> params)
+ protected Response postRequest(String uri, Object payload) throws IOException {
+ return performRequest("POST", uri, payload);
+ }
+
+ protected Response postRequest(String uri, Object payload, Map<String, String> params)
throws IOException {
- return performRequest("POST", payload, uri, params);
+ return performRequest("POST", uri, payload, params);
}
private String concatJsonString(String target, String addition) {
return target.substring(0, target.length() - 1) + "," + addition.substring(1);
}
+ private Response performRequest(String method, String uri) throws IOException {
+ return performRequest(method, uri, null);
+ }
+
+ private Response performRequest(String method, String uri, @Nullable Object payload)
+ throws IOException {
+ return performRequest(method, uri, payload, Collections.emptyMap());
+ }
+
private Response performRequest(
- String method, Object payload, String uri, Map<String, String> params) throws IOException {
- Request request = new Request(method, uri);
- String payloadStr = payload instanceof String ? (String) payload : payload.toString();
- request.setEntity(new NStringEntity(payloadStr, ContentType.APPLICATION_JSON));
+ String method, String uri, @Nullable Object payload, Map<String, String> params)
+ throws IOException {
+ Request request = new Request(method, uri.startsWith("/") ? uri : "/" + uri);
+ if (payload != null) {
+ String payloadStr = payload instanceof String ? (String) payload : payload.toString();
+ request.setEntity(new NStringEntity(payloadStr, ContentType.APPLICATION_JSON));
+ }
for (Map.Entry<String, String> entry : params.entrySet()) {
request.addParameter(entry.getKey(), entry.getValue());
}
diff --git a/java/com/google/gerrit/elasticsearch/BUILD b/java/com/google/gerrit/elasticsearch/BUILD
index 31ede79..8d23051 100644
--- a/java/com/google/gerrit/elasticsearch/BUILD
+++ b/java/com/google/gerrit/elasticsearch/BUILD
@@ -3,6 +3,7 @@
srcs = glob(["**/*.java"]),
visibility = ["//visibility:public"],
deps = [
+ "//java/com/google/gerrit/common:annotations",
"//java/com/google/gerrit/extensions:api",
"//java/com/google/gerrit/index",
"//java/com/google/gerrit/index:query_exception",
diff --git a/java/com/google/gerrit/elasticsearch/ElasticAccountIndex.java b/java/com/google/gerrit/elasticsearch/ElasticAccountIndex.java
index d18af42..1b69b6d 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticAccountIndex.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticAccountIndex.java
@@ -79,7 +79,7 @@
.add(new UpdateRequest<>(schema, as));
String uri = getURI(type, BULK);
- Response response = postRequest(bulk, uri, getRefreshParam());
+ Response response = postRequest(uri, bulk, getRefreshParam());
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
throw new IOException(
diff --git a/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java b/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java
index f6af79f..d7c8b00 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java
@@ -138,7 +138,7 @@
}
String uri = getURI(type, BULK);
- Response response = postRequest(bulk, uri, getRefreshParam());
+ Response response = postRequest(uri, bulk, getRefreshParam());
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
throw new IOException(
diff --git a/java/com/google/gerrit/elasticsearch/ElasticGroupIndex.java b/java/com/google/gerrit/elasticsearch/ElasticGroupIndex.java
index bf6b962..f694a05 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticGroupIndex.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticGroupIndex.java
@@ -77,7 +77,7 @@
.add(new UpdateRequest<>(schema, group));
String uri = getURI(type, BULK);
- Response response = postRequest(bulk, uri, getRefreshParam());
+ Response response = postRequest(uri, bulk, getRefreshParam());
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
throw new IOException(
diff --git a/java/com/google/gerrit/elasticsearch/ElasticProjectIndex.java b/java/com/google/gerrit/elasticsearch/ElasticProjectIndex.java
index 623f62c..8510559 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticProjectIndex.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticProjectIndex.java
@@ -77,7 +77,7 @@
.add(new UpdateRequest<>(schema, projectState));
String uri = getURI(type, BULK);
- Response response = postRequest(bulk, uri, getRefreshParam());
+ Response response = postRequest(uri, bulk, getRefreshParam());
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
throw new IOException(
diff --git a/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java b/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java
index 8cb69e0..05fd7a7 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java
@@ -33,7 +33,7 @@
ElasticQueryAdapter(ElasticVersion version) {
this.ignoreUnmapped = version == ElasticVersion.V2_4;
this.usePostV5Type = version.isV6();
- this.versionDiscoveryUrl = version.isV6() ? "%s*" : "%s*/_aliases";
+ this.versionDiscoveryUrl = version.isV6() ? "/%s*" : "/%s*/_aliases";
switch (version) {
case V5_6:
diff --git a/java/com/google/gerrit/elasticsearch/ElasticRestClientProvider.java b/java/com/google/gerrit/elasticsearch/ElasticRestClientProvider.java
index 337f2ca..e9839b7 100644
--- a/java/com/google/gerrit/elasticsearch/ElasticRestClientProvider.java
+++ b/java/com/google/gerrit/elasticsearch/ElasticRestClientProvider.java
@@ -106,7 +106,7 @@
private ElasticVersion getVersion() throws ElasticException {
try {
- Response response = client.performRequest(new Request("GET", ""));
+ Response response = client.performRequest(new Request("GET", "/"));
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() != HttpStatus.SC_OK) {
throw new FailedToGetVersion(statusLine);