Hi Anjana, Currently, the implementation is part of the MB code (not a common component).
On Wed, Nov 2, 2016 at 3:00 PM, Anjana Fernando <anj...@wso2.com> wrote: > Hi Asanka/Ramith, > > So for C5 based Streaming Analytics solution, we need coordination > functionality there as well. Is the functionality mentioned here created as > a common component or baked in to the MB code? .. if so, can we please get > it implemented it as a generic component, so other products can also use > it. > > Cheers, > Anjana. > > On Tue, Aug 9, 2016 at 3:10 PM, Anjana Fernando <anj...@wso2.com> wrote: > >> Great! .. >> >> Cheers, >> Anjana. >> >> On Tue, Aug 9, 2016 at 1:49 PM, Asanka Abeyweera <asank...@wso2.com> >> wrote: >> >>> Hi Anjana, >>> >>> Thank you for the suggestion. We have already done a similar thing. We >>> have added a backoff time after creating the leader entry and check if the >>> leader entry is the entry created by self before informing the leader >>> change. >>> >>> On Tue, Aug 9, 2016 at 12:27 PM, Anjana Fernando <anj...@wso2.com> >>> wrote: >>> >>>> I see, thanks for the clarification, looks good! .. I think small thing >>>> to consider is, to avoid the situation where, the current leader goes away, >>>> and two other competes to become the leader, and the first one and the >>>> second one checks (reads) the table to check the last heartbeat and figures >>>> out that the leader is outdated at the same time, and then first one delete >>>> the entry and puts his one, and after that, second one will also delete the >>>> existing one and put his one, so both will think they became the leader, >>>> due to the condition that both succeeded in adding the entry without an >>>> error. So this can probably be fixed by checking back after a bit of time >>>> if the current node is actually me, which probabilistically will work well, >>>> if that time period is sufficient big enough than a typical database >>>> transaction required by a node to do the earlier operations. Or else, we >>>> should make sure the database transaction level used in this scenario is at >>>> least REPEATABLE_READ, where when we read the record, it will lock it >>>> throughout the transaction. So some DBMSs does not support REPEATABLE_READ, >>>> where in that case, we should be able to use SERIALIZABLE, which most of >>>> them support. >>>> >>>> Cheers, >>>> Anjana. >>>> >>>> On Tue, Aug 9, 2016 at 11:11 AM, Maninda Edirisooriya <mani...@wso2.com >>>> > wrote: >>>> >>>>> Hi Anjana, >>>>> >>>>> After having an offline chat with Asanka what I understood was that >>>>> the leader election was done completely via the database but with no >>>>> network communication. The leader is mentioned in the database first. Then >>>>> the leader updates the node data periodically in the database. If some >>>>> node >>>>> realizes the data in the DB are outdated that means the leader was >>>>> disconnected. Then that node will look at the created timestamp of the >>>>> leader entry. If that is not very recent that means there was no new >>>>> leader >>>>> elected recently. So he will try to update the leader entry with his ID. >>>>> As >>>>> I understand there the leader entry is using the leader ID and the >>>>> timestamp as the primary key. Even several nodes try to do it >>>>> simultaneously only one node will successfully be able to update the entry >>>>> with the help of atomicity provided by the DB. Others members will note >>>>> the >>>>> timestamp of the leader was updated so will accept the first one who >>>>> updates as the leader. Even after the leader is elected, the leader will >>>>> only notify node data via updating DB instead of network calls. Other >>>>> nodes >>>>> will just observe it and check the latest timestmps of the entry. >>>>> >>>>> >>>>> *Maninda Edirisooriya* >>>>> Senior Software Engineer >>>>> >>>>> *WSO2, Inc.*lean.enterprise.middleware. >>>>> >>>>> *Blog* : http://maninda.blogspot.com/ >>>>> *E-mail* : mani...@wso2.com >>>>> *Skype* : @manindae >>>>> *Twitter* : @maninda >>>>> >>>>> On Tue, Aug 9, 2016 at 10:13 AM, Anjana Fernando <anj...@wso2.com> >>>>> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> I just noticed this thread. I've some concerns on this >>>>>> implementations. First of all, I don't think the statement mentioned here >>>>>> saying an external service such as ZooKeeper doesn't work, is correct. >>>>>> Because, if you have a ZK cluster (it is suppose to be used as a >>>>>> cluster), >>>>>> you will not have any issues. All the nodes have a list of endpoints to >>>>>> all >>>>>> the ZK nodes and they connect to those, and ZK has a quorum based >>>>>> mechanism >>>>>> in keeping its state. So this makes sure, all the users have a single >>>>>> version of the ZK data. >>>>>> >>>>>> Also, I guess the fundamental problem here in the split brain >>>>>> situation is, we need one external entity taking the decision (e.g. ZK >>>>>> cluster), because it should have oversight to the whole environment. I >>>>>> don't see how this RDBMS mechanism would solve that. Because, what it >>>>>> gives >>>>>> is a central location of state persistence. But the decisions of making >>>>>> who >>>>>> is the leader is taken by the users, which can be problematic. Where when >>>>>> we have a network partition scenario in that occasion, two groups of >>>>>> users >>>>>> will be overriding each other in the centralized RDBMS data repeatedly >>>>>> and >>>>>> it will go on forever, where in the ZK situation, there will be only one >>>>>> leader, and the guys in the other partition simply won't be able to reach >>>>>> the leader, until its network issues are sorted. >>>>>> >>>>>> So I also think, as Imesh mentioned, creating a coordination >>>>>> algorithm from scratch may not be a wise decision, and we should use >>>>>> proven >>>>>> technology/libraries to do that. And on a side note, the main reason for >>>>>> not using ZK for this earlier was because of the hassle of bringing up >>>>>> another set of servers when our products are clustered, and we knew that >>>>>> the split brain scenario will occur in HZ, but maybe now we should give >>>>>> an >>>>>> extension point probably to plug into an external service if for some >>>>>> applications the split brain scenario is a show stopper. >>>>>> >>>>>> Cheers, >>>>>> Anjana. >>>>>> >>>>>> On Tue, Aug 9, 2016 at 4:45 AM, Kasun Indrasiri <ka...@wso2.com> >>>>>> wrote: >>>>>> >>>>>>> Hi Ramith/Asanka, >>>>>>> >>>>>>> ESB/DSS natask impl is also based on HZ. I guess if this model works >>>>>>> for the MB, we should make it generic for all such coordination >>>>>>> requirements. (Thinking about using this in ESB 5.1)? >>>>>>> >>>>>>> On Fri, Aug 5, 2016 at 3:58 AM, Sajini De Silva <saj...@wso2.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi Maninda, >>>>>>>> >>>>>>>> Locking the database will be supported by some databases but >>>>>>>> there will be huge performance impact. So we cannot use that >>>>>>>> approach. If >>>>>>>> this approach cannot be adapted the only thing we can do is queue wise >>>>>>>> load balancing through slot coordinator. But in this case we cannot >>>>>>>> guarantee that load balance will be equally distributed since some >>>>>>>> queues >>>>>>>> can be loaded while some will be idle. Also we cannot have multiple >>>>>>>> slot >>>>>>>> coordinators having same queue as it may cause several complications >>>>>>>> such >>>>>>>> as, same slot is assigned to two nodes by different subscribers, >>>>>>>> message >>>>>>>> duplication etc. Actually this slot architecture was discussed in a >>>>>>>> separate mail thread before it is implemented. >>>>>>>> >>>>>>>> Thanks >>>>>>>> >>>>>>>> On Fri, Aug 5, 2016 at 3:12 PM, Maninda Edirisooriya < >>>>>>>> mani...@wso2.com> wrote: >>>>>>>> >>>>>>>>> Hi Sajini, >>>>>>>>> >>>>>>>>> Yes that is what I meant. As the number of slots are proportional >>>>>>>>> to the number of messages passing through the cluster, slot delivery >>>>>>>>> should >>>>>>>>> not be handled by the coordinator when there is only one coordinator >>>>>>>>> in the >>>>>>>>> cluster which is a bottleneck for scaling messages passing through the >>>>>>>>> cluster. If there is only a single coordinator, it should handle >>>>>>>>> operations >>>>>>>>> that are not proportional to messages throughput of the cluster. Then >>>>>>>>> only >>>>>>>>> the tasks like subscriber adding / removing should be handled by the >>>>>>>>> coordinator. As this is not the current implementation, we can >>>>>>>>> consider >>>>>>>>> multiple coordinator approach. Then the number of coordinators should >>>>>>>>> be >>>>>>>>> scalable with the message throughout. I am not sure whether locking >>>>>>>>> the >>>>>>>>> database per transaction would achieve this coordinator scalability >>>>>>>>> in the >>>>>>>>> multiple coordinator implementation. >>>>>>>>> >>>>>>>>> Thanks. >>>>>>>>> >>>>>>>>> >>>>>>>>> *Maninda Edirisooriya* >>>>>>>>> Senior Software Engineer >>>>>>>>> >>>>>>>>> *WSO2, Inc.*lean.enterprise.middleware. >>>>>>>>> >>>>>>>>> *Blog* : http://maninda.blogspot.com/ >>>>>>>>> *E-mail* : mani...@wso2.com >>>>>>>>> *Skype* : @manindae >>>>>>>>> *Twitter* : @maninda >>>>>>>>> >>>>>>>>> On Fri, Aug 5, 2016 at 2:42 PM, Sajini De Silva <saj...@wso2.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi Maninda, >>>>>>>>>> >>>>>>>>>> On Fri, Aug 5, 2016 at 2:28 PM, Maninda Edirisooriya < >>>>>>>>>> mani...@wso2.com> wrote: >>>>>>>>>> >>>>>>>>>>> @Sajini, >>>>>>>>>>> >>>>>>>>>>> But the number of slots are proportional to the number of >>>>>>>>>>> messages pass through the MB which needs to be handled by the >>>>>>>>>>> coordinator. >>>>>>>>>>> That is what I meant by "information related to meta data of >>>>>>>>>>> messages pass >>>>>>>>>>> through a single coordinator". Ideally after the senders and >>>>>>>>>>> receivers are >>>>>>>>>>> subscribed to the cluster, coordinator should have nothing to do >>>>>>>>>>> until they >>>>>>>>>>> are removed or changed. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Even though it is possible to have multiple coordinators after >>>>>>>>>> having en effort (Lock the database for a whole transaction or the >>>>>>>>>> work >>>>>>>>>> load distribution as described by Ramith) , coordinator may have >>>>>>>>>> different >>>>>>>>>> work to do other than subscriber adding and removing. As I said >>>>>>>>>> earlier our >>>>>>>>>> MB message distribution system is based on slot architecture and >>>>>>>>>> slots will >>>>>>>>>> managed by the coordinator. You can read [1] to understand more >>>>>>>>>> about slot >>>>>>>>>> architecture in MB. >>>>>>>>>> >>>>>>>>>> [1] http://sajinid.blogspot.com/2015/03/wso2-message-broker- >>>>>>>>>> 300-slot-based.html >>>>>>>>>> >>>>>>>>>> Thanks >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> @Ramith, >>>>>>>>>>> >>>>>>>>>>> +1 for multiple coordinators by partitioning the cluster which >>>>>>>>>>> maintains the simplicity and correctness of the algorithm than >>>>>>>>>>> compromising >>>>>>>>>>> simplicity with a less important factor like "delivering a good mix >>>>>>>>>>> of >>>>>>>>>>> messages". >>>>>>>>>>> >>>>>>>>>>> Thanks. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> *Maninda Edirisooriya* >>>>>>>>>>> Senior Software Engineer >>>>>>>>>>> >>>>>>>>>>> *WSO2, Inc.*lean.enterprise.middleware. >>>>>>>>>>> >>>>>>>>>>> *Blog* : http://maninda.blogspot.com/ >>>>>>>>>>> *E-mail* : mani...@wso2.com >>>>>>>>>>> *Skype* : @manindae >>>>>>>>>>> *Twitter* : @maninda >>>>>>>>>>> >>>>>>>>>>> On Fri, Aug 5, 2016 at 2:05 PM, Ramith Jayasinghe < >>>>>>>>>>> ram...@wso2.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> @Imesh, >>>>>>>>>>>> We can prove that doing leader election using a lib (where we >>>>>>>>>>>> maintain cluster state in another place, a.k.a DB) will not solve >>>>>>>>>>>> our >>>>>>>>>>>> original problem (this also relates to our past experience with >>>>>>>>>>>> both the >>>>>>>>>>>> zookeeper and hazelcast). >>>>>>>>>>>> We can make this implementation a common component if other >>>>>>>>>>>> products have a use of it. BPS might be able to use it since their >>>>>>>>>>>> data is >>>>>>>>>>>> also in the database. >>>>>>>>>>>> >>>>>>>>>>>> @Malaka: >>>>>>>>>>>> VFS scenario can't be solved by relying on this >>>>>>>>>>>> implementation. why? you can have the access to DB but not VFS >>>>>>>>>>>> resources/file (and vice versa). this is the same point we >>>>>>>>>>>> explained before. >>>>>>>>>>>> in Ntask implementation, if tasks are stored in the database >>>>>>>>>>>> then using this implementation makes sense. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> @Akila, >>>>>>>>>>>> implementing (distributed) a queue algorithm is non-trivial. >>>>>>>>>>>> Having one coordinator (single source of truth) keeps things >>>>>>>>>>>> simple hence >>>>>>>>>>>> it's a conscious design decision we agreed during the initial >>>>>>>>>>>> stages. >>>>>>>>>>>> However, possible extension to this scheme is to have multiple >>>>>>>>>>>> coordinators >>>>>>>>>>>> ( each responsible for coordinating a subset of queues in the >>>>>>>>>>>> cluster), >>>>>>>>>>>> that will be some what similar to kafka. >>>>>>>>>>>> Even if its preferable to have no coordinator at-all, (to >>>>>>>>>>>> decide how messages are disseminated in the cluster) that will >>>>>>>>>>>> make us >>>>>>>>>>>> give up desired behaviour such as delivering a good mix of >>>>>>>>>>>> messages (from >>>>>>>>>>>> different publishers) to consumers in a cluster. having said this, >>>>>>>>>>>> we have >>>>>>>>>>>> an ongoing research on how to improve the algorithm and we like to >>>>>>>>>>>> try out >>>>>>>>>>>> both these approaches. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Fri, Aug 5, 2016 at 1:31 PM, Malaka Silva <mal...@wso2.com> >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> The same issue with Hazelcast can be experienced with ESB >>>>>>>>>>>>> inbounds (running on top of NTASK) and VFS distribution locks. >>>>>>>>>>>>> >>>>>>>>>>>>> The idea of only single worker works at a given time breaks if >>>>>>>>>>>>> there is a Hazelcast heart beat fails. This will make two workers >>>>>>>>>>>>> to work >>>>>>>>>>>>> in parallel. >>>>>>>>>>>>> >>>>>>>>>>>>> Also with distributed locking there is no guarantee that file >>>>>>>>>>>>> is only process only by one worker. >>>>>>>>>>>>> >>>>>>>>>>>>> So in the case of network fail >>>>>>>>>>>>> with DB >>>>>>>>>>>>> make sense to stop processing until it's recovered. >>>>>>>>>>>>> Also making this component generic ESB can reuse. >>>>>>>>>>>>> >>>>>>>>>>>>> On Fri, Aug 5, 2016 at 9:21 AM, Asitha Nanayakkara < >>>>>>>>>>>>> asi...@wso2.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Imesh, >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Fri, Aug 5, 2016 at 7:33 AM, Imesh Gunaratne < >>>>>>>>>>>>>> im...@wso2.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Fri, Aug 5, 2016 at 7:31 AM, Imesh Gunaratne < >>>>>>>>>>>>>>> im...@wso2.com> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> You can see here [3] how K8S has implemented leader >>>>>>>>>>>>>>>> election feature for the products deployed on top of that to >>>>>>>>>>>>>>>> utilize. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Correction: Please refer [4]. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Thu, Aug 4, 2016 at 7:27 PM, Asanka Abeyweera < >>>>>>>>>>>>>>>>> asank...@wso2.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi Imesh, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> We are not implementing this to overcome a limitation in >>>>>>>>>>>>>>>>>> the coordination algorithm available in the Hazlecast. We >>>>>>>>>>>>>>>>>> are implementing >>>>>>>>>>>>>>>>>> this since we need an RDBMS based coordination algorithm >>>>>>>>>>>>>>>>>> (not a network >>>>>>>>>>>>>>>>>> based algorithm). >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Are you saying that database connections do not use the >>>>>>>>>>>>>>>> same network used by Hazelcast? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> The reason is, a network based election algorithm will >>>>>>>>>>>>>>>>>> always elect multiple leaders when the network is >>>>>>>>>>>>>>>>>> partitioned. But if we >>>>>>>>>>>>>>>>>> use a RDBMS based algorithm this will not happen. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I do not think your argument is correct. If there is a >>>>>>>>>>>>>>>> problem with the network, it may apply to both Hazelcast >>>>>>>>>>>>>>>> based solution >>>>>>>>>>>>>>>> and database based solution. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> Yes, if the same network interface is used network partion >>>>>>>>>>>>>> will cause all types of connections to be partitioned. But user >>>>>>>>>>>>>> can use >>>>>>>>>>>>>> multiple network interfaces for database, Hazelcast and thrift. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Following is the scenario we are trying to solve in MB. >>>>>>>>>>>>>> >>>>>>>>>>>>>> In MB all the details related to messages, subscriptions, >>>>>>>>>>>>>> queues, topics etc are stored in database. And we operate >>>>>>>>>>>>>> depending on that >>>>>>>>>>>>>> information. If the MB node can't connect to the database that >>>>>>>>>>>>>> means the >>>>>>>>>>>>>> node is ineffective in the cluster until it can make a database >>>>>>>>>>>>>> connection. >>>>>>>>>>>>>> >>>>>>>>>>>>>> We have seen instances where Hazelcast cluster get >>>>>>>>>>>>>> partitioned for some time period in networks, Reasons were, >>>>>>>>>>>>>> >>>>>>>>>>>>>> 1. Due to heavy load Hazelcast couldn't process or send >>>>>>>>>>>>>> (some times both) hearbeats, hence a network partition for >>>>>>>>>>>>>> Hazelcast cluster >>>>>>>>>>>>>> 2. An actual network partition of Hazelcast cluster >>>>>>>>>>>>>> >>>>>>>>>>>>>> In both scenarios the database connection was working. In >>>>>>>>>>>>>> that case we get two coordinators elected through Hazelcast and >>>>>>>>>>>>>> working on >>>>>>>>>>>>>> the same database to deliver the messages. this leads to >>>>>>>>>>>>>> inconsistencies in >>>>>>>>>>>>>> the cluster behavior (for instances duplicate message delivery, >>>>>>>>>>>>>> corrupred >>>>>>>>>>>>>> subscription states etc) . >>>>>>>>>>>>>> >>>>>>>>>>>>>> Since the point of interest for MB is the database, we >>>>>>>>>>>>>> decided to do the coordinator election through database as well. >>>>>>>>>>>>>> If the >>>>>>>>>>>>>> node can't connect to the database, then the MB won't operate >>>>>>>>>>>>>> anyway. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Regards, >>>>>>>>>>>>>> Asitha >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>>> [4] http://blog.kubernetes.io/ >>>>>>>>>>>>>>>> 2016/01/simple-leader-election-with-Kubernetes.html >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Thu, Aug 4, 2016 at 7:16 PM, Imesh Gunaratne < >>>>>>>>>>>>>>>>>> im...@wso2.com> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Hi Asanka, >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Do we really need to implement a leader election >>>>>>>>>>>>>>>>>>> algorithm on our own? AFAIU this is a complex problem which >>>>>>>>>>>>>>>>>>> has been >>>>>>>>>>>>>>>>>>> already solved by several algorithms [1]. IMO it would be >>>>>>>>>>>>>>>>>>> better to go >>>>>>>>>>>>>>>>>>> ahead with an existing well established implementation on >>>>>>>>>>>>>>>>>>> etcd [1] or >>>>>>>>>>>>>>>>>>> Consul [2]. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Those provide HTTP APIs for clients to make leader >>>>>>>>>>>>>>>>>>> election calls. [3] is a client library written in Node.js >>>>>>>>>>>>>>>>>>> for etcd based >>>>>>>>>>>>>>>>>>> leader election. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> [1] https://www.projectcalico. >>>>>>>>>>>>>>>>>>> org/using-etcd-for-elections >>>>>>>>>>>>>>>>>>> [2] https://www.consul.io/docs >>>>>>>>>>>>>>>>>>> /guides/leader-election.html >>>>>>>>>>>>>>>>>>> [3] https://www.npmjs.com/package/etcd-leader >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Thanks >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Wed, Aug 3, 2016 at 5:12 PM, Asanka Abeyweera < >>>>>>>>>>>>>>>>>>> asank...@wso2.com> wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Hi Maninda, >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Since we are using RDBMS to poll the node status, the >>>>>>>>>>>>>>>>>>>> cluster will not end up in situation 1,2 or 3. With this >>>>>>>>>>>>>>>>>>>> approach we >>>>>>>>>>>>>>>>>>>> consider a node unreachable when it cannot access the >>>>>>>>>>>>>>>>>>>> database. Therefore >>>>>>>>>>>>>>>>>>>> an unreachable node can never be the leader. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> As you have mentioned, we are currently using the RDBMS >>>>>>>>>>>>>>>>>>>> as an atomic global variable to create the coordinator >>>>>>>>>>>>>>>>>>>> entry. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Tue, Aug 2, 2016 at 5:22 PM, Maninda Edirisooriya < >>>>>>>>>>>>>>>>>>>> mani...@wso2.com> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Hi Asanka, >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> As I understand the accuracy of electing the leader >>>>>>>>>>>>>>>>>>>>> correctly is dependent on the election mechanism with >>>>>>>>>>>>>>>>>>>>> RDBMS because there >>>>>>>>>>>>>>>>>>>>> can be edge cases like, >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 1. Unreachable leader activates during the election >>>>>>>>>>>>>>>>>>>>> process: Then who becomes the leader? >>>>>>>>>>>>>>>>>>>>> 2. The elected leader becomes unreachable before the >>>>>>>>>>>>>>>>>>>>> election is completed: Then will there be a situation >>>>>>>>>>>>>>>>>>>>> where there is no >>>>>>>>>>>>>>>>>>>>> leader? >>>>>>>>>>>>>>>>>>>>> 3. A leader and a set of nodes are disconnected from >>>>>>>>>>>>>>>>>>>>> the other part of the cluster and while the leader is >>>>>>>>>>>>>>>>>>>>> trying to remove >>>>>>>>>>>>>>>>>>>>> unreachable members other part is calling an election to >>>>>>>>>>>>>>>>>>>>> make a leader: Who >>>>>>>>>>>>>>>>>>>>> will win? >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> RDBMS based election algorithm should handle such >>>>>>>>>>>>>>>>>>>>> cases without bringing the cluster to an inconsistent >>>>>>>>>>>>>>>>>>>>> state or dead lock in >>>>>>>>>>>>>>>>>>>>> all concurrent cases. If all these kind of cases cannot >>>>>>>>>>>>>>>>>>>>> be handled isn't it >>>>>>>>>>>>>>>>>>>>> better to keep the current hazelcast clustering and use >>>>>>>>>>>>>>>>>>>>> the RDBMS only to >>>>>>>>>>>>>>>>>>>>> handle the split brain scenario? In other words when a >>>>>>>>>>>>>>>>>>>>> new hazelcast leader >>>>>>>>>>>>>>>>>>>>> is elected it should be updated in the RDBMS. If another >>>>>>>>>>>>>>>>>>>>> split party has >>>>>>>>>>>>>>>>>>>>> already elected a leader, the node who is going to write >>>>>>>>>>>>>>>>>>>>> it to RDBMS should >>>>>>>>>>>>>>>>>>>>> avoid updating it. Simply, the RDBMS can be used as an >>>>>>>>>>>>>>>>>>>>> atomic global >>>>>>>>>>>>>>>>>>>>> variable to keep the leader name by modifying the >>>>>>>>>>>>>>>>>>>>> hazelcast clustering. >>>>>>>>>>>>>>>>>>>>> WDYT? >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Thanks. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> *Maninda Edirisooriya* >>>>>>>>>>>>>>>>>>>>> Senior Software Engineer >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> *WSO2, Inc.*lean.enterprise.middleware. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> *Blog* : http://maninda.blogspot.com/ >>>>>>>>>>>>>>>>>>>>> *E-mail* : mani...@wso2.com >>>>>>>>>>>>>>>>>>>>> *Skype* : @manindae >>>>>>>>>>>>>>>>>>>>> *Twitter* : @maninda >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> On Thu, Jul 28, 2016 at 4:38 PM, Asanka Abeyweera < >>>>>>>>>>>>>>>>>>>>> asank...@wso2.com> wrote: >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Hi Akila, >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Let me explain the issue in a different way. Let's >>>>>>>>>>>>>>>>>>>>>> assume the MB nodes are using two different network >>>>>>>>>>>>>>>>>>>>>> interfaces for >>>>>>>>>>>>>>>>>>>>>> Hazelcast communication and database communication. With >>>>>>>>>>>>>>>>>>>>>> such a >>>>>>>>>>>>>>>>>>>>>> configuration, there can be failures only in the network >>>>>>>>>>>>>>>>>>>>>> interface used for >>>>>>>>>>>>>>>>>>>>>> Hazelcast communication in some nodes. When this >>>>>>>>>>>>>>>>>>>>>> happens, there will be two >>>>>>>>>>>>>>>>>>>>>> or more Hazelcast clusters due to the network >>>>>>>>>>>>>>>>>>>>>> segmentation, and as a result >>>>>>>>>>>>>>>>>>>>>> there will be multiple coordinators. Since every node >>>>>>>>>>>>>>>>>>>>>> still have access to >>>>>>>>>>>>>>>>>>>>>> the database, multiple coordinators can affect the >>>>>>>>>>>>>>>>>>>>>> correctness of the data >>>>>>>>>>>>>>>>>>>>>> stored in the DB. But if we used a RDBMS based approach >>>>>>>>>>>>>>>>>>>>>> we won't have >>>>>>>>>>>>>>>>>>>>>> multiple coordinators due to a network partition in >>>>>>>>>>>>>>>>>>>>>> Hazelcast. This is one >>>>>>>>>>>>>>>>>>>>>> advantage we get from this approach. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Even when we use Zookeeper or RAFT the same issue >>>>>>>>>>>>>>>>>>>>>> will be there since we are using different interfaces >>>>>>>>>>>>>>>>>>>>>> for Hazelcast >>>>>>>>>>>>>>>>>>>>>> communication and DB communication. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> On Thu, Jul 28, 2016 at 2:56 PM, Akila Ravihansa >>>>>>>>>>>>>>>>>>>>>> Perera <raviha...@wso2.com> wrote: >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> What's the advantage of using RDBMS (even as an >>>>>>>>>>>>>>>>>>>>>>> alternative) to implement a leader/coordinator >>>>>>>>>>>>>>>>>>>>>>> election? If the network >>>>>>>>>>>>>>>>>>>>>>> connection to DB fails then this will be a single point >>>>>>>>>>>>>>>>>>>>>>> of failure. I don't >>>>>>>>>>>>>>>>>>>>>>> think we can scale RDBMS instances and expect the >>>>>>>>>>>>>>>>>>>>>>> election algorithm to >>>>>>>>>>>>>>>>>>>>>>> work. That would be reducing this problem to another >>>>>>>>>>>>>>>>>>>>>>> problem (electing >>>>>>>>>>>>>>>>>>>>>>> coordinator RDBMS instance). >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> IMHO it would be better to look at Zookeeper Atomic >>>>>>>>>>>>>>>>>>>>>>> Broadcast (ZAB) [1] or RAFT leader election [2] >>>>>>>>>>>>>>>>>>>>>>> algorithms which have >>>>>>>>>>>>>>>>>>>>>>> already proven results. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> [1] https://cwiki.apache.org/c >>>>>>>>>>>>>>>>>>>>>>> onfluence/display/ZOOKEEPER/Zab1.0 >>>>>>>>>>>>>>>>>>>>>>> [2] http://libraft.io/ >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Thanks. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> On Thu, Jul 28, 2016 at 1:42 PM, Nandika Jayawardana >>>>>>>>>>>>>>>>>>>>>>> <nand...@wso2.com> wrote: >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> +1 to make it a common component . We have the >>>>>>>>>>>>>>>>>>>>>>>> clustering implementation for BPEL component based on >>>>>>>>>>>>>>>>>>>>>>>> hazelcast. If the >>>>>>>>>>>>>>>>>>>>>>>> coordination is available at RDBMS level, we can >>>>>>>>>>>>>>>>>>>>>>>> remove hazelcast >>>>>>>>>>>>>>>>>>>>>>>> dependancy. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Regards >>>>>>>>>>>>>>>>>>>>>>>> Nandika >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> On Thu, Jul 28, 2016 at 1:28 PM, Hasitha Aravinda < >>>>>>>>>>>>>>>>>>>>>>>> hasi...@wso2.com> wrote: >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Can we make it a common component, which is not >>>>>>>>>>>>>>>>>>>>>>>>> hard coupled with MB. BPS has the same requirement. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>>>>> Hasitha. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Jul 28, 2016 at 9:47 AM, Asanka Abeyweera >>>>>>>>>>>>>>>>>>>>>>>>> <asank...@wso2.com> wrote: >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> Hi All, >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> In MB, we have used a coordinator based approach >>>>>>>>>>>>>>>>>>>>>>>>>> to manage distributed messaging algorithm in the >>>>>>>>>>>>>>>>>>>>>>>>>> cluster. Currently >>>>>>>>>>>>>>>>>>>>>>>>>> Hazelcast is used to elect the coordinator. But one >>>>>>>>>>>>>>>>>>>>>>>>>> issue we faced with >>>>>>>>>>>>>>>>>>>>>>>>>> Hazelcast is, during a network segmentation (split >>>>>>>>>>>>>>>>>>>>>>>>>> brain), Hazelcast can >>>>>>>>>>>>>>>>>>>>>>>>>> elect two or more coordinators in the cluster. This >>>>>>>>>>>>>>>>>>>>>>>>>> affects the correctness >>>>>>>>>>>>>>>>>>>>>>>>>> of the distributed messaging algorithm since there >>>>>>>>>>>>>>>>>>>>>>>>>> are some tables in the >>>>>>>>>>>>>>>>>>>>>>>>>> database that should only be edited by a single node >>>>>>>>>>>>>>>>>>>>>>>>>> (i.e. coordinator). >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> As a solution to this problem we have implemented >>>>>>>>>>>>>>>>>>>>>>>>>> minimum node count based approach [1] to deactivate >>>>>>>>>>>>>>>>>>>>>>>>>> set of partitioned >>>>>>>>>>>>>>>>>>>>>>>>>> nodes to stop multiple nodes becoming coordinators >>>>>>>>>>>>>>>>>>>>>>>>>> until the network >>>>>>>>>>>>>>>>>>>>>>>>>> segmentation issue is fixed. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> As an alternative solution, we are thinking of >>>>>>>>>>>>>>>>>>>>>>>>>> implementing an RDBMS based approach to elect the >>>>>>>>>>>>>>>>>>>>>>>>>> coordinator node in the >>>>>>>>>>>>>>>>>>>>>>>>>> cluster. By doing this we can make sure that even >>>>>>>>>>>>>>>>>>>>>>>>>> during a network >>>>>>>>>>>>>>>>>>>>>>>>>> segmentation only one node will be elected as the >>>>>>>>>>>>>>>>>>>>>>>>>> coordinator node since >>>>>>>>>>>>>>>>>>>>>>>>>> the election is happening through the database. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> The algorithm will use a polling mechanism to >>>>>>>>>>>>>>>>>>>>>>>>>> check the validity of the nodes. To make the >>>>>>>>>>>>>>>>>>>>>>>>>> election algorithm scalable, >>>>>>>>>>>>>>>>>>>>>>>>>> only the coordinator node will be checking status of >>>>>>>>>>>>>>>>>>>>>>>>>> all the nodes in the >>>>>>>>>>>>>>>>>>>>>>>>>> cluster and it will inform other nodes through >>>>>>>>>>>>>>>>>>>>>>>>>> database when a member is >>>>>>>>>>>>>>>>>>>>>>>>>> added/left. The nodes will be only checking for the >>>>>>>>>>>>>>>>>>>>>>>>>> status of the >>>>>>>>>>>>>>>>>>>>>>>>>> coordinator node. When a node detect that >>>>>>>>>>>>>>>>>>>>>>>>>> coordinator is invalid it will go >>>>>>>>>>>>>>>>>>>>>>>>>> for a election to elect a new coordinator. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> We are currently working on a POC to test how >>>>>>>>>>>>>>>>>>>>>>>>>> this works with MB's slot based messaging algorithm. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> thoughts? >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> [1] https://wso2.org/jira/browse/MB-1664 >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>>>>>>> Asanka Abeyweera >>>>>>>>>>>>>>>>>>>>>>>>>> Senior Software Engineer >>>>>>>>>>>>>>>>>>>>>>>>>> WSO2 Inc. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> Phone: +94 712228648 >>>>>>>>>>>>>>>>>>>>>>>>>> Blog: a5anka.github.io >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> <https://wso2.com/signature> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/ >>>>>>>>>>>>>>>>>>>>>>>>>> mailman/listinfo/architecture >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>>>>>> Hasitha Aravinda, >>>>>>>>>>>>>>>>>>>>>>>>> Associate Technical Lead, >>>>>>>>>>>>>>>>>>>>>>>>> WSO2 Inc. >>>>>>>>>>>>>>>>>>>>>>>>> Email: hasi...@wso2.com >>>>>>>>>>>>>>>>>>>>>>>>> Mobile : +94 718 210 200 >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/ >>>>>>>>>>>>>>>>>>>>>>>>> mailman/listinfo/architecture >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>>>>> Nandika Jayawardana >>>>>>>>>>>>>>>>>>>>>>>> WSO2 Inc ; http://wso2.com >>>>>>>>>>>>>>>>>>>>>>>> lean.enterprise.middleware >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/ >>>>>>>>>>>>>>>>>>>>>>>> mailman/listinfo/architecture >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>>>> Akila Ravihansa Perera >>>>>>>>>>>>>>>>>>>>>>> WSO2 Inc.; http://wso2.com/ >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/ >>>>>>>>>>>>>>>>>>>>>>> mailman/listinfo/architecture >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>>> Asanka Abeyweera >>>>>>>>>>>>>>>>>>>>>> Senior Software Engineer >>>>>>>>>>>>>>>>>>>>>> WSO2 Inc. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Phone: +94 712228648 >>>>>>>>>>>>>>>>>>>>>> Blog: a5anka.github.io >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> <https://wso2.com/signature> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/ >>>>>>>>>>>>>>>>>>>>>> mailman/listinfo/architecture >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>> Asanka Abeyweera >>>>>>>>>>>>>>>>>>>> Senior Software Engineer >>>>>>>>>>>>>>>>>>>> WSO2 Inc. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Phone: +94 712228648 >>>>>>>>>>>>>>>>>>>> Blog: a5anka.github.io >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> <https://wso2.com/signature> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/ >>>>>>>>>>>>>>>>>>>> mailman/listinfo/architecture >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>> *Imesh Gunaratne* >>>>>>>>>>>>>>>>>>> Software Architect >>>>>>>>>>>>>>>>>>> WSO2 Inc: http://wso2.com >>>>>>>>>>>>>>>>>>> T: +94 11 214 5345 M: +94 77 374 2057 >>>>>>>>>>>>>>>>>>> W: https://medium.com/@imesh TW: @imesh >>>>>>>>>>>>>>>>>>> lean. enterprise. middleware >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/ >>>>>>>>>>>>>>>>>>> mailman/listinfo/architecture >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>> Asanka Abeyweera >>>>>>>>>>>>>>>>>> Senior Software Engineer >>>>>>>>>>>>>>>>>> WSO2 Inc. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Phone: +94 712228648 >>>>>>>>>>>>>>>>>> Blog: a5anka.github.io >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> <https://wso2.com/signature> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/ >>>>>>>>>>>>>>>>>> mailman/listinfo/architecture >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> Ramith Jayasinghe >>>>>>>>>>>>>>>>> Technical Lead >>>>>>>>>>>>>>>>> WSO2 Inc., http://wso2.com >>>>>>>>>>>>>>>>> lean.enterprise.middleware >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> E: ram...@wso2.com >>>>>>>>>>>>>>>>> P: +94 772534930 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/ >>>>>>>>>>>>>>>>> mailman/listinfo/architecture >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> *Imesh Gunaratne* >>>>>>>>>>>>>>>> Software Architect >>>>>>>>>>>>>>>> WSO2 Inc: http://wso2.com >>>>>>>>>>>>>>>> T: +94 11 214 5345 M: +94 77 374 2057 >>>>>>>>>>>>>>>> W: https://medium.com/@imesh TW: @imesh >>>>>>>>>>>>>>>> lean. enterprise. middleware >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> *Imesh Gunaratne* >>>>>>>>>>>>>>> Software Architect >>>>>>>>>>>>>>> WSO2 Inc: http://wso2.com >>>>>>>>>>>>>>> T: +94 11 214 5345 M: +94 77 374 2057 >>>>>>>>>>>>>>> W: https://medium.com/@imesh TW: @imesh >>>>>>>>>>>>>>> lean. enterprise. middleware >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> *Asitha Nanayakkara* <http://asitha.github.io/> >>>>>>>>>>>>>> Senior Software Engineer >>>>>>>>>>>>>> WSO2, Inc. <http://wso2.com/> >>>>>>>>>>>>>> Mob: +94 77 853 0682 >>>>>>>>>>>>>> [image: https://wso2.com/signature] >>>>>>>>>>>>>> <https://wso2.com/signature> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> >>>>>>>>>>>>> Best Regards, >>>>>>>>>>>>> >>>>>>>>>>>>> Malaka Silva >>>>>>>>>>>>> Senior Technical Lead >>>>>>>>>>>>> M: +94 777 219 791 >>>>>>>>>>>>> Tel : 94 11 214 5345 >>>>>>>>>>>>> Fax :94 11 2145300 >>>>>>>>>>>>> Skype : malaka.sampath.silva >>>>>>>>>>>>> LinkedIn : http://www.linkedin.com/pub/malaka-silva/6/33/77 >>>>>>>>>>>>> Blog : http://mrmalakasilva.blogspot.com/ >>>>>>>>>>>>> >>>>>>>>>>>>> WSO2, Inc. >>>>>>>>>>>>> lean . enterprise . middleware >>>>>>>>>>>>> https://wso2.com/signature >>>>>>>>>>>>> http://www.wso2.com/about/team/malaka-silva/ >>>>>>>>>>>>> <http://wso2.com/about/team/malaka-silva/> >>>>>>>>>>>>> https://store.wso2.com/store/ >>>>>>>>>>>>> >>>>>>>>>>>>> Don't make Trees rare, we should keep them with care >>>>>>>>>>>>> >>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Ramith Jayasinghe >>>>>>>>>>>> Technical Lead >>>>>>>>>>>> WSO2 Inc., http://wso2.com >>>>>>>>>>>> lean.enterprise.middleware >>>>>>>>>>>> >>>>>>>>>>>> E: ram...@wso2.com >>>>>>>>>>>> P: +94 772534930 >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>> Architecture@wso2.org >>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Sajini De SIlva >>>>>>>>>> Senior Software Engineer; WSO2 Inc.; http://wso2.com , >>>>>>>>>> Email: saj...@wso2.com >>>>>>>>>> Blog: http://sajinid.blogspot.com/ >>>>>>>>>> Git hub profile: https://github.com/sajinidesilva >>>>>>>>>> >>>>>>>>>> Phone: +94 712797729 >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Sajini De SIlva >>>>>>>> Senior Software Engineer; WSO2 Inc.; http://wso2.com , >>>>>>>> Email: saj...@wso2.com >>>>>>>> Blog: http://sajinid.blogspot.com/ >>>>>>>> Git hub profile: https://github.com/sajinidesilva >>>>>>>> >>>>>>>> Phone: +94 712797729 >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Architecture mailing list >>>>>>>> Architecture@wso2.org >>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Kasun Indrasiri >>>>>>> Director, Integration Technologies >>>>>>> WSO2, Inc.; http://wso2.com >>>>>>> lean.enterprise.middleware >>>>>>> >>>>>>> cell: +1 650 450 2293 >>>>>>> Blog : http://kasunpanorama.blogspot.com/ >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> *Anjana Fernando* >>>>>> Associate Director / Architect >>>>>> WSO2 Inc. | http://wso2.com >>>>>> lean . enterprise . middleware >>>>>> >>>>>> _______________________________________________ >>>>>> Architecture mailing list >>>>>> Architecture@wso2.org >>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> *Anjana Fernando* >>>> Associate Director / Architect >>>> WSO2 Inc. | http://wso2.com >>>> lean . enterprise . middleware >>>> >>> >>> >>> >>> -- >>> Asanka Abeyweera >>> Senior Software Engineer >>> WSO2 Inc. >>> >>> Phone: +94 712228648 >>> Blog: a5anka.github.io >>> >>> <https://wso2.com/signature> >>> >> >> >> >> -- >> *Anjana Fernando* >> Associate Director / Architect >> WSO2 Inc. | http://wso2.com >> lean . enterprise . middleware >> > > > > -- > *Anjana Fernando* > Associate Director / Architect > WSO2 Inc. | http://wso2.com > lean . enterprise . middleware > -- Asanka Abeyweera Senior Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io <https://wso2.com/signature>
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture