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

svn commit: r1626901 - /felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DispatchExecutor.java

Author: pderop
Date: Mon Sep 22 21:52:51 2014
New Revision: 1626901

URL: http://svn.apache.org/r1626901
Log:
Execute a given task from the current thread if the threadpool is stopped (this may happen if
a threadpool is being updated.

Modified:
    felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DispatchExecutor.java

Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DispatchExecutor.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DispatchExecutor.java?rev=1626901&r1=1626900&r2=1626901&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DispatchExecutor.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DispatchExecutor.java Mon Sep 22 21:52:51 2014
@@ -2,6 +2,7 @@ package org.apache.felix.dm.impl;
 
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.Executor;
+import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.osgi.service.log.LogService;
@@ -84,7 +85,13 @@ public class DispatchExecutor implements
      */
 	public void execute() {
         if (m_scheduled.compareAndSet(false, true)) { // schedules our run method in the tpool.
-            m_threadPool.execute(this);
+            try {
+                m_threadPool.execute(this);
+            } catch (RejectedExecutionException e) {
+                // The threadpool seems stopped (maybe the framework is being stopped). Anyway, just execute our tasks
+                // from the current thread.
+                run();
+            }
         }
 	}