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 <chami...@wso2.com> 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 < > anurudd...@wso2.com> 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 <thili...@wso2.com>nurudd...@wso2.com >> > > -- *Thanks and Regards,* Anuruddha Lanka Liyanarachchi Software Engineer - WSO2 Mobile : +94 (0) 712762611 Tel : +94 112 145 345 a <thili...@wso2.com>nurudd...@wso2.com
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) {