IMHO, adding an artificial delay won't make it realistic. There are many other parameters and conditions which are different from mock iaas to actual iaases. What we need is a set of live tests to cover those scenarios. For eg. jclouds has live tests for each iaas platform.
On Tuesday, 8 December 2015, Sajith Kariyawasam <saj...@wso2.com> wrote: > > > On Mon, Dec 7, 2015 at 4:09 PM, Akila Ravihansa Perera <raviha...@wso2.com > <javascript:_e(%7B%7D,'cvml','raviha...@wso2.com');>> wrote: > >> Hi, >> >> I've fixed the warning message with commit [1]. The root cause is CC will >> throw an exception if the member instance id is null in the member >> termination flow. But the lock is acquired after the exception is thrown. >> Therefore it will never reach to the point where lock is acquired. I've >> fixed it by moving locking/topology reading related code to a separate >> try-finally block. >> >> Note that this will only fix the System warning message. I'm currently >> working on a fix for member termination issue. Will start a separate thread >> for that. >> >> >> @Sajith: you wouldn't experience this in mock iaas since members become >> initialized within milliseconds. But that's not the case with EC2/OpenStack >> etc. >> >> > We may need to introduce a configurable "delay" (Thread sleep) to mock > iaas operations for make it more realistic with actual iaases instance > creation process. > > >> [1] >> https://github.com/apache/stratos/commit/bb22134fbbe3232b5e0a20943c30d2cfc5b55322 >> >> Thanks. >> >> On Mon, Dec 7, 2015 at 3:30 PM, Sajith Kariyawasam <saj...@wso2.com >> <javascript:_e(%7B%7D,'cvml','saj...@wso2.com');>> wrote: >> >>> Did anyone of you able to reproduce this? I was trying with mock iaas, >>> but I didn't encounter this error >>> >>> On Sun, Dec 6, 2015 at 9:02 PM, Gayan Gunarathne <gay...@wso2.com >>> <javascript:_e(%7B%7D,'cvml','gay...@wso2.com');>> wrote: >>> >>>> >>>> >>>> On Sun, Dec 6, 2015 at 10:47 AM, Isuru Haththotuwa <isu...@apache.org >>>> <javascript:_e(%7B%7D,'cvml','isu...@apache.org');>> wrote: >>>> >>>>> Hi Akila, >>>>> >>>>> On Sun, Dec 6, 2015 at 10:26 AM, Akila Ravihansa Perera < >>>>> raviha...@wso2.com >>>>> <javascript:_e(%7B%7D,'cvml','raviha...@wso2.com');>> wrote: >>>>> >>>>>> Hi Isuru, >>>>>> >>>>>> While I agree that it is hard to handle scenarios like this in >>>>>> Stratos given the current architecture and design, I believe pitfalls >>>>>> like >>>>>> this could end up being a huge overhead for its users. Not only they >>>>>> would >>>>>> have to maintain a PaaS but they will also have to monitor the logs or >>>>>> IaaS >>>>>> level dashboard and manually kill instances whenever Stratos fails to do >>>>>> so? Perhaps we need to rethink on the whole architecture? >>>>>> >>>>> IMHO we need to consider the probability of this happening; for an >>>>> example, in this case, whether users will try to deploy an application and >>>>> undeploy it again right at the next moment. Even in such cases, if we >>>>> leave >>>>> a more meaningful log it should be enough, and Imesh mentioned.. >>>>> >>>> >>>> Event it is instance id is blank, this seems to be a issue with >>>> acquiring and releasing the locks in our thread model.IMO we need to handle >>>> that. I think we need to first identify which thread is try to release the >>>> write lock which acquired by another thread. >>>> I think we may able to reproduce this in the mock iaas by setting the >>>> instance id to blank.Also if we print the get context class loader in >>>> releaseWriteLock as a debug log I think we can get the exact thread which >>>> causing this issue. Will check on those points. >>>> >>>> @Akila , Did you able to reproduce this regularly? >>>> >>>>> >>>>>> As a short term solutions, perhaps we could wait for a certain amount >>>>>> of time until the member is initialized in the member termination flow. >>>>>> >>>>>> +1 to go for 4.1.5-rc3. >>>>>> >>>>>> Thanks. >>>>>> >>>>> +1 for 4.1.5-RC3. >>>>> >>>>>> >>>>>> On Sun, Dec 6, 2015 at 9:45 AM, Imesh Gunaratne <im...@apache.org >>>>>> <javascript:_e(%7B%7D,'cvml','im...@apache.org');>> wrote: >>>>>> >>>>>>> Yes I agree with Isuru, however we should be able to raise a more >>>>>>> meaningful error message in a such situation. If an instance has not >>>>>>> initialized at the time the termination call is made, we should be able >>>>>>> to >>>>>>> tell that to the end user clearly. >>>>>>> >>>>>>> [2015-12-06 00:29:51,337] WARN >>>>>>> {org.apache.stratos.common.concurrent.locks.ReadWriteLock} - System >>>>>>> warning! Trying to release a lock which has not been taken by the same >>>>>>> thread: [lock-name] topology-manager [thread-id] 214 [thread-name] >>>>>>> http-nio-9443-exec-17 >>>>>>> >>>>>>> Regarding the above warning message, we added it purposely to track >>>>>>> situations where threads try to release locks while they have not been >>>>>>> acquired by the same thread. If this happens there is a slight >>>>>>> possibility >>>>>>> to some functionality to not work properly. >>>>>>> >>>>>>> If we are to list down the issues we identified in this release >>>>>>> candidate: >>>>>>> >>>>>>> - SNAPSHOT versions available in docker files >>>>>>> - Thrift client configuration file not being up to date in load >>>>>>> balancer extensions >>>>>>> - CEP extension distribution issue >>>>>>> - A validation to handle member termination logic when the given >>>>>>> member has not initiatlized >>>>>>> - doap_Stratos.rdf file was not up to date with release versions >>>>>>> >>>>>>> Considering all of the above +1 to cancel this vote and go for >>>>>>> 4.1.5-rc3. >>>>>>> >>>>>>> Thanks >>>>>>> >>>>>>> On Sun, Dec 6, 2015 at 9:16 AM, Isuru Haththotuwa <isu...@apache.org >>>>>>> <javascript:_e(%7B%7D,'cvml','isu...@apache.org');>> wrote: >>>>>>> >>>>>>>> On Sun, Dec 6, 2015 at 12:37 AM, Akila Ravihansa Perera < >>>>>>>> raviha...@wso2.com >>>>>>>> <javascript:_e(%7B%7D,'cvml','raviha...@wso2.com');>> wrote: >>>>>>>> >>>>>>>>> I tried to deploy an application on EC2 and immediately undeployed >>>>>>>>> it which caused the following exception. Also the EC2 instance did >>>>>>>>> not get >>>>>>>>> terminated. Noticed the following warning in the log; >>>>>>>>> >>>>>>>>> [2015-12-06 00:29:51,337] WARN >>>>>>>>> {org.apache.stratos.common.concurrent.locks.ReadWriteLock} - System >>>>>>>>> warning! Trying to release a lock which has not been taken by the same >>>>>>>>> thread: [lock-name] topology-manager [thread-id] 214 [thread-name] >>>>>>>>> http-nio-9443-exec-17 >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> [2015-12-06 00:29:51,309] INFO >>>>>>>>> {org.apache.stratos.autoscaler.client.AutoscalerCloudControllerClient} >>>>>>>>> - >>>>>>>>> Terminating instance via cloud controller: [member] >>>>>>>>> single-cartridge-app-ec2.my-php-app-ec2.php-ec2.domain5545861a-0a1b-4532-830e-1c9beb2d8545 >>>>>>>>> [2015-12-06 00:29:51,313] ERROR >>>>>>>>> {org.apache.stratos.cloud.controller.services.impl.CloudControllerServiceImpl} >>>>>>>>> - Could not terminate instance, instance id is blank: [member-id] >>>>>>>>> single-cartridge-app-ec2.my-php-app-ec2.php-ec2.domain5545861a-0a1b-4532-830e-1c9beb2d8545 >>>>>>>>> , removing member from topology... >>>>>>>>> [2015-12-06 00:29:51,319] INFO >>>>>>>>> {org.apache.stratos.cloud.controller.messaging.publisher.TopologyEventPublisher} >>>>>>>>> - Publishing member terminated event: [service-name] php-ec2 >>>>>>>>> [cluster-id] >>>>>>>>> single-cartridge-app-ec2.my-php-app-ec2.php-ec2.domain >>>>>>>>> [cluster-instance-id] single-cartridge-app-ec2-1 [member-id] >>>>>>>>> single-cartridge-app-ec2.my-php-app-ec2.php-ec2.domain5545861a-0a1b-4532-830e-1c9beb2d8545 >>>>>>>>> [network-partition-id] network-partition-ec2 [partition-id] >>>>>>>>> partition-1 >>>>>>>>> [group-id] null >>>>>>>>> [2015-12-06 00:29:51,326] INFO >>>>>>>>> {org.apache.stratos.messaging.message.processor.topology.MemberTerminatedMessageProcessor} >>>>>>>>> - Member terminated: [service] php-ec2 [cluster] >>>>>>>>> single-cartridge-app-ec2.my-php-app-ec2.php-ec2.domain [member] >>>>>>>>> single-cartridge-app-ec2.my-php-app-ec2.php-ec2.domain5545861a-0a1b-4532-830e-1c9beb2d8545 >>>>>>>>> [2015-12-06 00:29:51,326] WARN >>>>>>>>> {org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor} - >>>>>>>>> Obsolete >>>>>>>>> member has either been terminated or its obsolete time out has >>>>>>>>> expired and >>>>>>>>> it is removed from obsolete members list: >>>>>>>>> single-cartridge-app-ec2.my-php-app-ec2.php-ec2.domain5545861a-0a1b-4532-830e-1c9beb2d8545 >>>>>>>>> [2015-12-06 00:29:51,327] INFO >>>>>>>>> {org.apache.stratos.autoscaler.status.processor.cluster.ClusterStatusTerminatedProcessor} >>>>>>>>> - Publishing Cluster terminated event for [application]: >>>>>>>>> single-cartridge-app-ec2 [cluster]: >>>>>>>>> single-cartridge-app-ec2.my-php-app-ec2.php-ec2.domain >>>>>>>>> [2015-12-06 00:29:51,335] INFO >>>>>>>>> {org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder} >>>>>>>>> - >>>>>>>>> Cluster Terminated adding status started for and removing the cluster >>>>>>>>> instancesingle-cartridge-app-ec2.my-php-app-ec2.php-ec2.domain >>>>>>>>> *[2015-12-06 00:29:51,337] WARN >>>>>>>>> {org.apache.stratos.common.concurrent.locks.ReadWriteLock} - System >>>>>>>>> warning! Trying to release a lock which has not been taken by the same >>>>>>>>> thread: [lock-name] topology-manager [thread-id] 214 [thread-name] >>>>>>>>> http-nio-9443-exec-17* >>>>>>>>> [2015-12-06 00:29:51,346] INFO >>>>>>>>> {org.apache.stratos.cloud.controller.messaging.publisher.TopologyEventPublisher} >>>>>>>>> - Publishing Cluster terminated event: [application-id] >>>>>>>>> single-cartridge-app-ec2 [cluster id] >>>>>>>>> single-cartridge-app-ec2.my-php-app-ec2.php-ec2.domain [instance-id] >>>>>>>>> single-cartridge-app-ec2-1 >>>>>>>>> [2015-12-06 00:29:51,348] ERROR >>>>>>>>> {org.apache.stratos.autoscaler.rule.RuleTasksDelegator} - Cannot >>>>>>>>> terminate >>>>>>>>> instance >>>>>>>>> org.apache.stratos.cloud.controller.stub.CloudControllerServiceCloudControllerExceptionException: >>>>>>>>> CloudControllerServiceCloudControllerExceptionException >>>>>>>>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >>>>>>>>> Method) >>>>>>>>> at >>>>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) >>>>>>>>> at >>>>>>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) >>>>>>>>> at java.lang.reflect.Constructor.newInstance(Constructor.java:526) >>>>>>>>> at java.lang.Class.newInstance(Class.java:379) >>>>>>>>> at >>>>>>>>> org.apache.stratos.cloud.controller.stub.CloudControllerServiceStub.terminateInstance(CloudControllerServiceStub.java:8660) >>>>>>>>> at >>>>>>>>> org.apache.stratos.autoscaler.client.AutoscalerCloudControllerClient.terminateInstance(AutoscalerCloudControllerClient.java:203) >>>>>>>>> at >>>>>>>>> org.apache.stratos.autoscaler.rule.RuleTasksDelegator.terminateObsoleteInstance(RuleTasksDelegator.java:295) >>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>>>> at >>>>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>>>>>>>> at >>>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:606) >>>>>>>>> at >>>>>>>>> org.mvel2.optimizers.impl.refl.nodes.MethodAccessor.getValue(MethodAccessor.java:48) >>>>>>>>> at >>>>>>>>> org.mvel2.optimizers.impl.refl.nodes.VariableAccessor.getValue(VariableAccessor.java:37) >>>>>>>>> at >>>>>>>>> org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:108) >>>>>>>>> at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85) >>>>>>>>> at >>>>>>>>> org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123) >>>>>>>>> at >>>>>>>>> org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119) >>>>>>>>> at org.mvel2.MVEL.executeExpression(MVEL.java:930) >>>>>>>>> at >>>>>>>>> org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:104) >>>>>>>>> at >>>>>>>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287) >>>>>>>>> at >>>>>>>>> org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221) >>>>>>>>> at >>>>>>>>> org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456) >>>>>>>>> at >>>>>>>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710) >>>>>>>>> at >>>>>>>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674) >>>>>>>>> at >>>>>>>>> org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:230) >>>>>>>>> at >>>>>>>>> org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor.evaluate(ClusterMonitor.java:472) >>>>>>>>> at >>>>>>>>> org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor.access$200(ClusterMonitor.java:86) >>>>>>>>> at >>>>>>>>> org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor$2.run(ClusterMonitor.java:444) >>>>>>>>> at >>>>>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) >>>>>>>>> at >>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) >>>>>>>>> at java.lang.Thread.run(Thread.java:745) >>>>>>>>> [2015-12-06 00:29:51,356] INFO >>>>>>>>> {org.apache.stratos.autoscaler.event.receiver.topology.AutoscalerTopologyEventReceiver} >>>>>>>>> - [ClusterTerminatedEvent] Received: class >>>>>>>>> org.apache.stratos.messaging.event.topology.ClusterInstanceTerminatedEvent >>>>>>>>> [2015-12-06 00:29:51,356] INFO >>>>>>>>> {org.apache.stratos.autoscaler.status.processor.group.GroupStatusTerminatedProcessor} >>>>>>>>> - Sending application instance terminated for [application] >>>>>>>>> single-cartridge-app-ec2 [instance] single-cartridge-app-ec2-1 >>>>>>>>> >>>>>>>> >>>>>>>> Looking at the logs, it seems that the instance id has been null >>>>>>>> when the CC tries to terminate the instance, in the terminateInstance >>>>>>>> method. The instance id is returned with NodeMetadata when an instance >>>>>>>> is >>>>>>>> created in EC2. Maybe the instance id is null since the termination was >>>>>>>> started at the same moment in which the call to start the instance [1] >>>>>>>> is >>>>>>>> happening. In such cases the member is removed from the Topology and >>>>>>>> therefore the only option is to manually terminate it from the IaaS. >>>>>>>> IMHO >>>>>>>> such scenarios are difficult to handle from Stratos side. If the >>>>>>>> member is >>>>>>>> correctly removed from the Topology, then it should be fine. >>>>>>>> >>>>>>>> [1]. computeService.createNodesInGroup >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Sun, Dec 6, 2015 at 12:20 AM, Akila Ravihansa Perera < >>>>>>>>> raviha...@wso2.com >>>>>>>>> <javascript:_e(%7B%7D,'cvml','raviha...@wso2.com');>> wrote: >>>>>>>>> >>>>>>>>>> We have few issues in Docker scripts. There are some SNAPSHOT >>>>>>>>>> references [1, 2] which breaks Docker images. >>>>>>>>>> >>>>>>>>>> [1] >>>>>>>>>> https://github.com/apache/stratos/blob/4.1.5-rc2/tools/docker-images/cartridge-docker-images/base-image/Dockerfile#L25 >>>>>>>>>> >>>>>>>>>> [2] >>>>>>>>>> https://github.com/apache/stratos/blob/4.1.5-rc2/tools/docker-images/cartridge-docker-images/base-image/files/run#L29 >>>>>>>>>> >>>>>>>>>> On Sat, Dec 5, 2015 at 8:02 PM, Gayan Gunarathne <gay...@wso2.com >>>>>>>>>> <javascript:_e(%7B%7D,'cvml','gay...@wso2.com');>> wrote: >>>>>>>>>> >>>>>>>>>>> Modify it as 4.1.5-rc2 >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Gayan >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Sat, Dec 5, 2015 at 12:04 PM, Akila Ravihansa Perera < >>>>>>>>>>> raviha...@wso2.com >>>>>>>>>>> <javascript:_e(%7B%7D,'cvml','raviha...@wso2.com');>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi Gayan, >>>>>>>>>>>> >>>>>>>>>>>> The vote is for the tag, not the binaries. Therefore we need to >>>>>>>>>>>> tag the code in order to vote. >>>>>>>>>>>> >>>>>>>>>>>> Also we do not tag with a release version (4.1.5) until the >>>>>>>>>>>> vote has passed. >>>>>>>>>>>> >>>>>>>>>>>> Could you please fix it? >>>>>>>>>>>> >>>>>>>>>>>> Thanks. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Friday, 4 December 2015, Imesh Gunaratne <im...@apache.org >>>>>>>>>>>> <javascript:_e(%7B%7D,'cvml','im...@apache.org');>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi Gayan, >>>>>>>>>>>>> >>>>>>>>>>>>> I do not see the 4.1.5-rc2 tag, have we created it as 4.1.5? >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Dec 3, 2015 at 10:01 AM, Gayan Gunarathne < >>>>>>>>>>>>> gay...@wso2.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi All, >>>>>>>>>>>>>> >>>>>>>>>>>>>> This thread is for discussion of the second release candidate >>>>>>>>>>>>>> for Apache Stratos 4.1.5. Please use this thread for >>>>>>>>>>>>>> discussion of issues uncovered in the RC, questions you may >>>>>>>>>>>>>> have about the RC, etc. >>>>>>>>>>>>>> >>>>>>>>>>>>>> The RC release packs could be found here [1]. A git tag (4.1. >>>>>>>>>>>>>> 5) [2] has been created for this release and its tree view >>>>>>>>>>>>>> could be seen here [3]. >>>>>>>>>>>>>> >>>>>>>>>>>>>> [1] <http://goog_1891852155> >>>>>>>>>>>>>> https://dist.apache.org/repos/dist/dev/stratos/releases/4.1.5-rc2/ >>>>>>>>>>>>>> [2] >>>>>>>>>>>>>> *https://git-wip-us.apache.org/repos/asf?p=stratos.git;a=commit;h=a9f1f51a9ae2829d85bf7b8f2d8fb622db991d25 >>>>>>>>>>>>>> <https://git-wip-us.apache.org/repos/asf?p=stratos.git;a=commit;h=a9f1f51a9ae2829d85bf7b8f2d8fb622db991d25>* >>>>>>>>>>>>>> [3] >>>>>>>>>>>>>> *https://git-wip-us.apache.org/repos/asf?p=stratos.git;a=tree;h=bf33be1ad90c9bd071a5ded8dd440eb83de80ead;hb=a9f1f51a9ae2829d85bf7b8f2d8fb622db991d25 >>>>>>>>>>>>>> <https://git-wip-us.apache.org/repos/asf?p=stratos.git;a=tree;h=bf33be1ad90c9bd071a5ded8dd440eb83de80ead;hb=a9f1f51a9ae2829d85bf7b8f2d8fb622db991d25>* >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> The Apache Stratos team >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> >>>>>>>>>>>>>> Gayan Gunarathne >>>>>>>>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com) >>>>>>>>>>>>>> Committer & PMC Member, Apache Stratos >>>>>>>>>>>>>> email : gay...@wso2.com | mobile : +94 775030545 >>>>>>>>>>>>>> <%2B94%20766819985> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> Imesh Gunaratne >>>>>>>>>>>>> >>>>>>>>>>>>> Senior Technical Lead, WSO2 >>>>>>>>>>>>> Committer & PMC Member, Apache Stratos >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Akila Ravihansa Perera >>>>>>>>>>>> WSO2 Inc.; http://wso2.com/ >>>>>>>>>>>> >>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> >>>>>>>>>>> Gayan Gunarathne >>>>>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com) >>>>>>>>>>> Committer & PMC Member, Apache Stratos >>>>>>>>>>> email : gay...@wso2.com >>>>>>>>>>> <javascript:_e(%7B%7D,'cvml','gay...@wso2.com');> | mobile : +94 >>>>>>>>>>> 775030545 <%2B94%20766819985> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Akila Ravihansa Perera >>>>>>>>>> WSO2 Inc.; http://wso2.com/ >>>>>>>>>> >>>>>>>>>> Blog: http://ravihansa3000.blogspot.com >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Akila Ravihansa Perera >>>>>>>>> WSO2 Inc.; http://wso2.com/ >>>>>>>>> >>>>>>>>> Blog: >>>>>>>>> http://ravihansa3000.blogspot.com >>>>>>>>> >>>>>>>>> -- >>>>>>>>> <http://ravihansa3000.blogspot.com> >>>>>>>>> <http://ravihansa3000.blogspot.com> >>>>>>>>> Thanks and Regards, >>>>>>>>> >>>>>>>>> Isuru H. >>>>>>>>> <http://ravihansa3000.blogspot.com> >>>>>>>>> +94 716 358 048 <http://ravihansa3000.blogspot.com>* >>>>>>>>> <http://wso2.com/>* >>>>>>>>> >>>>>>>>> >>>>>>>>> * <http://wso2.com/>* >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Imesh Gunaratne >>>>>>> >>>>>>> Senior Technical Lead, WSO2 >>>>>>> Committer & PMC Member, Apache Stratos >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Akila Ravihansa Perera >>>>>> WSO2 Inc.; http://wso2.com/ >>>>>> >>>>>> Blog: http://ravihansa3000.blogspot.com >>>>>> >>>>>> -- >>>>>> <http://ravihansa3000.blogspot.com> >>>>>> <http://ravihansa3000.blogspot.com> >>>>>> Thanks and Regards, >>>>>> >>>>>> Isuru H. >>>>>> <http://ravihansa3000.blogspot.com> >>>>>> +94 716 358 048 <http://ravihansa3000.blogspot.com>* >>>>>> <http://wso2.com/>* >>>>>> >>>>>> >>>>>> * <http://wso2.com/>* >>>>>> >>>>>> >>>>>> >>>> >>>> >>>> -- >>>> >>>> Gayan Gunarathne >>>> Technical Lead, WSO2 Inc. (http://wso2.com) >>>> Committer & PMC Member, Apache Stratos >>>> email : gay...@wso2.com >>>> <javascript:_e(%7B%7D,'cvml','gay...@wso2.com');> | mobile : +94 >>>> 775030545 <%2B94%20766819985> >>>> >>>> >>>> >>> >>> >>> >>> -- >>> Sajith Kariyawasam >>> *Committer and PMC member, Apache Stratos, * >>> *WSO2 Inc.; http://wso2.com <http://wso2.com>* >>> *Mobile: 0772269575* >>> >> >> >> >> -- >> Akila Ravihansa Perera >> WSO2 Inc.; http://wso2.com/ >> >> Blog: http://ravihansa3000.blogspot.com >> > > > > -- > Sajith Kariyawasam > *Committer and PMC member, Apache Stratos, * > *WSO2 Inc.; http://wso2.com <http://wso2.com>* > *Mobile: 0772269575* > -- Akila Ravihansa Perera WSO2 Inc.; http://wso2.com/ Blog: http://ravihansa3000.blogspot.com