diff options
author | David Pursehouse <dpursehouse@collab.net> | 2018-09-25 15:57:26 +0900 |
---|---|---|
committer | David Pursehouse <dpursehouse@collab.net> | 2018-09-26 13:47:14 +0900 |
commit | 0fce318c30b58d43bd2d53a156d0dc092da861dd (patch) | |
tree | 226065bb88946d3b0ad19810bfff0fff63706947 | |
parent | d185b59c497140fe14e3671cf5a4c87e702f6feb (diff) |
Elasticsearch: Ensure request URI is always prefixed with "/"
When using Amazon's Elasticsearch service, requests fail with "400 Bad
Request" if they are not prefixed with "/".
Ensure that requests are always prefixed with "/".
Bug: Issue 9761
Change-Id: If2a178e85143ba75d7f4f6b982739a9b3f2dc21c
3 files changed, 3 insertions, 3 deletions
diff --git a/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java b/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java index c783dd854f..72cc3d0bc2 100644 --- a/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java +++ b/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/AbstractElasticIndex.java @@ -254,7 +254,7 @@ abstract class AbstractElasticIndex<K, V> implements Index<K, V> { private Response performRequest( String method, String uri, @Nullable Object payload, Map<String, String> params) throws IOException { - Request request = new Request(method, uri); + 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)); diff --git a/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java b/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java index 64f6252fb8..b52499be57 100644 --- a/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java +++ b/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/ElasticQueryAdapter.java @@ -32,7 +32,7 @@ public class ElasticQueryAdapter { 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/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/ElasticRestClientProvider.java b/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/ElasticRestClientProvider.java index 0a32886b51..9c1cf02e3c 100644 --- a/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/ElasticRestClientProvider.java +++ b/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/ElasticRestClientProvider.java @@ -107,7 +107,7 @@ class ElasticRestClientProvider implements Provider<RestClient>, LifecycleListen 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); |