Commit ef93b36c authored by Brian Major's avatar Brian Major
Browse files

s1885 - fixed merge conflicts

parents af2e548f efc84b5d
Loading
Loading
Loading
Loading
+20 −15
Original line number Diff line number Diff line
@@ -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
@@ -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;
@@ -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)
@@ -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");
@@ -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());
        }
    }
@@ -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");
        }
    }

+4 −2
Original line number Diff line number Diff line
@@ -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;

@@ -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");
            }
@@ -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");
            }
@@ -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");
            }
@@ -242,6 +243,7 @@ class LdapConnections

    void releaseConnections()
    {
        Profiler profiler = new Profiler(LdapConnections.class);
        if (persistence != null)
        {
            if (autoConfigReadOnlyConn != null)
+1 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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
+2 −3
Original line number Diff line number Diff line
@@ -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
@@ -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);
@@ -397,7 +396,7 @@ public class LdapGroupDAO extends LdapDAO
            }

            LdapDAO.checkLdapResult(searchResult.getResultCode());
            profiler.checkpoint("checkLdapResult");
//            profiler.checkpoint("checkLdapResult");

            return groupNames;
        }
+3 −2
Original line number Diff line number Diff line
@@ -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();
@@ -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();
@@ -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));
@@ -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