Hi Chamila,

Please find the attached diff for the changes in master branch.



On Thu, Mar 26, 2015 at 11:07 AM, Anuruddha Liyanarachchi <
anurudd...@wso2.com> wrote:

> Hi Chamila,
>
> I will resend the diff  rebased for master.
>
> On Thu, Mar 26, 2015 at 11:01 AM, Chamila De Alwis <chami...@wso2.com>
> wrote:
>
>> Hi Anuruddha,
>>
>> This seems to be based on 4.0.0-rc4 tag. Can you resend it by rebasing
>> for master?
>>
>>
>> Regards,
>> Chamila de Alwis
>> Software Engineer | WSO2 | +94772207163
>> Blog: code.chamiladealwis.com
>>
>>
>>
>> On Tue, Mar 24, 2015 at 2:35 PM, Anuruddha Liyanarachchi <
>> anurudd...@wso2.com> wrote:
>>
>>> 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
>>>
>>
>>
>
>
> --
> *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
diff --git 
a/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
 
b/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
index 41abfc2..993c17d 100644
--- 
a/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
+++ 
b/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
@@ -120,10 +120,6 @@ public class CartridgeAgent implements Runnable {
             }
         }
 
-        // 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()) {
@@ -150,11 +146,13 @@ public class CartridgeAgent implements Runnable {
             if (log.isInfoEnabled()) {
                 log.info("No artifact repository found");
             }
-            // Execute instance activated shell script
-            extensionHandler.onInstanceActivatedEvent();
 
             // Publish instance activated event
             CartridgeAgentEventPublisher.publishInstanceActivatedEvent();
+
+            // Execute instance activated shell script
+            extensionHandler.onInstanceActivatedEvent();
+
         } else {
             //Start periodical file checker task
             /*if 
(CartridgeAgentConfiguration.getInstance().isCommitsEnabled()) {
diff --git 
a/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
 
b/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
index ee89c79..ab28592 100644
--- 
a/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
+++ 
b/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
@@ -25,6 +25,7 @@ import org.apache.commons.logging.Log;
 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.messaging.broker.publish.EventPublisher;
 import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
 import 
org.apache.stratos.messaging.event.instance.status.InstanceActivatedEvent;
@@ -34,6 +35,8 @@ import 
org.apache.stratos.messaging.event.instance.status.InstanceReadyToShutdow
 import org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent;
 import org.apache.stratos.messaging.util.Constants;
 
+import java.util.List;
+
 /**
  * Cartridge agent event publisher.
  */
@@ -69,7 +72,12 @@ public class CartridgeAgentEventPublisher {
     }
 
     public static void publishInstanceStartedEvent() {
-        if (!isStarted()) {
+        // 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 started event");
             }
@@ -88,8 +96,23 @@ public class CartridgeAgentEventPublisher {
             }
 
         } else {
-            if (log.isWarnEnabled()) {
-                log.warn("Instance already started");
+            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));
+                }
             }
         }
     }
diff --git 
a/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
 
b/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
index 71f1d96..c416477 100644
--- 
a/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
+++ 
b/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
@@ -142,6 +142,9 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             if (!cloneExists && !isMultitenant) {
                 // Executed git clone, publish instance activated event
                 CartridgeAgentEventPublisher.publishInstanceActivatedEvent();
+
+                // Execute instance activated shell script
+                ExtensionUtils.executeInstanceActivatedExtension();
             }
 
             // Start the artifact update task
diff --git 
a/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentUtils.java
 
b/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentUtils.java
index 010462d..5b1d1e9 100644
--- 
a/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentUtils.java
+++ 
b/source/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentUtils.java
@@ -80,7 +80,7 @@ public class CartridgeAgentUtils {
         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 @@ public class CartridgeAgentUtils {
             long endTime = System.currentTimeMillis();
             long duration = endTime - startTime;
             if (duration > portCheckTimeOut) {
-                return;
+                return false;
             }
             try {
                 Thread.sleep(5000);
@@ -110,6 +110,7 @@ public class CartridgeAgentUtils {
         if(log.isInfoEnabled()) {
             log.info("Ports activated: [ip] " + ipAddress + " [ports] "+ports);
         }
+        return true;
     }
 
     public static boolean checkPortsActive(String ipAddress, List<Integer> 
ports) {

Reply via email to