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 processors;
private final Object satisfiablesLock = new Object();
private Map> 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();
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 in