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();
+ }
}
}