You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2019/02/24 11:11:56 UTC
svn commit: r1854249 - in
/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container:
BlueprintContainerImpl.java BlueprintExtender.java
Author: cschneider
Date: Sun Feb 24 11:11:56 2019
New Revision: 1854249
URL: http://svn.apache.org/viewvc?rev=1854249&view=rev
Log:
[ARIES-1886] Globally configurable number of extender threads and grace
period timeout.
VM property "org.apache.aries.blueprint.default.timeout" can be used to
define the default time out.
VM property "org.apache.aries.blueprint.extender.threads" can be used to
define the count of threads used for deployment.
Modified:
aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java
Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java?rev=1854249&r1=1854248&r2=1854249&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java Sun Feb 24 11:11:56 2019
@@ -111,6 +111,8 @@ public class BlueprintContainerImpl
Runnable, SatisfiableRecipe.SatisfactionListener,
org.apache.aries.blueprint.ExtendedBlueprintContainer {
+ private static final String DEFAULT_TIMEOUT_PROPERTY = "org.apache.aries.blueprint.default.timeout";
+ private static final long DEFAULT_TIMEOUT = 5 * 60 * 1000;
private static final Logger LOGGER = LoggerFactory.getLogger(BlueprintContainerImpl.class);
private static final Class[] SECURITY_BUGFIX = {
@@ -151,7 +153,7 @@ public class BlueprintContainerImpl
private final List<Processor> processors;
private final Object satisfiablesLock = new Object();
private Map<String, List<SatisfiableRecipe>> satisfiables;
- private long timeout = 5 * 60 * 1000;
+ private long timeout;
private boolean waitForDependencies = true;
private String xmlValidation;
private ScheduledFuture timeoutFuture;
@@ -174,6 +176,7 @@ public class BlueprintContainerImpl
this.componentDefinitionRegistry = new ComponentDefinitionRegistryImpl();
this.executors = executor != null ? new ExecutorServiceWrapper(executor) : null;
this.timer = timer;
+ this.timeout = getDefaultTimeout();
this.processors = new ArrayList<Processor>();
if (System.getSecurityManager() != null) {
this.accessControlContext = BlueprintDomainCombiner.createAccessControlContext(bundle);
@@ -210,6 +213,20 @@ public class BlueprintContainerImpl
return eventDispatcher;
}
+ private long getDefaultTimeout() {
+ long timeout = DEFAULT_TIMEOUT;
+ try {
+ timeout = Long.getLong(DEFAULT_TIMEOUT_PROPERTY, DEFAULT_TIMEOUT);
+ if (timeout != DEFAULT_TIMEOUT) {
+ LOGGER.debug(DEFAULT_TIMEOUT_PROPERTY + " is set to " + timeout + ".");
+ }
+ }
+ catch (Exception e) {
+ LOGGER.error(DEFAULT_TIMEOUT_PROPERTY + " is not a number. Using default value " + timeout + ".");
+ }
+ return timeout;
+ }
+
private void readDirectives() {
Dictionary headers = bundle.getHeaders();
String symbolicName = (String) headers.get(Constants.BUNDLE_SYMBOLICNAME);
@@ -220,6 +237,9 @@ public class BlueprintContainerImpl
LOGGER.debug("Timeout directive: {}", timeoutDirective);
timeout = Integer.parseInt(timeoutDirective);
}
+ else {
+ timeout = getDefaultTimeout();
+ }
String graceperiod = paths.get(0).getDirective(BlueprintConstants.GRACE_PERIOD);
if (graceperiod != null) {
Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java?rev=1854249&r1=1854248&r2=1854249&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java Sun Feb 24 11:11:56 2019
@@ -69,6 +69,8 @@ public class BlueprintExtender implement
/** The QuiesceParticipant implementation class name */
private static final String QUIESCE_PARTICIPANT_CLASS = "org.apache.aries.quiesce.participant.QuiesceParticipant";
+ private static final String EXTENDER_THREADS_PROPERTY = "org.apache.aries.blueprint.extender.threads";
+ private static final int DEFAULT_NUMBER_OF_THREADS = 3;
private static final Logger LOGGER = LoggerFactory.getLogger(BlueprintExtender.class);
private BundleContext context;
@@ -95,7 +97,17 @@ public class BlueprintExtender implement
handlers = new NamespaceHandlerRegistryImpl(trackingContext);
executors = new ScheduledExecutorServiceWrapper(ctx, "Blueprint Extender", new ScheduledExecutorServiceFactory() {
public ScheduledExecutorService create(String name) {
- return Executors.newScheduledThreadPool(3, new BlueprintThreadFactory(name));
+ int extenderThreads = DEFAULT_NUMBER_OF_THREADS;
+ try {
+ extenderThreads = Integer.getInteger(EXTENDER_THREADS_PROPERTY, DEFAULT_NUMBER_OF_THREADS);
+ if (extenderThreads != DEFAULT_NUMBER_OF_THREADS) {
+ LOGGER.debug(EXTENDER_THREADS_PROPERTY + " is set to " + extenderThreads + ".");
+ }
+ }
+ catch (Exception e) {
+ LOGGER.error(EXTENDER_THREADS_PROPERTY + " is not a number. Using default value " + DEFAULT_NUMBER_OF_THREADS + ".");
+ }
+ return Executors.newScheduledThreadPool(extenderThreads, new BlueprintThreadFactory(name));
}
});
eventDispatcher = new BlueprintEventDispatcher(ctx);