You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2014/09/23 12:52:29 UTC

svn commit: r1626977 - in /ofbiz/trunk/framework: base/ base/src/org/ofbiz/base/concurrent/ base/src/org/ofbiz/base/concurrent/test/ base/src/org/ofbiz/base/lang/ base/testdef/ entity/src/org/ofbiz/entity/

Author: jacopoc
Date: Tue Sep 23 10:52:29 2014
New Revision: 1626977

URL: http://svn.apache.org/r1626977
Log:
Removed a bunch of never used classes from the base/concurrent package.
Provided better settings for the thread pools to avoid to keep alive threads that are only needed at startup.

Removed:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/concurrent/DependencyPool.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/concurrent/GeneratedResult.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/concurrent/TTLCachedObject.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/concurrent/TTLObject.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/concurrent/test/
    ofbiz/trunk/framework/base/src/org/ofbiz/base/lang/ObjectWrapper.java
Modified:
    ofbiz/trunk/framework/base/build.xml
    ofbiz/trunk/framework/base/src/org/ofbiz/base/concurrent/ExecutionPool.java
    ofbiz/trunk/framework/base/testdef/basetests.xml
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/DelegatorFactory.java

Modified: ofbiz/trunk/framework/base/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/build.xml?rev=1626977&r1=1626976&r2=1626977&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/build.xml (original)
+++ ofbiz/trunk/framework/base/build.xml Tue Sep 23 10:52:29 2014
@@ -54,10 +54,6 @@ under the License.
         <file name="org/ofbiz/base/util/test/UtilIOTests.java"/>
         <file name="org/ofbiz/base/test/BaseUnitTests.java"/>
         <file name="org/ofbiz/base/util/collections/test/GenericMapTest.java"/>
-        <file name="org/ofbiz/base/concurrent/test/DependencyPoolTests.java"/>
-        <file name="org/ofbiz/base/concurrent/test/SyncTTLObjectTest.java"/>
-        <file name="org/ofbiz/base/concurrent/test/AsyncTTLObjectTest.java"/>
-        <file name="org/ofbiz/base/concurrent/test/TTLCachedObjectTest.java"/>
     </filelist>
 
     <patternset id="cobertura-src-dirs">

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/concurrent/ExecutionPool.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/concurrent/ExecutionPool.java?rev=1626977&r1=1626976&r2=1626977&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/concurrent/ExecutionPool.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/concurrent/ExecutionPool.java Tue Sep 23 10:52:29 2014
@@ -19,7 +19,6 @@
 package org.ofbiz.base.concurrent;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.DelayQueue;
 import java.util.concurrent.Delayed;
