Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,10 @@ public class ConfigConstants {

public static final String KEY_POLLINGWAITSEC = "pollingWaitInSeconds";

public static final String CLIENT_CONNECT_TIMEOUT = "servicecomb.kie.client.timeout.connect";

public static final String CLIENT_REQUEST_TIMEOUT = "servicecomb.kie.client.timeout.request";

public static final String CLIENT_SOCKET_TIMEOUT = "servicecomb.kie.client.timeout.socket";

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.util.Map;

import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.utils.URIBuilder;
import org.apache.servicecomb.http.client.auth.RequestAuthHeaderProvider;
import org.apache.servicecomb.http.client.common.HttpConfiguration.SSLProperties;
Expand Down Expand Up @@ -59,13 +60,20 @@
import org.apache.servicecomb.service.center.client.model.UpdatePropertiesRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.env.Environment;

import com.google.common.eventbus.EventBus;

public class ServiceCenterClient implements ServiceCenterOperation {

private static final Logger LOGGER = LoggerFactory.getLogger(ServiceCenterClient.class);

private static final String CLIENT_CONNECT_TIMEOUT = "servicecomb.service.client.timeout.connect";

private static final String CLIENT_REQUEST_TIMEOUT = "servicecomb.service.client.timeout.request";

private static final String CLIENT_SOCKET_TIMEOUT = "servicecomb.service.client.timeout.socket";

private final ServiceCenterRawClient httpClient;

private EventBus eventBus;
Expand All @@ -86,8 +94,9 @@ public ServiceCenterClient(ServiceCenterAddressManager addressManager,
SSLProperties sslProperties,
RequestAuthHeaderProvider requestAuthHeaderProvider,
String tenantName,
Map<String, String> extraGlobalHeaders) {
HttpTransport httpTransport = HttpTransportFactory.createHttpTransport(sslProperties, requestAuthHeaderProvider);
Map<String, String> extraGlobalHeaders, Environment environment) {
HttpTransport httpTransport = HttpTransportFactory.createHttpTransport(sslProperties, requestAuthHeaderProvider,
buildRequestConfig(environment));
httpTransport.addHeaders(extraGlobalHeaders);

this.httpClient = new ServiceCenterRawClient.Builder()
Expand All @@ -97,6 +106,17 @@ public ServiceCenterClient(ServiceCenterAddressManager addressManager,
this.addressManager = addressManager;
}

private RequestConfig buildRequestConfig(Environment environment) {
RequestConfig.Builder builder = HttpTransportFactory.defaultRequestConfig();
if (environment == null) {
return builder.build();
}
builder.setConnectTimeout(environment.getProperty(CLIENT_CONNECT_TIMEOUT, int.class, 5000));
builder.setConnectionRequestTimeout(environment.getProperty(CLIENT_REQUEST_TIMEOUT, int.class, 5000));
builder.setSocketTimeout(environment.getProperty(CLIENT_SOCKET_TIMEOUT, int.class, 5000));
return builder.build();
}

@Override
public MicroserviceInstancesResponse getServiceCenterInstances() {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
import org.apache.servicecomb.service.center.client.model.MicroserviceInstance;
import org.apache.servicecomb.service.center.client.model.SchemaInfo;
import org.apache.servicecomb.service.center.client.model.ServiceCenterConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

import com.google.common.base.Charsets;
Expand All @@ -58,14 +60,21 @@ public class RegistryClientTest implements CategorizedTestCase {
// auto test only tests 'hasRegistered=false', can run this client many times to test 'hasRegistered=true'
private boolean hasRegistered = true;

private final Environment environment;

@Autowired
public RegistryClientTest(Environment environment) {
this.environment = environment;
}

@Override
public void testRestTransport() throws Exception {
ServiceCenterAddressManager addressManager = new ServiceCenterAddressManager("default", Arrays.asList("http://127.0.0.1:30100"),
new EventBus());
SSLProperties sslProperties = new SSLProperties();
sslProperties.setEnabled(false);
ServiceCenterClient serviceCenterClient = new ServiceCenterClient(addressManager, sslProperties,
new DefaultRequestAuthHeaderProvider(), "default", null);
new DefaultRequestAuthHeaderProvider(), "default", null, environment);
EventBus eventBus = new SimpleEventBus();
ServiceCenterConfiguration serviceCenterConfiguration = new ServiceCenterConfiguration();
ServiceCenterRegistration serviceCenterRegistration = new ServiceCenterRegistration(serviceCenterClient,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.util.Collections;
import java.util.List;

import org.apache.commons.configuration.Configuration;
import org.apache.servicecomb.config.collect.ConfigCenterDefaultDeploymentProvider;
import org.apache.servicecomb.deployment.Deployment;
import org.apache.servicecomb.foundation.vertx.VertxConst;
Expand Down Expand Up @@ -51,6 +52,12 @@ public final class ConfigCenterConfig {

private static final int DEFAULT_FIRST_REFRESH_INTERVAL = 0;

private static final String CLIENT_CONNECT_TIMEOUT = "servicecomb.config.client.timeout.connect";

private static final String CLIENT_REQUEST_TIMEOUT = "servicecomb.config.client.timeout.request";

private static final String CLIENT_SOCKET_TIMEOUT = "servicecomb.config.client.timeout.socket";

private ConfigCenterConfig() {
}

Expand Down Expand Up @@ -135,4 +142,16 @@ public boolean getAutoDiscoveryEnabled() {
public String getEnvironment() {
return BootStrapProperties.readServiceEnvironment(finalConfig);
}

public int getConnectTimeout(Configuration localConfiguration) {
return localConfiguration.getInt(CLIENT_CONNECT_TIMEOUT, 5000);
}

public int getConnectionRequestTimeout(Configuration configuration) {
return configuration.getInt(CLIENT_REQUEST_TIMEOUT, 5000);
}

public int getSocketTimeout(Configuration configuration) {
return configuration.getInt(CLIENT_SOCKET_TIMEOUT, 5000);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,7 @@ public void init(Configuration localConfiguration) {
ConfigCenterAddressManager configCenterAddressManager = configCenterAddressManager();

HttpTransport httpTransport = createHttpTransport(configCenterAddressManager,
HttpTransportFactory.defaultRequestConfig().build(),
localConfiguration);
buildRequestConfig(localConfiguration), localConfiguration);
ConfigCenterClient configCenterClient = new ConfigCenterClient(configCenterAddressManager, httpTransport);
EventManager.register(this);

Expand All @@ -106,6 +105,14 @@ public void init(Configuration localConfiguration) {
configCenterManager.startConfigCenterManager();
}

private RequestConfig buildRequestConfig(Configuration configuration) {
RequestConfig.Builder builder = HttpTransportFactory.defaultRequestConfig();
builder.setConnectTimeout(ConfigCenterConfig.INSTANCE.getConnectTimeout(configuration));
builder.setConnectionRequestTimeout(ConfigCenterConfig.INSTANCE.getConnectionRequestTimeout(configuration));
builder.setSocketTimeout(ConfigCenterConfig.INSTANCE.getSocketTimeout(configuration));
return builder.build();
}

private QueryConfigurationsRequest firstPull(ConfigCenterClient configCenterClient,
ConfigCenterAddressManager configCenterAddressManager) {
QueryConfigurationsRequest queryConfigurationsRequest = createQueryConfigurationsRequest();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,14 @@
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.config.RequestConfig.Builder;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.servicecomb.config.common.ConfigConverter;
import org.apache.servicecomb.config.common.ConfigurationChangedEvent;
import org.apache.servicecomb.config.kie.client.KieClient;
import org.apache.servicecomb.config.kie.client.KieConfigManager;
import org.apache.servicecomb.config.kie.client.model.ConfigConstants;
import org.apache.servicecomb.config.kie.client.model.KieAddressManager;
import org.apache.servicecomb.config.kie.client.model.KieConfiguration;
import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource;
Expand Down Expand Up @@ -85,7 +87,7 @@ public void init(Configuration localConfiguration) {
configConverter = new ConfigConverter(KieConfig.INSTANCE.getFileSources());
KieAddressManager kieAddressManager = configKieAddressManager();

RequestConfig.Builder requestBuilder = HttpTransportFactory.defaultRequestConfig();
RequestConfig.Builder requestBuilder = buildRequestConfigBuilder(localConfiguration);
if (KieConfig.INSTANCE.enableLongPolling()
&& KieConfig.INSTANCE.getPollingWaitTime() >= 0) {
requestBuilder.setConnectionRequestTimeout(KieConfig.INSTANCE.getPollingWaitTime() * 2 * 1000);
Expand All @@ -103,6 +105,14 @@ public void init(Configuration localConfiguration) {
updateConfiguration(WatchedUpdateResult.createIncremental(configConverter.getCurrentData(), null, null));
}

private Builder buildRequestConfigBuilder(Configuration configuration) {
RequestConfig.Builder builder = HttpTransportFactory.defaultRequestConfig();
builder.setConnectTimeout(configuration.getInt(ConfigConstants.CLIENT_CONNECT_TIMEOUT, 5000));
builder.setConnectionRequestTimeout(configuration.getInt(ConfigConstants.CLIENT_REQUEST_TIMEOUT, 5000));
builder.setSocketTimeout(configuration.getInt(ConfigConstants.CLIENT_SOCKET_TIMEOUT, 5000));
return builder;
}

@Subscribe
public void onConfigurationChangedEvent(ConfigurationChangedEvent event) {
updateConfiguration(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void startup(Environment environment) {
// header: x-domain-name and url: /v1/{project}/ are all token from getTenantName。
ServiceCenterClient serviceCenterClient = new ServiceCenterClient(
addressManager, sslProperties, new DefaultRequestAuthHeaderProvider(), getTenantName(environment),
new HashMap<>(0)
new HashMap<>(0), environment
);
Map<String, ServiceCenterClient> clients = new HashMap<>(1);
clients
Expand Down
Loading