From 3e1db08dce649f6d426aae67d506c8c23b15f6e8 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Wed, 18 Sep 2013 16:05:59 +0000
Subject: [PATCH] Fix OPENDJ-1058 – HeartbeatConnectionFactory does not actively shutdown dead connections
---
opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java | 17 +++++++++++------
1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java
index 7f84a81..edb811a 100644
--- a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java
+++ b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java
@@ -970,6 +970,9 @@
Math.max(configuration.get("connectionPoolSize").defaultTo(10).asInteger(), 1);
final int heartBeatIntervalSeconds =
Math.max(configuration.get("heartBeatIntervalSeconds").defaultTo(30).asInteger(), 1);
+ final int heartBeatTimeoutMilliSeconds =
+ Math.max(configuration.get("heartBeatTimeoutMilliSeconds").defaultTo(500)
+ .asInteger(), 100);
// Parse authentication parameters.
final BindRequest bindRequest;
@@ -1036,7 +1039,7 @@
}
final ConnectionFactory primary =
parseLDAPServers(primaryLDAPServers, bindRequest, connectionPoolSize,
- heartBeatIntervalSeconds, options);
+ heartBeatIntervalSeconds, heartBeatTimeoutMilliSeconds, options);
// Parse secondary data center(s).
final JsonValue secondaryLDAPServers = configuration.get("secondaryLDAPServers");
@@ -1045,7 +1048,7 @@
if (secondaryLDAPServers.size() > 0) {
secondary =
parseLDAPServers(secondaryLDAPServers, bindRequest, connectionPoolSize,
- heartBeatIntervalSeconds, options);
+ heartBeatIntervalSeconds, heartBeatTimeoutMilliSeconds, options);
} else {
secondary = null;
}
@@ -1093,20 +1096,22 @@
private static ConnectionFactory parseLDAPServers(final JsonValue config,
final BindRequest bindRequest, final int connectionPoolSize,
- final int heartBeatIntervalSeconds, final LDAPOptions options) {
+ final int heartBeatIntervalSeconds, final int heartBeatTimeoutMilliSeconds,
+ final LDAPOptions options) {
final List<ConnectionFactory> servers = new ArrayList<ConnectionFactory>(config.size());
for (final JsonValue server : config) {
final String host = server.get("hostname").required().asString();
final int port = server.get("port").required().asInteger();
ConnectionFactory factory = new LDAPConnectionFactory(host, port, options);
+ factory =
+ Connections.newHeartBeatConnectionFactory(factory,
+ heartBeatIntervalSeconds * 1000, heartBeatTimeoutMilliSeconds,
+ TimeUnit.MILLISECONDS);
if (bindRequest != null) {
factory = Connections.newAuthenticatedConnectionFactory(factory, bindRequest);
}
if (connectionPoolSize > 1) {
factory =
- Connections.newHeartBeatConnectionFactory(factory,
- heartBeatIntervalSeconds, TimeUnit.SECONDS);
- factory =
Connections.newCachedConnectionPool(factory, 0, connectionPoolSize, 60L,
TimeUnit.SECONDS);
}
--
Gitblit v1.10.0