@@ -42,14 +41,13 @@ import org.ofbiz.base.util.Debug;
 @SourceMonitored
 public final class ExecutionPool {
     public static final String module = ExecutionPool.class.getName();
-    public static final ExecutorService GLOBAL_BATCH = getPooledExecutor(null, "OFBiz-batch", -1, Integer.MAX_VALUE, false);
-    public static final ScheduledExecutorService GLOBAL_EXECUTOR = getScheduledExecutor(null, "OFBiz-config", -1, false);
-    public static final ForkJoinPool GLOBAL_FORK_JOIN = getForkJoinPool(-1);
+    public static final ExecutorService GLOBAL_BATCH = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 5, TimeUnit.SECONDS, new SynchronousQueue<Runnable>(), new ExecutionPoolThreadFactory(null, "OFBiz-batch"));
+    public static final ForkJoinPool GLOBAL_FORK_JOIN = new ForkJoinPool();
 
     protected static class ExecutionPoolThreadFactory implements ThreadFactory {
         private final ThreadGroup group;
         private final String namePrefix;
-        private int count = 0;
+        private volatile int count = 1;
 
         protected ExecutionPoolThreadFactory(ThreadGroup group, String namePrefix) {
             this.group = group;
@@ -65,11 +63,7 @@ public final class ExecutionPool {
         }
     }
 
-    public static ThreadFactory createThreadFactory(ThreadGroup group, String namePrefix) {
-        return new ExecutionPoolThreadFactory(group, namePrefix);
-    }
-
-    public static int autoAdjustThreadCount(int threadCount) {
+    private static int autoAdjustThreadCount(int threadCount) {
         if (threadCount == 0) {
             return 1;
         } else if (threadCount < 0) {
@@ -80,33 +74,21 @@ public final class ExecutionPool {
         }
     }
 
-    @Deprecated
-    public static ScheduledExecutorService getExecutor(ThreadGroup group, String namePrefix, int threadCount, boolean preStart) {
-        return getScheduledExecutor(group, namePrefix, threadCount, preStart);
-    }
-
     public static ScheduledExecutorService getScheduledExecutor(ThreadGroup group, String namePrefix, int threadCount, boolean preStart) {
-        ThreadFactory threadFactory = createThreadFactory(group, namePrefix);
-        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(autoAdjustThreadCount(threadCount), threadFactory);
-        if (preStart) {
-            executor.prestartAllCoreThreads();
-        }
-        return executor;
+        return getScheduledExecutor(group, namePrefix, threadCount, 0, preStart);
     }
-
-    public static ExecutorService getPooledExecutor(ThreadGroup group, String namePrefix, int threadCount, int maximumPoolSize, boolean preStart) {
-        ThreadFactory threadFactory = createThreadFactory(group, namePrefix);
-        ThreadPoolExecutor executor = new ThreadPoolExecutor(autoAdjustThreadCount(threadCount), maximumPoolSize, 5, TimeUnit.SECONDS, new SynchronousQueue<Runnable>(), threadFactory);
+    public static ScheduledExecutorService getScheduledExecutor(ThreadGroup group, String namePrefix, int threadCount, long keepAliveSeconds, boolean preStart) {
+        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(autoAdjustThreadCount(threadCount), new ExecutionPoolThreadFactory(group, namePrefix));
+        if (keepAliveSeconds > 0) {
+            executor.setKeepAliveTime(keepAliveSeconds, TimeUnit.SECONDS);
+            executor.allowCoreThreadTimeOut(true);
+        }
         if (preStart) {
             executor.prestartAllCoreThreads();
         }
         return executor;
     }
 
-    public static ForkJoinPool getForkJoinPool(int threadCount) {
-        return new ForkJoinPool(autoAdjustThreadCount(threadCount));
-    }
-
     public static <F> List<F> getAllFutures(Collection<Future<F>> futureList) {
         List<F> result = FastList.newInstance();
         for (Future<F> future: futureList) {
@@ -129,17 +111,6 @@ public final class ExecutionPool {
         delayQueue.remove(pulse);
     }
 
-    public static void pulseAll(Class<? extends Pulse> match) {
-        Iterator<Pulse> it = delayQueue.iterator();
-        while (it.hasNext()) {
-            Pulse pulse = it.next();
-            if (match.isInstance(pulse)) {
-                it.remove();
-                pulse.run();
-            }
-        }
-    }
-
     static {
         ExecutionPoolPulseWorker worker = new ExecutionPoolPulseWorker();
         int processorCount = Runtime.getRuntime().availableProcessors();

Modified: ofbiz/trunk/framework/base/testdef/basetests.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/testdef/basetests.xml?rev=1626977&r1=1626976&r2=1626977&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/testdef/basetests.xml (original)
+++ ofbiz/trunk/framework/base/testdef/basetests.xml Tue Sep 23 10:52:29 2014
@@ -32,7 +32,6 @@
         <junit-test-suite class-name="org.ofbiz.base.util.cache.test.UtilCacheTests"/>
         <junit-test-suite class-name="org.ofbiz.base.conversion.test.DateTimeTests"/>
         <junit-test-suite class-name="org.ofbiz.base.conversion.test.MiscTests"/>
-        <junit-test-suite class-name="org.ofbiz.base.concurrent.test.DependencyPoolTests"/>
         <junit-test-suite class-name="org.ofbiz.base.json.test.JSONTests"/>
         <!--junit-test-suite class-name="org.ofbiz.base.util.test.UtilIOTests"/-->
         <junit-test-suite class-name="org.ofbiz.base.test.BaseUnitTests"/>

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/DelegatorFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/DelegatorFactory.java?rev=1626977&r1=1626976&r2=1626977&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/DelegatorFactory.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/DelegatorFactory.java Tue Sep 23 10:52:29 2014
@@ -36,7 +36,7 @@ public abstract class DelegatorFactory i
     public static final String module = DelegatorFactoryImpl.class.getName();
     private static final ConcurrentHashMap<String, Future<Delegator>> delegators = new ConcurrentHashMap<String, Future<Delegator>>();
     private static final ThreadGroup DELEGATOR_THREAD_GROUP = new ThreadGroup("DelegatorFactory");
-    private static final ScheduledExecutorService executor = ExecutionPool.getScheduledExecutor(DELEGATOR_THREAD_GROUP, "delegator-startup", -1, true);
+    private static final ScheduledExecutorService executor = ExecutionPool.getScheduledExecutor(DELEGATOR_THREAD_GROUP, "delegator-startup", -1, 10, true);
 
     public static Delegator getDelegator(String delegatorName) {
         Future<Delegator> future = getDelegatorFuture(delegatorName);