mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-18 03:01:05 +01:00
use cached thread pool for async hooks to improve memory consumption
This commit is contained in:
@@ -72,6 +72,8 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
@@ -105,8 +107,8 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
|||||||
* @param repositoryHooksProvider
|
* @param repositoryHooksProvider
|
||||||
*/
|
*/
|
||||||
@Inject
|
@Inject
|
||||||
public DefaultRepositoryManager(
|
public DefaultRepositoryManager(ScmConfiguration configuration,
|
||||||
ScmConfiguration configuration, SCMContextProvider contextProvider,
|
SCMContextProvider contextProvider,
|
||||||
Provider<WebSecurityContext> securityContextProvider,
|
Provider<WebSecurityContext> securityContextProvider,
|
||||||
RepositoryDAO repositoryDAO, Set<RepositoryHandler> handlerSet,
|
RepositoryDAO repositoryDAO, Set<RepositoryHandler> handlerSet,
|
||||||
Provider<Set<RepositoryListener>> repositoryListenersProvider,
|
Provider<Set<RepositoryListener>> repositoryListenersProvider,
|
||||||
@@ -117,6 +119,7 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
|||||||
this.repositoryDAO = repositoryDAO;
|
this.repositoryDAO = repositoryDAO;
|
||||||
this.repositoryListenersProvider = repositoryListenersProvider;
|
this.repositoryListenersProvider = repositoryListenersProvider;
|
||||||
this.repositoryHooksProvider = repositoryHooksProvider;
|
this.repositoryHooksProvider = repositoryHooksProvider;
|
||||||
|
this.executorService = Executors.newCachedThreadPool();
|
||||||
handlerMap = new HashMap<String, RepositoryHandler>();
|
handlerMap = new HashMap<String, RepositoryHandler>();
|
||||||
types = new HashSet<Type>();
|
types = new HashSet<Type>();
|
||||||
|
|
||||||
@@ -137,6 +140,8 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
|||||||
@Override
|
@Override
|
||||||
public void close() throws IOException
|
public void close() throws IOException
|
||||||
{
|
{
|
||||||
|
executorService.shutdown();
|
||||||
|
|
||||||
for (RepositoryHandler handler : handlerMap.values())
|
for (RepositoryHandler handler : handlerMap.values())
|
||||||
{
|
{
|
||||||
IOUtil.close(handler);
|
IOUtil.close(handler);
|
||||||
@@ -807,15 +812,14 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
|||||||
{
|
{
|
||||||
if (hook.isAsync())
|
if (hook.isAsync())
|
||||||
{
|
{
|
||||||
new Thread(new RepositoryHookTask(hook, event)).start();
|
executorService.execute(new RepositoryHookTask(hook, event));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
{
|
{
|
||||||
Object[] args = new Object[] { event.getType(),
|
Object[] args = new Object[] { event.getType(),
|
||||||
hook.getClass().getName(),
|
hook.getClass().getName(), event.getRepository().getName() };
|
||||||
event.getRepository().getName() };
|
|
||||||
|
|
||||||
logger.debug("execute {} hook {} for repository {}", args);
|
logger.debug("execute {} hook {} for repository {}", args);
|
||||||
}
|
}
|
||||||
@@ -957,6 +961,9 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
|||||||
/** Field description */
|
/** Field description */
|
||||||
private ScmConfiguration configuration;
|
private ScmConfiguration configuration;
|
||||||
|
|
||||||
|
/** Field description */
|
||||||
|
private ExecutorService executorService;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private Map<String, RepositoryHandler> handlerMap;
|
private Map<String, RepositoryHandler> handlerMap;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user