You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/05/13 19:16:41 UTC
stratos git commit: Adding functionality to enable/disable component
startup synchronizer
Repository: stratos
Updated Branches:
refs/heads/master 83a4f083c -> ec850fe2e
Adding functionality to enable/disable component startup synchronizer
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ec850fe2
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ec850fe2
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ec850fe2
Branch: refs/heads/master
Commit: ec850fe2ee8d0205e4863910a054256b84dd978d
Parents: 83a4f08
Author: Imesh Gunaratne <im...@apache.org>
Authored: Wed May 13 22:46:07 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Wed May 13 22:46:32 2015 +0530
----------------------------------------------------------------------
.../internal/AutoscalerServiceComponent.java | 24 ++++---
.../CloudControllerServiceComponent.java | 24 ++++---
.../ComponentStartUpSynchronizerImpl.java | 67 ++++++++++++++++++--
.../services/ComponentStartUpSynchronizer.java | 2 +
.../StratosManagerServiceComponent.java | 30 +++++----
.../modules/distribution/src/bin/stratos.bat | 2 +-
.../modules/distribution/src/bin/stratos.sh | 1 +
7 files changed, 116 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec850fe2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
index c9d9f4e..d6185d7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
@@ -222,15 +222,23 @@ public class AutoscalerServiceComponent {
ComponentStartUpSynchronizer componentStartUpSynchronizer =
ServiceReferenceHolder.getInstance().getComponentStartUpSynchronizer();
- componentStartUpSynchronizer.addEventListener(new ComponentActivationEventListener() {
- @Override
- public void activated(Component component) {
- if (component == Component.StratosManager) {
- Runnable applicationSynchronizer = new ApplicationEventSynchronizer();
- scheduler.scheduleAtFixedRate(applicationSynchronizer, 0, 1, TimeUnit.MINUTES);
+ if(componentStartUpSynchronizer.isEnabled()) {
+ componentStartUpSynchronizer.addEventListener(new ComponentActivationEventListener() {
+ @Override
+ public void activated(Component component) {
+ if (component == Component.StratosManager) {
+ scheduleEventSynchronizers();
+ }
}
- }
- });
+ });
+ } else {
+ scheduleEventSynchronizers();
+ }
+ }
+
+ private void scheduleEventSynchronizers() {
+ Runnable applicationSynchronizer = new ApplicationEventSynchronizer();
+ scheduler.scheduleAtFixedRate(applicationSynchronizer, 0, 1, TimeUnit.MINUTES);
}
protected void deactivate(ComponentContext context) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec850fe2/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
index 2c5ceff..e174104 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
@@ -170,15 +170,23 @@ public class CloudControllerServiceComponent {
ComponentStartUpSynchronizer componentStartUpSynchronizer =
ServiceReferenceHolder.getInstance().getComponentStartUpSynchronizer();
- componentStartUpSynchronizer.addEventListener(new ComponentActivationEventListener() {
- @Override
- public void activated(Component component) {
- if (component == Component.StratosManager) {
- Runnable topologySynchronizer = new TopologyEventSynchronizer();
- scheduler.scheduleAtFixedRate(topologySynchronizer, 0, 1, TimeUnit.MINUTES);
+ if(componentStartUpSynchronizer.isEnabled()) {
+ componentStartUpSynchronizer.addEventListener(new ComponentActivationEventListener() {
+ @Override
+ public void activated(Component component) {
+ if (component == Component.StratosManager) {
+ scheduleEventSynchronizers();
+ }
}
- }
- });
+ });
+ } else {
+ scheduleEventSynchronizers();
+ }
+ }
+
+ private void scheduleEventSynchronizers() {
+ Runnable topologySynchronizer = new TopologyEventSynchronizer();
+ scheduler.scheduleAtFixedRate(topologySynchronizer, 0, 1, TimeUnit.MINUTES);
}
protected void setTaskService(TaskService taskService) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec850fe2/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/ComponentStartUpSynchronizerImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/ComponentStartUpSynchronizerImpl.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/ComponentStartUpSynchronizerImpl.java
index 079c428..887941e 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/ComponentStartUpSynchronizerImpl.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/ComponentStartUpSynchronizerImpl.java
@@ -43,6 +43,7 @@ public class ComponentStartUpSynchronizerImpl implements ComponentStartUpSynchro
private static final Log log = LogFactory.getLog(ComponentStartUpSynchronizerImpl.class);
private static final String COMPONENT_STATUS_MAP = "stratos.component.status.map";
+ private static final String COMPONENT_STARTUP_SYNCHRONIZER_ENABLED = "stratos.component.startup.synchronizer.enabled";
private static final String COMPONENT_ACTIVATION_CHECK_INTERVAL = "stratos.component.activation.check.interval";
private static final String COMPONENT_ACTIVATION_TIMEOUT = "stratos.component.activation.timeout";
private static final long DEFAULT_COMPONENT_ACTIVATION_CHECK_INTERVAL = 1000;
@@ -50,6 +51,7 @@ public class ComponentStartUpSynchronizerImpl implements ComponentStartUpSynchro
private Map<Component, Boolean> componentStatusMap;
private List<ComponentStartUpEventListener> eventListeners;
+ private boolean componentStartUpSynchronizerEnabled;
private long componentActivationCheckInterval;
private long componentActivationTimeout;
@@ -57,6 +59,8 @@ public class ComponentStartUpSynchronizerImpl implements ComponentStartUpSynchro
componentStatusMap = distributedObjectProvider.getMap(COMPONENT_STATUS_MAP);
eventListeners = new ArrayList<ComponentStartUpEventListener>();
+ componentStartUpSynchronizerEnabled = Boolean.getBoolean(COMPONENT_STARTUP_SYNCHRONIZER_ENABLED);
+
componentActivationCheckInterval = Long.getLong(COMPONENT_ACTIVATION_CHECK_INTERVAL,
DEFAULT_COMPONENT_ACTIVATION_CHECK_INTERVAL);
log.info(String.format("Component activation check interval: %s seconds",
@@ -67,6 +71,20 @@ public class ComponentStartUpSynchronizerImpl implements ComponentStartUpSynchro
log.info(String.format("Component activation timeout: %s seconds", (componentActivationTimeout / 1000)));
}
+ /**
+ * Returns true if component startup synchronizer is enabled.
+ * @return
+ */
+ @Override
+ public boolean isEnabled() {
+ return componentStartUpSynchronizerEnabled;
+ }
+
+ /**
+ * Set the status of a component.
+ * @param component
+ * @param active
+ */
@Override
public void setComponentStatus(Component component, boolean active) {
componentStatusMap.put(component, active);
@@ -79,6 +97,10 @@ public class ComponentStartUpSynchronizerImpl implements ComponentStartUpSynchro
}
}
+ /**
+ * Notify component activation event listeners.
+ * @param component
+ */
private void notifyComponentActivationEventListeners(Component component) {
for (ComponentStartUpEventListener eventListener : eventListeners) {
if (eventListener instanceof ComponentActivationEventListener) {
@@ -93,6 +115,11 @@ public class ComponentStartUpSynchronizerImpl implements ComponentStartUpSynchro
}
}
+ /**
+ * Returns true if a given component is active.
+ * @param component
+ * @return
+ */
@Override
public boolean isComponentActive(Component component) {
if (componentStatusMap.containsKey(component)) {
@@ -101,13 +128,25 @@ public class ComponentStartUpSynchronizerImpl implements ComponentStartUpSynchro
return false;
}
+ /**
+ * Wait for a component to be activated
+ * @param owner owner component
+ * @param component component to be activated
+ */
@Override
public void waitForComponentActivation(Component owner, Component component) {
+
+ if(!componentStartUpSynchronizerEnabled) {
+ log.debug(String.format("Component activation check is disabled, %s did not wait for %s to be activated",
+ owner, component));
+ return;
+ }
+
long startTime = System.currentTimeMillis();
boolean logged = false;
while (!isComponentActive(component)) {
if (!logged) {
- log.info(String.format("%s component is waiting for %s component to become active...",
+ log.info(String.format("%s is waiting for %s to be activated...",
owner, component));
logged = true;
}
@@ -115,36 +154,52 @@ public class ComponentStartUpSynchronizerImpl implements ComponentStartUpSynchro
try {
Thread.sleep(componentActivationCheckInterval);
} catch (InterruptedException ignore) {
- throw new RuntimeException(String.format("Thread interrupted, %s component could not wait for " +
- "component %s to become active", owner, component));
+ throw new RuntimeException(String.format("Thread interrupted, %s could not wait for " +
+ "%s to be activated", owner, component));
}
long currentTime = System.currentTimeMillis();
if ((currentTime - startTime) > componentActivationTimeout) {
- throw new RuntimeException(String.format("%s component did not become active within %d seconds ",
+ throw new RuntimeException(String.format("%s component did not activated within %d seconds ",
component, (componentActivationTimeout / 1000)));
}
}
}
+ /**
+ * Wait for a web service to be activated.
+ * @param serviceName
+ * @throws AxisFault
+ */
@Override
public void waitForWebServiceActivation(String serviceName) throws AxisFault {
+
+ if(!componentStartUpSynchronizerEnabled) {
+ log.debug(String.format("Component activation check is disabled, did not wait for %s to be activated",
+ serviceName));
+ return;
+ }
+
AxisConfiguration axisConfiguration = CarbonConfigurationContextFactory.getConfigurationContext()
.getAxisConfiguration();
AxisService cloudControllerService = axisConfiguration.getService(serviceName);
if (!cloudControllerService.isActive()) {
while (!cloudControllerService.isActive()) {
- log.info(String.format("Waiting for %s web service to become active...", serviceName));
+ log.info(String.format("Waiting for %s web service to be activated...", serviceName));
try {
Thread.sleep(componentActivationCheckInterval);
} catch (InterruptedException ignore) {
return;
}
}
- log.info(String.format("%s web service became active", serviceName));
+ log.info(String.format("%s web service activated", serviceName));
}
}
+ /**
+ * Add component startup event listener.
+ * @param eventListener
+ */
@Override
public void addEventListener(ComponentStartUpEventListener eventListener) {
eventListeners.add(eventListener);
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec850fe2/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/services/ComponentStartUpSynchronizer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/services/ComponentStartUpSynchronizer.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/services/ComponentStartUpSynchronizer.java
index 376e837..1eebdeb 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/services/ComponentStartUpSynchronizer.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/services/ComponentStartUpSynchronizer.java
@@ -27,6 +27,8 @@ import org.apache.stratos.common.Component;
*/
public interface ComponentStartUpSynchronizer {
+ boolean isEnabled();
+
void setComponentStatus(Component component, boolean active);
boolean isComponentActive(Component component);
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec850fe2/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
index bb8f0ff..70179d5 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
@@ -251,18 +251,26 @@ public class StratosManagerServiceComponent {
private void registerComponentStartUpEventListeners() {
ComponentStartUpSynchronizer componentStartUpSynchronizer =
ServiceReferenceHolder.getInstance().getComponentStartUpSynchronizer();
- componentStartUpSynchronizer.addEventListener(new ComponentActivationEventListener() {
- @Override
- public void activated(Component component) {
- if (component == Component.StratosManager) {
- Runnable tenantSynchronizer = new TenantEventSynchronizer();
- scheduler.scheduleAtFixedRate(tenantSynchronizer, 0, 1, TimeUnit.MINUTES);
-
- Runnable applicationSignUpSynchronizer = new ApplicationSignUpEventSynchronizer();
- scheduler.scheduleAtFixedRate(applicationSignUpSynchronizer, 0, 1, TimeUnit.MINUTES);
+ if(componentStartUpSynchronizer.isEnabled()) {
+ componentStartUpSynchronizer.addEventListener(new ComponentActivationEventListener() {
+ @Override
+ public void activated(Component component) {
+ if (component == Component.StratosManager) {
+ scheduleEventSynchronizers();
+ }
}
- }
- });
+ });
+ } else {
+ scheduleEventSynchronizers();
+ }
+ }
+
+ private void scheduleEventSynchronizers() {
+ Runnable tenantSynchronizer = new TenantEventSynchronizer();
+ scheduler.scheduleAtFixedRate(tenantSynchronizer, 0, 1, TimeUnit.MINUTES);
+
+ Runnable applicationSignUpSynchronizer = new ApplicationSignUpEventSynchronizer();
+ scheduler.scheduleAtFixedRate(applicationSignUpSynchronizer, 0, 1, TimeUnit.MINUTES);
}
protected void setConfigurationContextService(ConfigurationContextService contextService) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec850fe2/products/stratos/modules/distribution/src/bin/stratos.bat
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/bin/stratos.bat b/products/stratos/modules/distribution/src/bin/stratos.bat
index 05a8e87..c7349bc 100644
--- a/products/stratos/modules/distribution/src/bin/stratos.bat
+++ b/products/stratos/modules/distribution/src/bin/stratos.bat
@@ -155,7 +155,7 @@ set CARBON_CLASSPATH=.\lib;%CARBON_CLASSPATH%
set JAVA_ENDORSED=".\lib\endorsed";"%JAVA_HOME%\jre\lib\endorsed";"%JAVA_HOME%\lib\endorsed"
-set CMD_LINE_ARGS=-Xbootclasspath/a:%CARBON_XBOOTCLASSPATH% -Xms256m -Xmx1024m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="%CARBON_HOME%\repository\logs\heap-dump.hprof" -Dcom.sun.management.jmxremote -classpath %CARBON_CLASSPATH% %JAVA_OPTS% -Djava.endorsed.dirs=%JAVA_ENDORSED% -Dcarbon.registry.root=/ -Dcarbon.home="%CARBON_HOME%" -Dwso2.server.standalone=true -Djava.command="%JAVA_HOME%\bin\java" -Djava.opts="%JAVA_OPTS%" -Djava.io.tmpdir="%CARBON_HOME%\tmp" -Dcatalina.base="%CARBON_HOME%\lib\tomcat" -Dwso2.carbon.xml=%CARBON_HOME%\repository\conf\carbon.xml -Dwso2.registry.xml="%CARBON_HOME%\repository\conf\registry.xml" -Dwso2.user.mgt.xml="%CARBON_HOME%\repository\conf\user-mgt.xml" -Dwso2.transports.xml="%CARBON_HOME%\repository\conf\mgt-transports.xml" -Djava.util.logging.config.file="%CARBON_HOME%\repository\conf\log4j.properties" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcarbon.config.dir.path="%CARBON_HOME%\repository\
conf" -Djndi.properties.dir="%CARBON_HOME%/repository/conf" -Dcarbon.logs.path="%CARBON_HOME%\repository\logs" -Dcomponents.repo="%CARBON_HOME%\repository\components" -Dconf.location="%CARBON_HOME%\repository\conf" -Dcom.atomikos.icatch.file="%CARBON_HOME%\lib\transactions.properties" -Dcom.atomikos.icatch.hide_init_file_path="true" -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dcom.sun.jndi.ldap.connect.pool.authentication=simple -Dcom.sun.jndi.ldap.connect.pool.timeout=3000 -Dorg.terracotta.quartz.skipUpdateCheck=true -Dcarbon.classpath=%CARBON_CLASSPATH% -Dfile.encoding=UTF8 -Dloadbalancer.conf="%CARBON_HOME%\repository\conf\loadbalancer.conf"
+set CMD_LINE_ARGS=-Xbootclasspath/a:%CARBON_XBOOTCLASSPATH% -Xms256m -Xmx1024m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="%CARBON_HOME%\repository\logs\heap-dump.hprof" -Dcom.sun.management.jmxremote -classpath %CARBON_CLASSPATH% %JAVA_OPTS% -Djava.endorsed.dirs=%JAVA_ENDORSED% -Dcarbon.registry.root=/ -Dcarbon.home="%CARBON_HOME%" -Dwso2.server.standalone=true -Djava.command="%JAVA_HOME%\bin\java" -Djava.opts="%JAVA_OPTS%" -Djava.io.tmpdir="%CARBON_HOME%\tmp" -Dcatalina.base="%CARBON_HOME%\lib\tomcat" -Dwso2.carbon.xml=%CARBON_HOME%\repository\conf\carbon.xml -Dwso2.registry.xml="%CARBON_HOME%\repository\conf\registry.xml" -Dwso2.user.mgt.xml="%CARBON_HOME%\repository\conf\user-mgt.xml" -Dwso2.transports.xml="%CARBON_HOME%\repository\conf\mgt-transports.xml" -Djava.util.logging.config.file="%CARBON_HOME%\repository\conf\log4j.properties" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcarbon.config.dir.path="%CARBON_HOME%\repository\
conf" -Djndi.properties.dir="%CARBON_HOME%/repository/conf" -Dcarbon.logs.path="%CARBON_HOME%\repository\logs" -Dcomponents.repo="%CARBON_HOME%\repository\components" -Dconf.location="%CARBON_HOME%\repository\conf" -Dcom.atomikos.icatch.file="%CARBON_HOME%\lib\transactions.properties" -Dcom.atomikos.icatch.hide_init_file_path="true" -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dcom.sun.jndi.ldap.connect.pool.authentication=simple -Dcom.sun.jndi.ldap.connect.pool.timeout=3000 -Dorg.terracotta.quartz.skipUpdateCheck=true -Dcarbon.classpath=%CARBON_CLASSPATH% -Dfile.encoding=UTF8 -Dloadbalancer.conf="%CARBON_HOME%\repository\conf\loadbalancer.conf -Dstratos.component.startup.synchronizer.enabled=true"
:runJava
echo JAVA_HOME environment variable is set to %JAVA_HOME%
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec850fe2/products/stratos/modules/distribution/src/bin/stratos.sh
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/bin/stratos.sh b/products/stratos/modules/distribution/src/bin/stratos.sh
index 8420fc5..1935794 100755
--- a/products/stratos/modules/distribution/src/bin/stratos.sh
+++ b/products/stratos/modules/distribution/src/bin/stratos.sh
@@ -302,6 +302,7 @@ do
-Djndi.properties.dir="$CARBON_HOME/repository/conf" \
-Dthrift.client.config.file.path="$CARBON_HOME/repository/conf/thrift-client-config.xml" \
-DMETADATA_CLIENT_CONFIG_FILE="$CARBON_HOME/repository/conf/metadataservice.xml" \
+ -Dstratos.component.startup.synchronizer.enabled=true \
org.wso2.carbon.bootstrap.Bootstrap $*
status=$?
done