Skip to content

Commit 8ee3414

Browse files
committed
refactor extendedhostresolver
1 parent 1776b54 commit 8ee3414

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

src/main/java/com/arangodb/internal/ArangoDefaults.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ private ArangoDefaults() {
4949
public static final int MAX_CONNECTIONS_HTTP_DEFAULT = 20;
5050
public static final Protocol DEFAULT_NETWORK_PROTOCOL = Protocol.VST;
5151
public static final boolean DEFAULT_ACQUIRE_HOST_LIST = false;
52+
public static final int DEFAULT_ACQUIRE_HOST_LIST_INTERVAL = 60 * 60 * 1000; // hour
5253
public static final LoadBalancingStrategy DEFAULT_LOAD_BALANCING_STRATEGY = LoadBalancingStrategy.NONE;
5354

5455
}

src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ public abstract class InternalArangoDBBuilder {
7474
private static final String PROPERTY_KEY_MAX_CONNECTIONS = "arangodb.connections.max";
7575
private static final String PROPERTY_KEY_CONNECTION_TTL = "arangodb.connections.ttl";
7676
private static final String PROPERTY_KEY_ACQUIRE_HOST_LIST = "arangodb.acquireHostList";
77+
private static final String PROPERTY_KEY_ACQUIRE_HOST_LIST_INTERVAL = "arangodb.acquireHostList.interval";
7778
private static final String PROPERTY_KEY_LOAD_BALANCING_STRATEGY = "arangodb.loadBalancingStrategy";
7879
private static final String DEFAULT_PROPERTY_FILE = "/arangodb.properties";
7980

@@ -92,9 +93,12 @@ public abstract class InternalArangoDBBuilder {
9293
protected ArangoSerializer serializer;
9394
protected ArangoDeserializer deserializer;
9495
protected Boolean acquireHostList;
96+
protected Integer acquireHostListInterval;
9597
protected LoadBalancingStrategy loadBalancingStrategy;
9698
protected ArangoSerialization customSerializer;
9799

100+
101+
98102
public InternalArangoDBBuilder() {
99103
super();
100104
vpackBuilder = new VPack.Builder();
@@ -133,6 +137,7 @@ protected void loadProperties(final Properties properties) {
133137
maxConnections = loadMaxConnections(properties, maxConnections);
134138
connectionTtl = loadConnectionTtl(properties, connectionTtl);
135139
acquireHostList = loadAcquireHostList(properties, acquireHostList);
140+
acquireHostListInterval = loadAcquireHostListInterval(properties, acquireHostListInterval);
136141
loadBalancingStrategy = loadLoadBalancingStrategy(properties, loadBalancingStrategy);
137142
}
138143

@@ -196,7 +201,7 @@ protected HostResolver createHostResolver(final Collection<Host> hosts, final in
196201

197202
if(acquireHostList) {
198203
LOGGER.debug("acquireHostList -> Use ExtendedHostResolver");
199-
return new ExtendedHostResolver(new ArrayList<Host>(hosts), maxConnections, connectionFactory);
204+
return new ExtendedHostResolver(new ArrayList<Host>(hosts), maxConnections, connectionFactory, acquireHostListInterval);
200205
} else {
201206
LOGGER.debug("Use SimpleHostResolver");
202207
return new SimpleHostResolver(new ArrayList<Host>(hosts));
@@ -295,6 +300,11 @@ private static Boolean loadAcquireHostList(final Properties properties, final Bo
295300
ArangoDefaults.DEFAULT_ACQUIRE_HOST_LIST));
296301
}
297302

303+
private static int loadAcquireHostListInterval(final Properties properties, final Integer currentValue) {
304+
return Integer.parseInt(getProperty(properties, PROPERTY_KEY_ACQUIRE_HOST_LIST_INTERVAL, currentValue,
305+
ArangoDefaults.DEFAULT_ACQUIRE_HOST_LIST_INTERVAL));
306+
}
307+
298308
private static LoadBalancingStrategy loadLoadBalancingStrategy(
299309
final Properties properties,
300310
final LoadBalancingStrategy currentValue) {

src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,24 +50,26 @@ public class ExtendedHostResolver implements HostResolver {
5050

5151
private static final Logger LOGGER = LoggerFactory.getLogger(ExtendedHostResolver.class);
5252

53-
private static final long MAX_CACHE_TIME = 60 * 60 * 1000;
54-
5553
private HostSet hosts;
5654

5755
private final Integer maxConnections;
5856
private final ConnectionFactory connectionFactory;
5957

6058
private long lastUpdate;
59+
private Integer acquireHostListInterval;
6160

6261
private ArangoExecutorSync executor;
6362
private ArangoSerialization arangoSerialization;
6463

64+
6565
public ExtendedHostResolver(final List<Host> hosts, final Integer maxConnections,
66-
final ConnectionFactory connectionFactory) {
67-
super();
66+
final ConnectionFactory connectionFactory, Integer acquireHostListInterval) {
67+
68+
this.acquireHostListInterval = acquireHostListInterval;
6869
this.hosts = new HostSet(hosts);
6970
this.maxConnections = maxConnections;
7071
this.connectionFactory = connectionFactory;
72+
7173
lastUpdate = 0;
7274
}
7375

@@ -160,6 +162,7 @@ public Collection<String> deserialize(final Response response) throws VPackExcep
160162
}
161163

162164
private boolean isExpired() {
163-
return System.currentTimeMillis() > lastUpdate + MAX_CACHE_TIME;
165+
return System.currentTimeMillis() > (lastUpdate + acquireHostListInterval);
164166
}
167+
165168
}

0 commit comments

Comments
 (0)