Skip to content

Commit

Permalink
**What?**
Browse files Browse the repository at this point in the history
Decouple core library from archaius1

**Why?**
Archaius1 is a deprecated library that also promotes static access patterns.  This PR is a first step of many to first decouple the library.  Subsequent PRs will address static access patterns.

**How?**
- Upgrade from Java 1.7 to 1.8
- Move all archaius specific code into ribbon-archaius
- Static ClientConfigFactory discoverable via the ServiceLoader
- Add default values to IClientConfigKey
  • Loading branch information
elandau committed Jan 24, 2019
1 parent 304e38c commit e90ef80
Show file tree
Hide file tree
Showing 34 changed files with 301 additions and 251 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ subprojects {
apply plugin: 'nebula.netflixoss'
apply plugin: 'java'

sourceCompatibility = 1.7
targetCompatibility = 1.7
sourceCompatibility = 1.8
targetCompatibility = 1.8

group = "com.netflix.${githubProjectName}" // TEMPLATE: Set to organization of project

Expand Down
12 changes: 12 additions & 0 deletions ribbon-archaius/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
dependencies {
compile 'org.slf4j:slf4j-api:1.6.4'
compile 'com.google.code.findbugs:annotations:2.0.0'
compile "com.google.guava:guava:${guava_version}"
compile 'commons-configuration:commons-configuration:1.8'
compile 'commons-lang:commons-lang:2.6'
compile "com.netflix.archaius:archaius-core:${archaius_version}"

compile project(':ribbon-core')

testCompile 'junit:junit:4.11'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.netflix.client.config;

public class ArchaiusClientConfigFactory implements ClientConfigFactory {
@Override
public IClientConfig newConfig() {
return new DefaultClientConfigImpl();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@

import com.google.common.base.Strings;
import com.netflix.client.VipAddressResolver;

import com.netflix.config.ConfigurationManager;
import com.netflix.config.DynamicProperty;
import com.netflix.config.DynamicPropertyFactory;
import com.netflix.config.DynamicStringProperty;

import org.apache.commons.configuration.AbstractConfiguration;
import org.apache.commons.configuration.Configuration;
import org.slf4j.Logger;
Expand Down Expand Up @@ -84,71 +84,71 @@ public class DefaultClientConfigImpl implements IClientConfig {

public static final Boolean DEFAULT_PRIORITIZE_VIP_ADDRESS_BASED_SERVERS = Boolean.TRUE;

public static final String DEFAULT_NFLOADBALANCER_PING_CLASSNAME = "com.netflix.loadbalancer.DummyPing"; // DummyPing.class.getName();
public static final String DEFAULT_NFLOADBALANCER_PING_CLASSNAME = CommonClientConfigKey.NFLoadBalancerPingClassName.getDefaultValue();

public static final String DEFAULT_NFLOADBALANCER_RULE_CLASSNAME = "com.netflix.loadbalancer.AvailabilityFilteringRule";
public static final String DEFAULT_NFLOADBALANCER_RULE_CLASSNAME = CommonClientConfigKey.NFLoadBalancerRuleClassName.getDefaultValue();

public static final String DEFAULT_NFLOADBALANCER_CLASSNAME = "com.netflix.loadbalancer.ZoneAwareLoadBalancer";
public static final String DEFAULT_NFLOADBALANCER_CLASSNAME = CommonClientConfigKey.NFLoadBalancerClassName.getDefaultValue();

public static final boolean DEFAULT_USEIPADDRESS_FOR_SERVER = Boolean.FALSE;
public static final boolean DEFAULT_USEIPADDRESS_FOR_SERVER = CommonClientConfigKey.UseIPAddrForServer.getDefaultValue();

public static final String DEFAULT_CLIENT_CLASSNAME = "com.netflix.niws.client.http.RestClient";
public static final String DEFAULT_CLIENT_CLASSNAME = CommonClientConfigKey.ClientClassName.getDefaultValue();

public static final String DEFAULT_VIPADDRESS_RESOLVER_CLASSNAME = "com.netflix.client.SimpleVipAddressResolver";
public static final String DEFAULT_VIPADDRESS_RESOLVER_CLASSNAME = CommonClientConfigKey.VipAddressResolverClassName.getDefaultValue();

public static final String DEFAULT_PRIME_CONNECTIONS_URI = "/";
public static final String DEFAULT_PRIME_CONNECTIONS_URI = CommonClientConfigKey.PrimeConnectionsURI.getDefaultValue();

public static final int DEFAULT_MAX_TOTAL_TIME_TO_PRIME_CONNECTIONS = 30000;
public static final int DEFAULT_MAX_TOTAL_TIME_TO_PRIME_CONNECTIONS = CommonClientConfigKey.MaxTotalTimeToPrimeConnections.getDefaultValue();

public static final int DEFAULT_MAX_RETRIES_PER_SERVER_PRIME_CONNECTION = 9;
public static final int DEFAULT_MAX_RETRIES_PER_SERVER_PRIME_CONNECTION = CommonClientConfigKey.MaxRetriesPerServerPrimeConnection.getDefaultValue();

public static final Boolean DEFAULT_ENABLE_PRIME_CONNECTIONS = Boolean.FALSE;
public static final Boolean DEFAULT_ENABLE_PRIME_CONNECTIONS = CommonClientConfigKey.EnablePrimeConnections.getDefaultValue();

public static final int DEFAULT_MAX_REQUESTS_ALLOWED_PER_WINDOW = Integer.MAX_VALUE;

public static final int DEFAULT_REQUEST_THROTTLING_WINDOW_IN_MILLIS = 60000;

public static final Boolean DEFAULT_ENABLE_REQUEST_THROTTLING = Boolean.FALSE;

public static final Boolean DEFAULT_ENABLE_GZIP_CONTENT_ENCODING_FILTER = Boolean.FALSE;
public static final Boolean DEFAULT_ENABLE_GZIP_CONTENT_ENCODING_FILTER = CommonClientConfigKey.EnableGZIPContentEncodingFilter.getDefaultValue();

public static final Boolean DEFAULT_CONNECTION_POOL_CLEANER_TASK_ENABLED = Boolean.TRUE;

public static final Boolean DEFAULT_FOLLOW_REDIRECTS = Boolean.FALSE;
public static final Boolean DEFAULT_FOLLOW_REDIRECTS = CommonClientConfigKey.FollowRedirects.getDefaultValue();

public static final float DEFAULT_PERCENTAGE_NIWS_EVENT_LOGGED = 0.0f;

public static final int DEFAULT_MAX_AUTO_RETRIES_NEXT_SERVER = 1;
public static final int DEFAULT_MAX_AUTO_RETRIES_NEXT_SERVER = CommonClientConfigKey.MaxAutoRetriesNextServer.getDefaultValue();

public static final int DEFAULT_MAX_AUTO_RETRIES = 0;
public static final int DEFAULT_MAX_AUTO_RETRIES = CommonClientConfigKey.MaxAutoRetries.getDefaultValue();

public static final int DEFAULT_BACKOFF_INTERVAL = 0;
public static final int DEFAULT_BACKOFF_INTERVAL = CommonClientConfigKey.BackoffInterval.getDefaultValue();

public static final int DEFAULT_READ_TIMEOUT = 5000;
public static final int DEFAULT_READ_TIMEOUT = CommonClientConfigKey.ReadTimeout.getDefaultValue();

public static final int DEFAULT_CONNECTION_MANAGER_TIMEOUT = 2000;
public static final int DEFAULT_CONNECTION_MANAGER_TIMEOUT = CommonClientConfigKey.ConnectionManagerTimeout.getDefaultValue();

public static final int DEFAULT_CONNECT_TIMEOUT = 2000;
public static final int DEFAULT_CONNECT_TIMEOUT = CommonClientConfigKey.ConnectTimeout.getDefaultValue();

public static final Boolean DEFAULT_ENABLE_CONNECTION_POOL = Boolean.TRUE;
public static final Boolean DEFAULT_ENABLE_CONNECTION_POOL = CommonClientConfigKey.EnableConnectionPool.getDefaultValue();

@Deprecated
public static final int DEFAULT_MAX_HTTP_CONNECTIONS_PER_HOST = 50;

@Deprecated
public static final int DEFAULT_MAX_TOTAL_HTTP_CONNECTIONS = 200;
public static final int DEFAULT_MAX_TOTAL_HTTP_CONNECTIONS = CommonClientConfigKey.MaxTotalHttpConnections.getDefaultValue();

public static final int DEFAULT_MAX_CONNECTIONS_PER_HOST = 50;
public static final int DEFAULT_MAX_CONNECTIONS_PER_HOST = CommonClientConfigKey.MaxConnectionsPerHost.getDefaultValue();

public static final int DEFAULT_MAX_TOTAL_CONNECTIONS = 200;
public static final int DEFAULT_MAX_TOTAL_CONNECTIONS = CommonClientConfigKey.MaxTotalConnections.getDefaultValue();

public static final float DEFAULT_MIN_PRIME_CONNECTIONS_RATIO = 1.0f;
public static final float DEFAULT_MIN_PRIME_CONNECTIONS_RATIO = CommonClientConfigKey.MinPrimeConnectionsRatio.getDefaultValue();

public static final String DEFAULT_PRIME_CONNECTIONS_CLASS = "com.netflix.niws.client.http.HttpPrimeConnection";
public static final String DEFAULT_PRIME_CONNECTIONS_CLASS = CommonClientConfigKey.PrimeConnectionsClassName.getDefaultValue();

public static final String DEFAULT_SEVER_LIST_CLASS = "com.netflix.loadbalancer.ConfigurationBasedServerList";
public static final String DEFAULT_SEVER_LIST_CLASS = CommonClientConfigKey.NIWSServerListClassName.getDefaultValue();

public static final String DEFAULT_SERVER_LIST_UPDATER_CLASS = "com.netflix.loadbalancer.PollingServerListUpdater";
public static final String DEFAULT_SERVER_LIST_UPDATER_CLASS = CommonClientConfigKey.ServerListUpdaterClassName.getDefaultValue();

public static final int DEFAULT_CONNECTION_IDLE_TIMERTASK_REPEAT_IN_MSECS = 30000; // every half minute (30 secs)

Expand All @@ -173,16 +173,16 @@ public class DefaultClientConfigImpl implements IClientConfig {
public static final int DEFAULT_POOL_MIN_THREADS = 1;
public static final long DEFAULT_POOL_KEEP_ALIVE_TIME = 15 * 60L;
public static final TimeUnit DEFAULT_POOL_KEEP_ALIVE_TIME_UNITS = TimeUnit.SECONDS;
public static final Boolean DEFAULT_ENABLE_ZONE_AFFINITY = Boolean.FALSE;
public static final Boolean DEFAULT_ENABLE_ZONE_EXCLUSIVITY = Boolean.FALSE;
public static final int DEFAULT_PORT = 7001;
public static final Boolean DEFAULT_ENABLE_LOADBALANCER = Boolean.TRUE;
public static final Boolean DEFAULT_ENABLE_ZONE_AFFINITY = CommonClientConfigKey.EnableZoneAffinity.getDefaultValue();
public static final Boolean DEFAULT_ENABLE_ZONE_EXCLUSIVITY = CommonClientConfigKey.EnableZoneExclusivity.getDefaultValue();
public static final int DEFAULT_PORT = CommonClientConfigKey.Port.getDefaultValue();
public static final Boolean DEFAULT_ENABLE_LOADBALANCER = CommonClientConfigKey.InitializeNFLoadBalancer.getDefaultValue();

public static final String DEFAULT_PROPERTY_NAME_SPACE = "ribbon";
public static final String DEFAULT_PROPERTY_NAME_SPACE = CommonClientConfigKey.DEFAULT_NAME_SPACE;

private String propertyNameSpace = DEFAULT_PROPERTY_NAME_SPACE;

public static final Boolean DEFAULT_OK_TO_RETRY_ON_ALL_OPERATIONS = Boolean.FALSE;
public static final Boolean DEFAULT_OK_TO_RETRY_ON_ALL_OPERATIONS = CommonClientConfigKey.OkToRetryOnAllOperations.getDefaultValue();

public static final Boolean DEFAULT_ENABLE_NIWS_EVENT_LOGGING = Boolean.TRUE;

Expand Down Expand Up @@ -632,7 +632,7 @@ private VipAddressResolver getVipAddressResolver() {
if (resolver == null) {
try {
resolver = (VipAddressResolver) Class
.forName((String) getProperty(CommonClientConfigKey.VipAddressResolverClassName))
.forName(getOrDefault(CommonClientConfigKey.VipAddressResolverClassName))
.newInstance();
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
throw new RuntimeException("Cannot instantiate VipAddressResolver", e);
Expand All @@ -645,29 +645,19 @@ private VipAddressResolver getVipAddressResolver() {

@Override
public String resolveDeploymentContextbasedVipAddresses(){
String deploymentContextBasedVipAddressesMacro = (String) getProperty(CommonClientConfigKey.DeploymentContextBasedVipAddresses);
String deploymentContextBasedVipAddressesMacro = get(CommonClientConfigKey.DeploymentContextBasedVipAddresses);
if (deploymentContextBasedVipAddressesMacro == null) {
return null;
}
return getVipAddressResolver().resolve(deploymentContextBasedVipAddressesMacro, this);
}

public String getAppName(){
String appName = null;
Object an = getProperty(CommonClientConfigKey.AppName);
if (an!=null){
appName = "" + an;
}
return appName;
return get(CommonClientConfigKey.AppName);
}

public String getVersion(){
String version = null;
Object an = getProperty(CommonClientConfigKey.Version);
if (an!=null){
version = "" + an;
}
return version;
return get(CommonClientConfigKey.Version);
}

/* (non-Javadoc)
Expand Down Expand Up @@ -819,6 +809,11 @@ public String getNameSpace() {
return propertyNameSpace;
}

@Override
public void setNameSpace(String nameSpace) {
this.propertyNameSpace = nameSpace;
}

public static DefaultClientConfigImpl getEmptyConfig() {
return new DefaultClientConfigImpl();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@
*
* @author awang
*
* @deprecated This class is no longer necessary as part of Ribbon and should not be used by anyone
*/
@Deprecated
public class ScheduledThreadPoolExectuorWithDynamicSize extends ScheduledThreadPoolExecutor {

private final Thread shutdownThread;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
com.netflix.client.config.ArchaiusClientConfigFactory
6 changes: 3 additions & 3 deletions ribbon-core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ dependencies {
compile 'org.slf4j:slf4j-api:1.6.4'
compile 'com.google.code.findbugs:annotations:2.0.0'
compile "com.google.guava:guava:${guava_version}"
compile 'commons-configuration:commons-configuration:1.8'
compile 'commons-lang:commons-lang:2.6'
compile "com.netflix.archaius:archaius-core:${archaius_version}"
testCompile 'junit:junit:4.11'

testCompile 'junit:junit:4.11'
testCompile project(":ribbon-archaius")
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

import com.google.common.collect.Lists;
import com.netflix.client.config.CommonClientConfigKey;
import com.netflix.client.config.DefaultClientConfigImpl;
import com.netflix.client.config.IClientConfig;

import java.net.ConnectException;
Expand Down Expand Up @@ -61,9 +60,9 @@ public DefaultLoadBalancerRetryHandler(int retrySameServer, int retryNextServer,
}

public DefaultLoadBalancerRetryHandler(IClientConfig clientConfig) {
this.retrySameServer = clientConfig.get(CommonClientConfigKey.MaxAutoRetries, DefaultClientConfigImpl.DEFAULT_MAX_AUTO_RETRIES);
this.retryNextServer = clientConfig.get(CommonClientConfigKey.MaxAutoRetriesNextServer, DefaultClientConfigImpl.DEFAULT_MAX_AUTO_RETRIES_NEXT_SERVER);
this.retryEnabled = clientConfig.get(CommonClientConfigKey.OkToRetryOnAllOperations, false);
this.retrySameServer = clientConfig.getOrDefault(CommonClientConfigKey.MaxAutoRetries);
this.retryNextServer = clientConfig.getOrDefault(CommonClientConfigKey.MaxAutoRetriesNextServer);
this.retryEnabled = clientConfig.getOrDefault(CommonClientConfigKey.OkToRetryOnAllOperations);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,28 @@
package com.netflix.client.config;


import java.util.Comparator;
import java.util.ServiceLoader;
import java.util.stream.StreamSupport;

/**
* Created by awang on 7/18/14.
*/
public interface ClientConfigFactory {
IClientConfig newConfig();

public static class DefaultClientConfigFactory implements ClientConfigFactory {
@Override
public IClientConfig newConfig() {
IClientConfig config = new DefaultClientConfigImpl();
return config;
}
ClientConfigFactory DEFAULT = findDefaultConfigFactory();

default int getPriority() { return 0; }

static ClientConfigFactory findDefaultConfigFactory() {
return StreamSupport.stream(ServiceLoader.load(ClientConfigFactory.class).spliterator(), false)
.sorted(Comparator
.comparingInt(ClientConfigFactory::getPriority)
.thenComparing(Comparator.comparing(f -> f.getClass().getCanonicalName())))
.findFirst()
.orElseGet(() -> {
throw new IllegalStateException("Expecting on implementation of ClientConfigFactory discoverable via the ServiceLoader");
});
}

public static final ClientConfigFactory DEFAULT = new DefaultClientConfigFactory();
}
Loading

0 comments on commit e90ef80

Please sign in to comment.