From 363b15f416baa264f28d10719d7d0853203a5030 Mon Sep 17 00:00:00 2001 From: Arne Seime Date: Thu, 7 Jul 2016 09:16:21 +0200 Subject: [PATCH 1/2] Make jobServiceManager a singleton to avoid repeated instantiation, postconstructs and database migration for all jobs - for each new job started --- .../chouette/service/JobServiceManager.java | 37 ++++++++----------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/mobi.chouette.service/src/main/java/mobi/chouette/service/JobServiceManager.java b/mobi.chouette.service/src/main/java/mobi/chouette/service/JobServiceManager.java index 110aae116d..38543eeab8 100644 --- a/mobi.chouette.service/src/main/java/mobi/chouette/service/JobServiceManager.java +++ b/mobi.chouette.service/src/main/java/mobi/chouette/service/JobServiceManager.java @@ -21,13 +21,18 @@ import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.ejb.EJB; +import javax.ejb.Singleton; import javax.ejb.Startup; -import javax.ejb.Stateless; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.enterprise.concurrent.ManagedExecutorService; import javax.ws.rs.core.MediaType; +import org.apache.commons.io.FileUtils; + +import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; + import lombok.extern.log4j.Log4j; import mobi.chouette.common.Constant; import mobi.chouette.common.ContenerChecker; @@ -43,12 +48,7 @@ import mobi.chouette.persistence.hibernate.ChouetteIdentifierGenerator; import mobi.chouette.scheduler.Scheduler; -import org.apache.commons.io.FileUtils; - -import com.google.common.base.Predicate; -import com.google.common.collect.Collections2; - -@Stateless(name = JobServiceManager.BEAN_NAME) +@Singleton(name = JobServiceManager.BEAN_NAME) @Startup @Log4j public class JobServiceManager { @@ -64,20 +64,15 @@ public class JobServiceManager { @EJB(beanName = ContenerChecker.NAME) ContenerChecker checker; - @EJB - JobServiceManager jobServiceManager; - @EJB Scheduler scheduler; @Resource(lookup = "java:comp/DefaultManagedExecutorService") ManagedExecutorService executor; - private static Set referentials = Collections.synchronizedSet(new HashSet<>()); + private Set referentials = Collections.synchronizedSet(new HashSet<>()); - private static int maxJobs = 5; - - private static String lock = "lock"; + private int maxJobs = 5; private String rootDirectory; @@ -131,15 +126,13 @@ public JobService create(String referential, String action, String type, Map= maxJobs) { - throw new RequestServiceException(RequestExceptionCode.TOO_MANY_ACTIVE_JOBS, "" + maxJobs - + " active jobs"); - } - JobService jobService = jobServiceManager.createJob(referential, action, type, inputStreamsByName); - scheduler.schedule(referential); - return jobService; + if (scheduler.getActivejobsCount() >= maxJobs) { + throw new RequestServiceException(RequestExceptionCode.TOO_MANY_ACTIVE_JOBS, "" + maxJobs + + " active jobs"); } + JobService jobService = createJob(referential, action, type, inputStreamsByName); + scheduler.schedule(referential); + return jobService; } public List getMontlyStats() throws ServiceException { From 0ea4b3145bfc224eb056f3ca55c7782af43497cb Mon Sep 17 00:00:00 2001 From: Arne Seime Date: Thu, 1 Dec 2016 11:18:44 +0100 Subject: [PATCH 2/2] Merged --- .../src/main/java/mobi/chouette/service/JobServiceManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobi.chouette.service/src/main/java/mobi/chouette/service/JobServiceManager.java b/mobi.chouette.service/src/main/java/mobi/chouette/service/JobServiceManager.java index 38543eeab8..091b862928 100644 --- a/mobi.chouette.service/src/main/java/mobi/chouette/service/JobServiceManager.java +++ b/mobi.chouette.service/src/main/java/mobi/chouette/service/JobServiceManager.java @@ -76,7 +76,7 @@ public class JobServiceManager { private String rootDirectory; - private static Set intializedContexts = new HashSet<>(); + private Set intializedContexts = new HashSet<>(); @PostConstruct public synchronized void init() {