Merge branch 'stable-2.15'

* stable-2.15:
  ElasticConfiguration: Log configured Elasticsearch hostnames as info
  ElasticRestClientProvider: Store hosts as List instead of native array
  ElasticConfiguration: Remove unused maxConnectionIdleUnit
  Assume correct relative or absolute URL from Weblink provider

Change-Id: Id4f5ce62828a61017a3e0f0518d63a9519ecbf6c
This commit is contained in:
David Pursehouse
2018-07-01 20:52:51 +09:00
2 changed files with 13 additions and 8 deletions

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.elasticsearch;
import com.google.common.base.MoreObjects; import com.google.common.base.MoreObjects;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.config.GerritServerConfig; import com.google.gerrit.server.config.GerritServerConfig;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton; import com.google.inject.Singleton;
@@ -29,19 +30,20 @@ import org.eclipse.jgit.lib.Config;
@Singleton @Singleton
class ElasticConfiguration { class ElasticConfiguration {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String DEFAULT_HOST = "localhost"; private static final String DEFAULT_HOST = "localhost";
private static final String DEFAULT_PORT = "9200"; private static final String DEFAULT_PORT = "9200";
private static final String DEFAULT_PROTOCOL = "http"; private static final String DEFAULT_PROTOCOL = "http";
private final Config cfg; private final Config cfg;
final List<HttpHost> urls; final List<HttpHost> hosts;
final String username; final String username;
final String password; final String password;
final boolean requestCompression; final boolean requestCompression;
final long connectionTimeout; final long connectionTimeout;
final long maxConnectionIdleTime; final long maxConnectionIdleTime;
final TimeUnit maxConnectionIdleUnit = TimeUnit.MILLISECONDS;
final int maxTotalConnection; final int maxTotalConnection;
final int readTimeout; final int readTimeout;
final String prefix; final String prefix;
@@ -66,18 +68,20 @@ class ElasticConfiguration {
if (subsections.isEmpty()) { if (subsections.isEmpty()) {
HttpHost httpHost = HttpHost httpHost =
new HttpHost(DEFAULT_HOST, Integer.valueOf(DEFAULT_PORT), DEFAULT_PROTOCOL); new HttpHost(DEFAULT_HOST, Integer.valueOf(DEFAULT_PORT), DEFAULT_PROTOCOL);
this.urls = Collections.singletonList(httpHost); this.hosts = Collections.singletonList(httpHost);
} else { } else {
this.urls = new ArrayList<>(subsections.size()); this.hosts = new ArrayList<>(subsections.size());
for (String subsection : subsections) { for (String subsection : subsections) {
String port = getString(cfg, subsection, "port", DEFAULT_PORT); String port = getString(cfg, subsection, "port", DEFAULT_PORT);
String host = getString(cfg, subsection, "hostname", DEFAULT_HOST); String host = getString(cfg, subsection, "hostname", DEFAULT_HOST);
String protocol = getString(cfg, subsection, "protocol", DEFAULT_PROTOCOL); String protocol = getString(cfg, subsection, "protocol", DEFAULT_PROTOCOL);
HttpHost httpHost = new HttpHost(host, Integer.valueOf(port), protocol); HttpHost httpHost = new HttpHost(host, Integer.valueOf(port), protocol);
this.urls.add(httpHost); this.hosts.add(httpHost);
} }
} }
logger.atInfo().log("Elasticsearch hosts: %s", hosts);
} }
Config getConfig() { Config getConfig() {

View File

@@ -22,6 +22,7 @@ import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import java.io.IOException; import java.io.IOException;
import java.util.List;
import org.apache.http.HttpHost; import org.apache.http.HttpHost;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.apache.http.StatusLine; import org.apache.http.StatusLine;
@@ -38,7 +39,7 @@ import org.elasticsearch.client.RestClientBuilder;
class ElasticRestClientProvider implements Provider<RestClient>, LifecycleListener { class ElasticRestClientProvider implements Provider<RestClient>, LifecycleListener {
private static final FluentLogger logger = FluentLogger.forEnclosingClass(); private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final HttpHost[] hosts; private final List<HttpHost> hosts;
private final String username; private final String username;
private final String password; private final String password;
@@ -47,7 +48,7 @@ class ElasticRestClientProvider implements Provider<RestClient>, LifecycleListen
@Inject @Inject
ElasticRestClientProvider(ElasticConfiguration cfg) { ElasticRestClientProvider(ElasticConfiguration cfg) {
hosts = cfg.urls.toArray(new HttpHost[cfg.urls.size()]); hosts = cfg.hosts;
username = cfg.username; username = cfg.username;
password = cfg.password; password = cfg.password;
} }
@@ -131,7 +132,7 @@ class ElasticRestClientProvider implements Provider<RestClient>, LifecycleListen
} }
private RestClient build() { private RestClient build() {
RestClientBuilder builder = RestClient.builder(hosts); RestClientBuilder builder = RestClient.builder(hosts.toArray(new HttpHost[hosts.size()]));
setConfiguredCredentialsIfAny(builder); setConfiguredCredentialsIfAny(builder);
return builder.build(); return builder.build();
} }