Loading cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapConnectionPool.java +20 −15 Original line number Diff line number Diff line Loading @@ -69,23 +69,22 @@ package ca.nrc.cadc.ac.server.ldap; import org.apache.log4j.Logger; import ca.nrc.cadc.ac.server.ldap.LdapConfig.LdapPool; import ca.nrc.cadc.ac.server.ldap.LdapConfig.PoolPolicy; import ca.nrc.cadc.ac.server.ldap.LdapConfig.SystemState; import ca.nrc.cadc.net.TransientException; import ca.nrc.cadc.profiler.Profiler; import com.unboundid.ldap.sdk.FewestConnectionsServerSet; import com.unboundid.ldap.sdk.Filter; import com.unboundid.ldap.sdk.LDAPConnection; import com.unboundid.ldap.sdk.LDAPConnectionOptions; import com.unboundid.ldap.sdk.LDAPConnectionPool; import com.unboundid.ldap.sdk.LDAPException; import com.unboundid.ldap.sdk.RoundRobinServerSet; import com.unboundid.ldap.sdk.SearchRequest; import com.unboundid.ldap.sdk.SearchScope; import com.unboundid.ldap.sdk.ServerSet; import com.unboundid.ldap.sdk.SimpleBindRequest; import org.apache.log4j.Logger; /** * This object is designed to be shared between the DAO classes Loading @@ -99,8 +98,6 @@ public class LdapConnectionPool { private static final Logger logger = Logger.getLogger(LdapConnectionPool.class); Profiler profiler = new Profiler(LdapConnectionPool.class); protected LdapConfig currentConfig; private String poolName; private LDAPConnectionPool pool; Loading Loading @@ -129,6 +126,7 @@ public class LdapConnectionPool logger.debug("Construct pool: " + poolName + ". system state: " + systemState); if (SystemState.ONLINE.equals(systemState) || (SystemState.READONLY.equals(systemState) && readOnly)) { Profiler profiler = new Profiler(LdapConnectionPool.class); synchronized (poolMonitor) { if (!boundPool) Loading Loading @@ -168,23 +166,27 @@ public class LdapConnectionPool try { Profiler profiler = new Profiler(LdapConnectionPool.class); LDAPConnection conn = null; synchronized (poolMonitor) { conn = pool.getConnection(); profiler.checkpoint("pool.getConnection"); // BM: This query to the base dn (starting at dc=) has the // effect of clearing any proxied authorization state associated // with the receiving ldap server connection. Without this in // place, proxied authorization information is sometimes ignored. logger.debug("Testing connection"); int dcIndex = currentConfig.getGroupsDN().indexOf("dc="); String dcDN = currentConfig.getGroupsDN().substring(dcIndex); Filter filter = Filter.createEqualityFilter("dc", "*"); SearchRequest searchRequest = new SearchRequest(dcDN, SearchScope.BASE, filter, new String[] {"entrydn"}); conn.search(searchRequest); profiler.checkpoint("pool.initConnection"); // logger.debug("Testing connection"); // int index = currentConfig.getGroupsDN().indexOf(','); // String rdn = currentConfig.getGroupsDN().substring(0, index); // Filter filter = Filter.create("(" + rdn + ")"); // // index = rdn.indexOf('='); // String attribute = rdn.substring(0, index); // // SearchRequest searchRequest = new SearchRequest(currentConfig.getGroupsDN(), SearchScope.BASE, filter, new String[] {attribute}); // conn.search(searchRequest); // profiler.checkpoint("pool.initConnection"); } logger.debug(poolName + " pool statistics after borrow:\n" + pool.getConnectionPoolStatistics()); profiler.checkpoint("get " + poolName + " only connection"); Loading @@ -202,7 +204,9 @@ public class LdapConnectionPool { if (pool != null) { Profiler profiler = new Profiler(LdapConnectionPool.class); pool.releaseConnection(conn); profiler.checkpoint("pool.releaseConnection"); logger.debug(poolName + " pool statistics after release:\n" + pool.getConnectionPoolStatistics()); } } Loading @@ -217,8 +221,9 @@ public class LdapConnectionPool if (pool != null) { logger.debug("Closing pool..."); Profiler profiler = new Profiler(LdapConnectionPool.class); pool.close(); profiler.checkpoint("Pool closed."); profiler.checkpoint("pool.shutdown"); } } Loading cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapConnections.java +4 −2 Original line number Diff line number Diff line Loading @@ -91,8 +91,6 @@ class LdapConnections { private final static Logger log = Logger.getLogger(LdapConnections.class); Profiler profiler = new Profiler(LdapConnections.class); private LdapPersistence persistence; private LdapConfig config; Loading Loading @@ -134,6 +132,7 @@ class LdapConnections if (autoConfigReadOnlyConn == null) { log.debug("Getting new auto config read only connection."); Profiler profiler = new Profiler(LdapConnections.class); autoConfigReadOnlyConn = readOnlyPool.getConnection(); profiler.checkpoint("Get read only connection"); } Loading Loading @@ -173,6 +172,7 @@ class LdapConnections if (autoConfigReadWriteConn == null) { log.debug("Getting new auto config read write connection."); Profiler profiler = new Profiler(LdapConnections.class); autoConfigReadWriteConn = readWritePool.getConnection(); profiler.checkpoint("Get read write connection"); } Loading Loading @@ -212,6 +212,7 @@ class LdapConnections if (autoConfigUnboundReadOnlyConn == null) { log.debug("Getting new auto config unbound read only connection."); Profiler profiler = new Profiler(LdapConnections.class); autoConfigUnboundReadOnlyConn = unboundReadOnlyPool.getConnection(); profiler.checkpoint("Get read write connection"); } Loading Loading @@ -242,6 +243,7 @@ class LdapConnections void releaseConnections() { Profiler profiler = new Profiler(LdapConnections.class); if (persistence != null) { if (autoConfigReadOnlyConn != null) Loading cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapDAO.java +1 −3 Original line number Diff line number Diff line Loading @@ -90,8 +90,6 @@ public abstract class LdapDAO DN subjDN = null; private Profiler profiler = new Profiler(LdapDAO.class); public LdapDAO(LdapConnections connections) { this.connections = connections; Loading Loading @@ -179,8 +177,8 @@ public abstract class LdapDAO if (config.isSecure()) { socketFactory = createSSLSocketFactory(); Profiler profiler = new Profiler(LdapDAO.class); socketFactory = createSSLSocketFactory(); profiler.checkpoint("createSSLSocketFactory"); } else Loading cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java +2 −3 Original line number Diff line number Diff line Loading @@ -141,8 +141,6 @@ public class LdapGroupDAO extends LdapDAO LDAP_MODIFY_TIMESTAMP, LDAP_DESCRIPTION, LDAP_UNIQUE_MEMBER }; private final Profiler profiler = new Profiler(LdapGroupDAO.class); private LdapUserDAO userDAO; // this gets filled by the LdapgroupPersistence Loading Loading @@ -379,6 +377,7 @@ public class LdapGroupDAO extends LdapDAO SearchResult searchResult = null; try { Profiler profiler = new Profiler(LdapGroupDAO.class); LDAPInterface con = getReadOnlyConnection(); profiler.checkpoint("getGroupNames.getConnection"); searchResult = con.search(searchRequest); Loading @@ -397,7 +396,7 @@ public class LdapGroupDAO extends LdapDAO } LdapDAO.checkLdapResult(searchResult.getResultCode()); profiler.checkpoint("checkLdapResult"); // profiler.checkpoint("checkLdapResult"); return groupNames; } Loading cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapPersistence.java +3 −2 Original line number Diff line number Diff line Loading @@ -97,8 +97,6 @@ public abstract class LdapPersistence private static final String LDAP_POOL_JNDI_NAME = ConnectionPools.class.getName(); private static final int POOL_CHECK_INTERVAL_MILLESCONDS = 10000; // 10 seconds Profiler profiler = new Profiler(LdapPersistence.class); // static monitor is required for when multiple LdapPersistence objects // are created. private static Object jndiMonitor = new Object(); Loading Loading @@ -208,6 +206,7 @@ public abstract class LdapPersistence } if (pools == null) { Profiler profiler = new Profiler(LdapPersistence.class); LdapConfig config = LdapConfig.getLdapConfig(); pools = createPools(config); InitialContext ic = new InitialContext(); Loading Loading @@ -238,6 +237,7 @@ public abstract class LdapPersistence private ConnectionPools createPools(LdapConfig config) { Profiler profiler = new Profiler(LdapPersistence.class); Map<String,LdapConnectionPool> poolMap = new HashMap<String,LdapConnectionPool>(3); poolMap.put(POOL_READONLY, new LdapConnectionPool( config, config.getReadOnlyPool(), POOL_READONLY, true, true)); Loading Loading @@ -276,6 +276,7 @@ public abstract class LdapPersistence else { logger.debug("Detected ldap configuration change, rebuilding pools"); Profiler profiler = new Profiler(LdapPersistence.class); boolean poolRecreated = false; final ConnectionPools oldPools = pools; ConnectionPools newPools = null; Loading Loading
cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapConnectionPool.java +20 −15 Original line number Diff line number Diff line Loading @@ -69,23 +69,22 @@ package ca.nrc.cadc.ac.server.ldap; import org.apache.log4j.Logger; import ca.nrc.cadc.ac.server.ldap.LdapConfig.LdapPool; import ca.nrc.cadc.ac.server.ldap.LdapConfig.PoolPolicy; import ca.nrc.cadc.ac.server.ldap.LdapConfig.SystemState; import ca.nrc.cadc.net.TransientException; import ca.nrc.cadc.profiler.Profiler; import com.unboundid.ldap.sdk.FewestConnectionsServerSet; import com.unboundid.ldap.sdk.Filter; import com.unboundid.ldap.sdk.LDAPConnection; import com.unboundid.ldap.sdk.LDAPConnectionOptions; import com.unboundid.ldap.sdk.LDAPConnectionPool; import com.unboundid.ldap.sdk.LDAPException; import com.unboundid.ldap.sdk.RoundRobinServerSet; import com.unboundid.ldap.sdk.SearchRequest; import com.unboundid.ldap.sdk.SearchScope; import com.unboundid.ldap.sdk.ServerSet; import com.unboundid.ldap.sdk.SimpleBindRequest; import org.apache.log4j.Logger; /** * This object is designed to be shared between the DAO classes Loading @@ -99,8 +98,6 @@ public class LdapConnectionPool { private static final Logger logger = Logger.getLogger(LdapConnectionPool.class); Profiler profiler = new Profiler(LdapConnectionPool.class); protected LdapConfig currentConfig; private String poolName; private LDAPConnectionPool pool; Loading Loading @@ -129,6 +126,7 @@ public class LdapConnectionPool logger.debug("Construct pool: " + poolName + ". system state: " + systemState); if (SystemState.ONLINE.equals(systemState) || (SystemState.READONLY.equals(systemState) && readOnly)) { Profiler profiler = new Profiler(LdapConnectionPool.class); synchronized (poolMonitor) { if (!boundPool) Loading Loading @@ -168,23 +166,27 @@ public class LdapConnectionPool try { Profiler profiler = new Profiler(LdapConnectionPool.class); LDAPConnection conn = null; synchronized (poolMonitor) { conn = pool.getConnection(); profiler.checkpoint("pool.getConnection"); // BM: This query to the base dn (starting at dc=) has the // effect of clearing any proxied authorization state associated // with the receiving ldap server connection. Without this in // place, proxied authorization information is sometimes ignored. logger.debug("Testing connection"); int dcIndex = currentConfig.getGroupsDN().indexOf("dc="); String dcDN = currentConfig.getGroupsDN().substring(dcIndex); Filter filter = Filter.createEqualityFilter("dc", "*"); SearchRequest searchRequest = new SearchRequest(dcDN, SearchScope.BASE, filter, new String[] {"entrydn"}); conn.search(searchRequest); profiler.checkpoint("pool.initConnection"); // logger.debug("Testing connection"); // int index = currentConfig.getGroupsDN().indexOf(','); // String rdn = currentConfig.getGroupsDN().substring(0, index); // Filter filter = Filter.create("(" + rdn + ")"); // // index = rdn.indexOf('='); // String attribute = rdn.substring(0, index); // // SearchRequest searchRequest = new SearchRequest(currentConfig.getGroupsDN(), SearchScope.BASE, filter, new String[] {attribute}); // conn.search(searchRequest); // profiler.checkpoint("pool.initConnection"); } logger.debug(poolName + " pool statistics after borrow:\n" + pool.getConnectionPoolStatistics()); profiler.checkpoint("get " + poolName + " only connection"); Loading @@ -202,7 +204,9 @@ public class LdapConnectionPool { if (pool != null) { Profiler profiler = new Profiler(LdapConnectionPool.class); pool.releaseConnection(conn); profiler.checkpoint("pool.releaseConnection"); logger.debug(poolName + " pool statistics after release:\n" + pool.getConnectionPoolStatistics()); } } Loading @@ -217,8 +221,9 @@ public class LdapConnectionPool if (pool != null) { logger.debug("Closing pool..."); Profiler profiler = new Profiler(LdapConnectionPool.class); pool.close(); profiler.checkpoint("Pool closed."); profiler.checkpoint("pool.shutdown"); } } Loading
cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapConnections.java +4 −2 Original line number Diff line number Diff line Loading @@ -91,8 +91,6 @@ class LdapConnections { private final static Logger log = Logger.getLogger(LdapConnections.class); Profiler profiler = new Profiler(LdapConnections.class); private LdapPersistence persistence; private LdapConfig config; Loading Loading @@ -134,6 +132,7 @@ class LdapConnections if (autoConfigReadOnlyConn == null) { log.debug("Getting new auto config read only connection."); Profiler profiler = new Profiler(LdapConnections.class); autoConfigReadOnlyConn = readOnlyPool.getConnection(); profiler.checkpoint("Get read only connection"); } Loading Loading @@ -173,6 +172,7 @@ class LdapConnections if (autoConfigReadWriteConn == null) { log.debug("Getting new auto config read write connection."); Profiler profiler = new Profiler(LdapConnections.class); autoConfigReadWriteConn = readWritePool.getConnection(); profiler.checkpoint("Get read write connection"); } Loading Loading @@ -212,6 +212,7 @@ class LdapConnections if (autoConfigUnboundReadOnlyConn == null) { log.debug("Getting new auto config unbound read only connection."); Profiler profiler = new Profiler(LdapConnections.class); autoConfigUnboundReadOnlyConn = unboundReadOnlyPool.getConnection(); profiler.checkpoint("Get read write connection"); } Loading Loading @@ -242,6 +243,7 @@ class LdapConnections void releaseConnections() { Profiler profiler = new Profiler(LdapConnections.class); if (persistence != null) { if (autoConfigReadOnlyConn != null) Loading
cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapDAO.java +1 −3 Original line number Diff line number Diff line Loading @@ -90,8 +90,6 @@ public abstract class LdapDAO DN subjDN = null; private Profiler profiler = new Profiler(LdapDAO.class); public LdapDAO(LdapConnections connections) { this.connections = connections; Loading Loading @@ -179,8 +177,8 @@ public abstract class LdapDAO if (config.isSecure()) { socketFactory = createSSLSocketFactory(); Profiler profiler = new Profiler(LdapDAO.class); socketFactory = createSSLSocketFactory(); profiler.checkpoint("createSSLSocketFactory"); } else Loading
cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java +2 −3 Original line number Diff line number Diff line Loading @@ -141,8 +141,6 @@ public class LdapGroupDAO extends LdapDAO LDAP_MODIFY_TIMESTAMP, LDAP_DESCRIPTION, LDAP_UNIQUE_MEMBER }; private final Profiler profiler = new Profiler(LdapGroupDAO.class); private LdapUserDAO userDAO; // this gets filled by the LdapgroupPersistence Loading Loading @@ -379,6 +377,7 @@ public class LdapGroupDAO extends LdapDAO SearchResult searchResult = null; try { Profiler profiler = new Profiler(LdapGroupDAO.class); LDAPInterface con = getReadOnlyConnection(); profiler.checkpoint("getGroupNames.getConnection"); searchResult = con.search(searchRequest); Loading @@ -397,7 +396,7 @@ public class LdapGroupDAO extends LdapDAO } LdapDAO.checkLdapResult(searchResult.getResultCode()); profiler.checkpoint("checkLdapResult"); // profiler.checkpoint("checkLdapResult"); return groupNames; } Loading
cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapPersistence.java +3 −2 Original line number Diff line number Diff line Loading @@ -97,8 +97,6 @@ public abstract class LdapPersistence private static final String LDAP_POOL_JNDI_NAME = ConnectionPools.class.getName(); private static final int POOL_CHECK_INTERVAL_MILLESCONDS = 10000; // 10 seconds Profiler profiler = new Profiler(LdapPersistence.class); // static monitor is required for when multiple LdapPersistence objects // are created. private static Object jndiMonitor = new Object(); Loading Loading @@ -208,6 +206,7 @@ public abstract class LdapPersistence } if (pools == null) { Profiler profiler = new Profiler(LdapPersistence.class); LdapConfig config = LdapConfig.getLdapConfig(); pools = createPools(config); InitialContext ic = new InitialContext(); Loading Loading @@ -238,6 +237,7 @@ public abstract class LdapPersistence private ConnectionPools createPools(LdapConfig config) { Profiler profiler = new Profiler(LdapPersistence.class); Map<String,LdapConnectionPool> poolMap = new HashMap<String,LdapConnectionPool>(3); poolMap.put(POOL_READONLY, new LdapConnectionPool( config, config.getReadOnlyPool(), POOL_READONLY, true, true)); Loading Loading @@ -276,6 +276,7 @@ public abstract class LdapPersistence else { logger.debug("Detected ldap configuration change, rebuilding pools"); Profiler profiler = new Profiler(LdapPersistence.class); boolean poolRecreated = false; final ConnectionPools oldPools = pools; ConnectionPools newPools = null; Loading