Hi Chamila,
Please find the diff with changes to fix the issue.
WDYT ?
On Tue, Mar 24, 2015 at 1:50 PM, Chamila De Alwis <[email protected]> wrote:
> Hi Anuruddha,
>
> Yes, this seems to be missing from the ArtifactUpdatedEvent processing. If
> the extension is being manually executed in the non-repo based path, it
> should also be the case in the repo based path. It might have been dropped
> while being refactored.
>
>
> Regards,
> Chamila de Alwis
> Software Engineer | WSO2 | +94772207163
> Blog: code.chamiladealwis.com
>
>
>
> On Tue, Mar 24, 2015 at 12:51 PM, Anuruddha Liyanarachchi <
> [email protected]> wrote:
>
>> Hi,
>>
>> Found that the instance activated extension is not getting called
>> when onArtifactUpdatedEvent is publishing Instance activated event. However
>> artifactUpdate extension is getting called.
>>
>> Shouldn't artifactUpdatedEvent trigger both instanceActivated and
>> artifactUpdated Extensions?
>>
>>
>>
>> --
>> *Thanks and Regards,*
>> Anuruddha Lanka Liyanarachchi
>> Software Engineer - WSO2
>> Mobile : +94 (0) 712762611
>> Tel : +94 112 145 345
>> a <[email protected]>[email protected]
>>
>
>
--
*Thanks and Regards,*
Anuruddha Lanka Liyanarachchi
Software Engineer - WSO2
Mobile : +94 (0) 712762611
Tel : +94 112 145 345
a <[email protected]>[email protected]
Index:
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
===================================================================
---
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
(revision 31093)
+++
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
(working copy)
@@ -118,10 +118,6 @@
}
}
- // Wait for all ports to be active
-
CartridgeAgentUtils.waitUntilPortsActive(CartridgeAgentConfiguration.getInstance().getListenAddress(),
- CartridgeAgentConfiguration.getInstance().getPorts());
-
// Check repo url
String repoUrl =
CartridgeAgentConfiguration.getInstance().getRepoUrl();
/*if(CartridgeAgentConfiguration.getInstance().isMultitenant()) {
@@ -148,11 +144,13 @@
if (log.isInfoEnabled()) {
log.info("No artifact repository found");
}
+
+ // Publish instance activated event
+ CartridgeAgentEventPublisher.publishInstanceActivatedEvent();
+
// Execute instance activated shell script
extensionHandler.onInstanceActivatedEvent();
- // Publish instance activated event
- CartridgeAgentEventPublisher.publishInstanceActivatedEvent();
} else {
//Start periodical file checker task
/*if
(CartridgeAgentConfiguration.getInstance().isCommitsEnabled()) {
Index:
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
===================================================================
---
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
(revision 31093)
+++
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
(working copy)
@@ -25,6 +25,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cartridge.agent.config.CartridgeAgentConfiguration;
import
org.apache.stratos.cartridge.agent.statistics.publisher.HealthStatisticsNotifier;
+import org.apache.stratos.cartridge.agent.util.CartridgeAgentUtils;
import org.apache.stratos.iaas.metadata.client.model.InstanceMetadata;
import org.apache.stratos.messaging.broker.publish.EventPublisher;
import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
@@ -35,6 +36,8 @@
import org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent;
import org.apache.stratos.messaging.util.Constants;
+import java.util.List;
+
/**
* Cartridge agent event publisher.
*/
@@ -96,7 +99,12 @@
}
public static void publishInstanceActivatedEvent() {
- if (!isActivated()) {
+ // Wait for all ports to be active, if ports are not activated, do not
publish instance activated since
+ // the service is not up
+ List<Integer> ports =
CartridgeAgentConfiguration.getInstance().getPorts();
+ String listenAddress =
CartridgeAgentConfiguration.getInstance().getListenAddress();
+ boolean portsActivated =
CartridgeAgentUtils.waitUntilPortsActive(listenAddress, ports);
+ if (!isActivated() && portsActivated) {
if (log.isInfoEnabled()) {
log.info("Publishing instance activated event");
}
@@ -125,9 +133,25 @@
log.info("Health statistics notifier started");
}
} else {
- if (log.isWarnEnabled()) {
- log.warn("Instance already activated");
+ if (isActivated()) {
+ if (log.isWarnEnabled()) {
+ log.warn("Instance already activated");
+ }
+ } else {
+ //ports are not active
+ if (log.isInfoEnabled()) {
+ // There would not be a large number of ports
+ String portsStr = "";
+ for (Integer port : ports) {
+ portsStr += port + ", ";
+ }
+ log.info(String.format(
+ "Ports activation timed out. Aborting
InstanceActivatedEvent publishing. [IPAddress] %s [Ports] %s",
+ listenAddress,
+ portsStr));
+ }
}
+
}
}
Index:
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
===================================================================
---
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
(revision 31093)
+++
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
(working copy)
@@ -142,6 +142,9 @@
if (!cloneExists && !isMultitenant) {
// Executed git clone, publish instance activated event
CartridgeAgentEventPublisher.publishInstanceActivatedEvent();
+
+ // Execute instance activated shell script
+ ExtensionUtils.executeInstanceActivatedExtension();
}
// Start the artifact update task
Index:
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentUtils.java
===================================================================
---
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentUtils.java
(revision 31093)
+++
source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentUtils.java
(working copy)
@@ -80,7 +80,7 @@
return decryptPassword;
}
- public static void waitUntilPortsActive(String ipAddress, List<Integer>
ports) {
+ public static boolean waitUntilPortsActive(String ipAddress, List<Integer>
ports) {
long portCheckTimeOut = 1000 * 60 * 10;
String portCheckTimeOutStr = System.getProperty("port.check.timeout");
if (StringUtils.isNotBlank(portCheckTimeOutStr)) {
@@ -100,7 +100,7 @@
long endTime = System.currentTimeMillis();
long duration = endTime - startTime;
if (duration > portCheckTimeOut) {
- return;
+ return false;
}
try {
Thread.sleep(5000);
@@ -110,6 +110,7 @@
if(log.isInfoEnabled()) {
log.info("Ports activated: [ip] " + ipAddress + " [ports] "+ports);
}
+ return true;
}
public static boolean checkPortsActive(String ipAddress, List<Integer>
ports) {