You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2013/06/02 13:32:30 UTC
svn commit: r1488671 -
/ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java
Author: adrianc
Date: Sun Jun 2 11:32:30 2013
New Revision: 1488671
URL: http://svn.apache.org/r1488671
Log:
Converted JobPoller.java over to the new service config design.
https://issues.apache.org/jira/browse/OFBIZ-5204
Modified:
ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java
Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java?rev=1488671&r1=1488670&r2=1488671&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/job/JobPoller.java Sun Jun 2 11:32:30 2013
@@ -33,10 +33,12 @@ import java.util.concurrent.ThreadPoolEx
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
+import org.ofbiz.base.config.GenericConfigException;
import org.ofbiz.base.start.Start;
import org.ofbiz.base.util.Assert;
import org.ofbiz.base.util.Debug;
import org.ofbiz.service.config.ServiceConfigUtil;
+import org.ofbiz.service.config.model.ThreadPool;
/**
* Job poller. Queues and runs jobs.
@@ -51,8 +53,8 @@ public final class JobPoller {
private static final int QUEUE_SIZE = 100;
private static final long THREAD_TTL = 120000; // Idle thread lifespan - 2 minutes.
private static final ConcurrentHashMap<String, JobManager> jobManagers = new ConcurrentHashMap<String, JobManager>();
- private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(minThreads(), maxThreads(), getTTL(),
- TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(queueSize()), new JobInvokerThreadFactory(), new ThreadPoolExecutor.AbortPolicy());
+ // TODO: Put the executor in a cache so Job Poller settings can be changed at run-time.
+ private static final ThreadPoolExecutor executor = createThreadPoolExecutor();
private static final JobPoller instance = new JobPoller();
/**
@@ -62,79 +64,26 @@ public final class JobPoller {
return instance;
}
- private static long getTTL() {
- String threadTTLAttr = ServiceConfigUtil.getElementAttr("thread-pool", "ttl");
- if (!threadTTLAttr.isEmpty()) {
- try {
- int threadTTL = Integer.parseInt(threadTTLAttr);
- if (threadTTL > 0) {
- return threadTTL;
- }
- } catch (NumberFormatException e) {
- Debug.logError("Exception thrown while parsing thread TTL from serviceengine.xml file [" + e + "]. Using default value.", module);
- }
- }
- return THREAD_TTL;
- }
-
- private static int maxThreads() {
- String maxThreadsAttr = ServiceConfigUtil.getElementAttr("thread-pool", "max-threads");
- if (!maxThreadsAttr.isEmpty()) {
- try {
- int maxThreads = Integer.parseInt(maxThreadsAttr);
- if (maxThreads > 0) {
- return maxThreads;
- }
- } catch (NumberFormatException e) {
- Debug.logError("Exception thrown while parsing maximum threads from serviceengine.xml file [" + e + "]. Using default value.", module);
- }
- }
- return MAX_THREADS;
- }
-
- private static int minThreads() {
- String minThreadsAttr = ServiceConfigUtil.getElementAttr("thread-pool", "min-threads");
- if (!minThreadsAttr.isEmpty()) {
- try {
- int minThreads = Integer.parseInt(minThreadsAttr);
- if (minThreads > 0) {
- return minThreads;
- }
- } catch (NumberFormatException e) {
- Debug.logError("Exception thrown while parsing minimum threads from serviceengine.xml file [" + e + "]. Using default value.", module);
- }
+ private static ThreadPoolExecutor createThreadPoolExecutor() {
+ try {
+ ThreadPool threadPool = ServiceConfigUtil.getServiceEngine(ServiceConfigUtil.engine).getThreadPool();
+ return new ThreadPoolExecutor(threadPool.getMinThreads(), threadPool.getMaxThreads(), threadPool.getTtl(),
+ TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(threadPool.getJobs()), new JobInvokerThreadFactory(), new ThreadPoolExecutor.AbortPolicy());
+ } catch (GenericConfigException e) {
+ Debug.logError(e, "Exception thrown while getting <thread-pool> model, using default <thread-pool> values: ", module);
+ return new ThreadPoolExecutor(MIN_THREADS, MAX_THREADS, THREAD_TTL,
+ TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(QUEUE_SIZE), new JobInvokerThreadFactory(), new ThreadPoolExecutor.AbortPolicy());
}
- return MIN_THREADS;
}
private static int pollWaitTime() {
- String pollIntervalAttr = ServiceConfigUtil.getElementAttr("thread-pool", "poll-db-millis");
- if (!pollIntervalAttr.isEmpty()) {
- try {
- int pollInterval = Integer.parseInt(pollIntervalAttr);
- if (pollInterval > 0) {
- return pollInterval;
- }
- } catch (NumberFormatException e) {
- Debug.logError("Exception thrown while parsing database polling interval from serviceengine.xml file [" + e + "]. Using default value.", module);
- }
- }
- return POLL_WAIT;
- }
-
- private static int queueSize() {
- String queueSizeAttr = ServiceConfigUtil.getElementAttr("thread-pool", "jobs");
- if (!queueSizeAttr.isEmpty()) {
- try {
- int queueSize = Integer.parseInt(queueSizeAttr);
- if (queueSize > 0) {
- return queueSize;
- }
- } catch (NumberFormatException e) {
- Debug.logError("Exception thrown while parsing queue size from serviceengine.xml file [" + e + "]. Using default value.", module);
- }
+ try {
+ ThreadPool threadPool = ServiceConfigUtil.getServiceEngine(ServiceConfigUtil.engine).getThreadPool();
+ return threadPool.getPollDbMillis();
+ } catch (GenericConfigException e) {
+ Debug.logError(e, "Exception thrown while getting <thread-pool> model, using default <thread-pool> values: ", module);
+ return POLL_WAIT;
}
- return QUEUE_SIZE;
}
/**