You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2013/12/05 02:03:07 UTC
svn commit: r1547981 - in /manifoldcf/branches/CONNECTORS-781/framework:
crawler-ui/src/main/webapp/
pull-agent/src/main/java/org/apache/manifoldcf/crawler/interfaces/
pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/
pull-agent/src/main/jav...
Author: kwright
Date: Thu Dec 5 01:03:06 2013
New Revision: 1547981
URL: http://svn.apache.org/r1547981
Log:
Move the connector pool into RepositoryConnectorPool
Modified:
manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/editjob.jsp
manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/execute.jsp
manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/viewconnection.jsp
manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/viewjob.jsp
manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/interfaces/RepositoryConnectorFactory.java
manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/repositoryconnectorpool/RepositoryConnectorPool.java
Modified: manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/editjob.jsp
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/editjob.jsp?rev=1547981&r1=1547980&r2=1547981&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/editjob.jsp (original)
+++ manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/editjob.jsp Thu Dec 5 01:03:06 2013
@@ -37,6 +37,7 @@
IOutputConnection[] outputList = outputMgr.getAllConnections();
IOutputConnectorPool outputConnectorPool = OutputConnectorPoolFactory.make(threadContext);
+ IRepositoryConnectorPool repositoryConnectorPool = RepositoryConnectorPoolFactory.make(threadContext);
// Figure out tab name
String tabName = variableContext.getParameter("tabname");
@@ -424,8 +425,7 @@
<%
if (connection != null)
{
- IRepositoryConnector repositoryConnector = RepositoryConnectorFactory.grab(threadContext,connection.getClassName(),connection.getConfigParams(),
- connection.getMaxConnections());
+ IRepositoryConnector repositoryConnector = repositoryConnectorPool.grab(connection);
if (repositoryConnector != null)
{
try
@@ -434,7 +434,7 @@
}
finally
{
- RepositoryConnectorFactory.release(repositoryConnector);
+ repositoryConnectorPool.release(repositoryConnector);
}
}
}
@@ -1292,8 +1292,7 @@
if (connection != null)
{
- IRepositoryConnector repositoryConnector = RepositoryConnectorFactory.grab(threadContext,connection.getClassName(),connection.getConfigParams(),
- connection.getMaxConnections());
+ IRepositoryConnector repositoryConnector = repositoryConnectorPool.grab(connection);
if (repositoryConnector != null)
{
try
@@ -1302,7 +1301,7 @@
}
finally
{
- RepositoryConnectorFactory.release(repositoryConnector);
+ repositoryConnectorPool.release(repositoryConnector);
}
%>
<input type="hidden" name="connectionpresent" value="true"/>
Modified: manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/execute.jsp
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/execute.jsp?rev=1547981&r1=1547980&r2=1547981&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/execute.jsp (original)
+++ manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/execute.jsp Thu Dec 5 01:03:06 2013
@@ -52,6 +52,7 @@
IOutputConnectionManager outputManager = OutputConnectionManagerFactory.make(threadContext);
IOutputConnectorPool outputConnectorPool = OutputConnectorPoolFactory.make(threadContext);
+ IRepositoryConnectorPool repositoryConnectorPool = RepositoryConnectorPoolFactory.make(threadContext);
String type = variableContext.getParameter("type");
String op = variableContext.getParameter("op");
@@ -1054,8 +1055,7 @@
if (connectionPresent && connection != null)
{
- IRepositoryConnector repositoryConnector = RepositoryConnectorFactory.grab(threadContext,
- connection.getClassName(),connection.getConfigParams(),connection.getMaxConnections());
+ IRepositoryConnector repositoryConnector = repositoryConnectorPool.grab(connection);
if (repositoryConnector != null)
{
try
@@ -1072,7 +1072,7 @@
}
finally
{
- RepositoryConnectorFactory.release(repositoryConnector);
+ repositoryConnectorPool.release(repositoryConnector);
}
}
}
Modified: manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/viewconnection.jsp
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/viewconnection.jsp?rev=1547981&r1=1547980&r2=1547981&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/viewconnection.jsp (original)
+++ manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/viewconnection.jsp Thu Dec 5 01:03:06 2013
@@ -78,6 +78,7 @@
IConnectorManager connectorManager = ConnectorManagerFactory.make(threadContext);
// Get the connection manager handle
IRepositoryConnectionManager connManager = RepositoryConnectionManagerFactory.make(threadContext);
+ IRepositoryConnectorPool repositoryConnectorPool = RepositoryConnectorPoolFactory.make(threadContext);
String connectionName = variableContext.getParameter("connname");
IRepositoryConnection connection = connManager.load(connectionName);
if (connection == null)
@@ -108,7 +109,7 @@
String connectionStatus;
try
{
- IRepositoryConnector c = RepositoryConnectorFactory.grab(threadContext,className,parameters,maxCount);
+ IRepositoryConnector c = repositoryConnectorPool.grab(connection);
if (c == null)
connectionStatus = Messages.getString(pageContext.getRequest().getLocale(),"viewconnection.Connectorisnotinstalled");
else
@@ -119,7 +120,7 @@
}
finally
{
- RepositoryConnectorFactory.release(c);
+ repositoryConnectorPool.release(c);
}
}
}
Modified: manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/viewjob.jsp
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/viewjob.jsp?rev=1547981&r1=1547980&r2=1547981&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/viewjob.jsp (original)
+++ manifoldcf/branches/CONNECTORS-781/framework/crawler-ui/src/main/webapp/viewjob.jsp Thu Dec 5 01:03:06 2013
@@ -72,6 +72,7 @@
IRepositoryConnectionManager connManager = RepositoryConnectionManagerFactory.make(threadContext);
IOutputConnectorPool outputConnectorPool = OutputConnectorPoolFactory.make(threadContext);
+ IRepositoryConnectorPool repositoryConnectorPool = RepositoryConnectorPoolFactory.make(threadContext);
String jobID = variableContext.getParameter("jobid");
IJobDescription job = manager.load(new Long(jobID));
@@ -658,9 +659,7 @@
<%
if (connection != null)
{
- IRepositoryConnector repositoryConnector = RepositoryConnectorFactory.grab(threadContext,connection.getClassName(),connection.getConfigParams(),
-
- connection.getMaxConnections());
+ IRepositoryConnector repositoryConnector = repositoryConnectorPool.grab(connection);
if (repositoryConnector != null)
{
try
@@ -669,7 +668,7 @@
}
finally
{
- RepositoryConnectorFactory.release(repositoryConnector);
+ repositoryConnectorPool.release(repositoryConnector);
}
}
}
Modified: manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/interfaces/RepositoryConnectorFactory.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/interfaces/RepositoryConnectorFactory.java?rev=1547981&r1=1547980&r2=1547981&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/interfaces/RepositoryConnectorFactory.java (original)
+++ manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/interfaces/RepositoryConnectorFactory.java Thu Dec 5 01:03:06 2013
@@ -181,71 +181,4 @@ public class RepositoryConnectorFactory
return thisFactory.getThisConnectorNoCheck(className);
}
- /** Get multiple repository connectors, all at once. Do this in a particular order
- * so that any connector exhaustion will not cause a deadlock.
- */
- public static IRepositoryConnector[] grabMultiple(IThreadContext threadContext,
- String[] orderingKeys, String[] classNames, ConfigParams[] configInfos, int[] maxPoolSizes)
- throws ManifoldCFException
- {
- return thisFactory.grabThisMultiple(threadContext,IRepositoryConnector.class,orderingKeys,classNames,configInfos,maxPoolSizes);
- }
-
- /** Get a repository connector.
- * The connector is specified by its class and its parameters.
- *@param threadContext is the current thread context.
- *@param className is the name of the class to get a connector for.
- *@param configInfo are the name/value pairs constituting configuration info
- * for this class.
- */
- public static IRepositoryConnector grab(IThreadContext threadContext,
- String className, ConfigParams configInfo, int maxPoolSize)
- throws ManifoldCFException
- {
- return thisFactory.grabThis(threadContext,className,configInfo,maxPoolSize);
- }
-
- /** Release multiple repository connectors.
- */
- public static void releaseMultiple(IRepositoryConnector[] connectors)
- throws ManifoldCFException
- {
- thisFactory.releaseThisMultiple(connectors);
- }
-
- /** Release a repository connector.
- *@param connector is the connector to release.
- */
- public static void release(IRepositoryConnector connector)
- throws ManifoldCFException
- {
- thisFactory.releaseThis(connector);
- }
-
- /** Idle notification for inactive repository connector handles.
- * This method polls all inactive handles.
- */
- public static void pollAllConnectors(IThreadContext threadContext)
- throws ManifoldCFException
- {
- thisFactory.pollThisAllConnectors(threadContext);
- }
-
- public static void flushUnusedConnectors(IThreadContext threadContext)
- throws ManifoldCFException
- {
- thisFactory.flushThisUnusedConnectors(threadContext);
- }
-
- /** Clean up all open repository connector handles.
- * This method is called when the connector pool needs to be flushed,
- * to free resources.
- *@param threadContext is the local thread context.
- */
- public static void closeAllConnectors(IThreadContext threadContext)
- throws ManifoldCFException
- {
- thisFactory.closeThisAllConnectors(threadContext);
- }
-
}
Modified: manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java?rev=1547981&r1=1547980&r2=1547981&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java (original)
+++ manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java Thu Dec 5 01:03:06 2013
@@ -42,6 +42,7 @@ public class JobManager implements IJobM
protected final IDBInterface database;
protected final IOutputConnectionManager outputMgr;
protected final IRepositoryConnectionManager connectionMgr;
+ protected final IRepositoryConnectorPool repositoryConnectorPool;
protected final ILockManager lockManager;
protected final IThreadContext threadContext;
protected final JobQueue jobQueue;
@@ -69,6 +70,7 @@ public class JobManager implements IJobM
eventManager = new EventManager(database);
outputMgr = OutputConnectionManagerFactory.make(threadContext);
connectionMgr = RepositoryConnectionManagerFactory.make(threadContext);
+ repositoryConnectorPool = RepositoryConnectorPoolFactory.make(threadContext);
lockManager = LockManagerFactory.make(threadContext);
}
@@ -2630,17 +2632,11 @@ public class JobManager implements IJobM
// at the connector factory level to make sure these requests are properly ordered.
String[] orderingKeys = new String[connections.length];
- String[] classNames = new String[connections.length];
- ConfigParams[] configParams = new ConfigParams[connections.length];
- int[] maxConnections = new int[connections.length];
int k = 0;
while (k < connections.length)
{
IRepositoryConnection connection = connections[k];
orderingKeys[k] = connection.getName();
- classNames[k] = connection.getClassName();
- configParams[k] = connection.getConfigParams();
- maxConnections[k] = connection.getMaxConnections();
k++;
}
@@ -2654,7 +2650,7 @@ public class JobManager implements IJobM
try
{
- IRepositoryConnector[] connectors = RepositoryConnectorFactory.grabMultiple(threadContext,orderingKeys,classNames,configParams,maxConnections);
+ IRepositoryConnector[] connectors = repositoryConnectorPool.grabMultiple(orderingKeys,connections);
try
{
// Hand the connectors off to the ThrottleLimit instance
@@ -2770,7 +2766,7 @@ public class JobManager implements IJobM
}
finally
{
- RepositoryConnectorFactory.releaseMultiple(connectors);
+ repositoryConnectorPool.releaseMultiple(connectors);
}
}
finally
Modified: manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/repositoryconnectorpool/RepositoryConnectorPool.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/repositoryconnectorpool/RepositoryConnectorPool.java?rev=1547981&r1=1547980&r2=1547981&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/repositoryconnectorpool/RepositoryConnectorPool.java (original)
+++ manifoldcf/branches/CONNECTORS-781/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/repositoryconnectorpool/RepositoryConnectorPool.java Thu Dec 5 01:03:06 2013
@@ -32,6 +32,9 @@ public class RepositoryConnectorPool imp
{
public static final String _rcsid = "@(#)$Id$";
+ /** Local connector pool */
+ protected final static LocalPool localPool = new LocalPool();
+
// This implementation is a place-holder for the real one, which will likely fold in the pooling code
// as we strip it out of RepositoryConnectorFactory.
@@ -66,7 +69,7 @@ public class RepositoryConnectorPool imp
configInfos[i] = repositoryConnections[i].getConfigParams();
maxPoolSizes[i] = repositoryConnections[i].getMaxConnections();
}
- return RepositoryConnectorFactory.grabMultiple(threadContext,
+ return localPool.grabMultiple(threadContext,
orderingKeys, classNames, configInfos, maxPoolSizes);
}
@@ -78,7 +81,7 @@ public class RepositoryConnectorPool imp
public IRepositoryConnector grab(IRepositoryConnection repositoryConnection)
throws ManifoldCFException
{
- return RepositoryConnectorFactory.grab(threadContext, repositoryConnection.getClassName(),
+ return localPool.grab(threadContext, repositoryConnection.getClassName(),
repositoryConnection.getConfigParams(), repositoryConnection.getMaxConnections());
}
@@ -89,7 +92,7 @@ public class RepositoryConnectorPool imp
public void releaseMultiple(IRepositoryConnector[] connectors)
throws ManifoldCFException
{
- RepositoryConnectorFactory.releaseMultiple(connectors);
+ localPool.releaseMultiple(connectors);
}
/** Release a repository connector.
@@ -99,7 +102,7 @@ public class RepositoryConnectorPool imp
public void release(IRepositoryConnector connector)
throws ManifoldCFException
{
- RepositoryConnectorFactory.release(connector);
+ localPool.release(connector);
}
/** Idle notification for inactive repository connector handles.
@@ -109,7 +112,7 @@ public class RepositoryConnectorPool imp
public void pollAllConnectors()
throws ManifoldCFException
{
- RepositoryConnectorFactory.pollAllConnectors(threadContext);
+ localPool.pollAllConnectors(threadContext);
}
/** Flush only those connector handles that are currently unused.
@@ -118,7 +121,7 @@ public class RepositoryConnectorPool imp
public void flushUnusedConnectors()
throws ManifoldCFException
{
- RepositoryConnectorFactory.flushUnusedConnectors(threadContext);
+ localPool.flushUnusedConnectors(threadContext);
}
/** Clean up all open repository connector handles.
@@ -129,7 +132,30 @@ public class RepositoryConnectorPool imp
public void closeAllConnectors()
throws ManifoldCFException
{
- RepositoryConnectorFactory.closeAllConnectors(threadContext);
+ localPool.closeAllConnectors(threadContext);
+ }
+
+ /** Actual static mapping connector pool */
+ protected static class LocalPool extends org.apache.manifoldcf.core.connectorpool.ConnectorPool<IRepositoryConnector>
+ {
+ public LocalPool()
+ {
+ }
+
+ @Override
+ protected boolean isInstalled(IThreadContext tc, String className)
+ throws ManifoldCFException
+ {
+ IConnectorManager connectorManager = ConnectorManagerFactory.make(tc);
+ return connectorManager.isInstalled(className);
+ }
+
+ public IRepositoryConnector[] grabMultiple(IThreadContext tc, String[] orderingKeys, String[] classNames, ConfigParams[] configInfos, int[] maxPoolSizes)
+ throws ManifoldCFException
+ {
+ return grabMultiple(tc,IRepositoryConnector.class,orderingKeys,classNames,configInfos,maxPoolSizes);
+ }
+
}
}