Hi,

On Wed, Nov 2, 2016 at 3:14 PM, Asanka Abeyweera <[email protected]> wrote:

> Hi Anjana,
>
> Currently, the implementation is part of the MB code (not a common
> component).
>

Okay, can we please get it as a common component.

Cheers,
Anjana.


>
> On Wed, Nov 2, 2016 at 3:00 PM, Anjana Fernando <[email protected]> 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 <[email protected]> wrote:
>>
>>> Great! ..
>>>
>>> Cheers,
>>> Anjana.
>>>
>>> On Tue, Aug 9, 2016 at 1:49 PM, Asanka Abeyweera <[email protected]>
>>> 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 <[email protected]>
>>>> 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 <
>>>>> [email protected]> 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* : [email protected]
>>>>>> *Skype* : @manindae
>>>>>> *Twitter* : @maninda
>>>>>>
>>>>>> On Tue, Aug 9, 2016 at 10:13 AM, Anjana Fernando <[email protected]>
>>>>>> 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 <[email protected]>
>>>>>>> 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 <[email protected]>
>>>>>>>> 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 <
>>>>>>>>> [email protected]> 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* : [email protected]
>>>>>>>>>> *Skype* : @manindae
>>>>>>>>>> *Twitter* : @maninda
>>>>>>>>>>
>>>>>>>>>> On Fri, Aug 5, 2016 at 2:42 PM, Sajini De Silva <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Maninda,
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Aug 5, 2016 at 2:28 PM, Maninda Edirisooriya <
>>>>>>>>>>> [email protected]> 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* : [email protected]
>>>>>>>>>>>> *Skype* : @manindae
>>>>>>>>>>>> *Twitter* : @maninda
>>>>>>>>>>>>
>>>>>>>>>>>> On Fri, Aug 5, 2016 at 2:05 PM, Ramith Jayasinghe <
>>>>>>>>>>>> [email protected]> 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 <[email protected]>
>>>>>>>>>>>>> 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 <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Fri, Aug 5, 2016 at 7:33 AM, Imesh Gunaratne <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Fri, Aug 5, 2016 at 7:31 AM, Imesh Gunaratne <
>>>>>>>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>>>>>>>>>> [email protected]> 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, i​t 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 <
>>>>>>>>>>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>>>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>>>>>>>>>>>>> [email protected]> 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* : [email protected]
>>>>>>>>>>>>>>>>>>>>>> *Skype* : @manindae
>>>>>>>>>>>>>>>>>>>>>> *Twitter* : @maninda
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> On Thu, Jul 28, 2016 at 4:38 PM, Asanka Abeyweera <
>>>>>>>>>>>>>>>>>>>>>> [email protected]> 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 <[email protected]> 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 <[email protected]> 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
>>>>>>>>>>>>>>>>>>>>>>>>> <[email protected]> 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
>>>>>>>>>>>>>>>>>>>>>>>>>> <[email protected]> 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
>>>>>>>>>>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/
>>>>>>>>>>>>>>>>>>>>>>>>>>> mailman/listinfo/architecture
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>>>>>> Hasitha Aravinda,
>>>>>>>>>>>>>>>>>>>>>>>>>> Associate Technical Lead,
>>>>>>>>>>>>>>>>>>>>>>>>>> WSO2 Inc.
>>>>>>>>>>>>>>>>>>>>>>>>>> Email: [email protected]
>>>>>>>>>>>>>>>>>>>>>>>>>> Mobile : +94 718 210 200
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/
>>>>>>>>>>>>>>>>>>>>>>>>>> mailman/listinfo/architecture
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>>>>> Nandika Jayawardana
>>>>>>>>>>>>>>>>>>>>>>>>> WSO2 Inc ; http://wso2.com
>>>>>>>>>>>>>>>>>>>>>>>>> lean.enterprise.middleware
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/
>>>>>>>>>>>>>>>>>>> mailman/listinfo/architecture
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>> Ramith Jayasinghe
>>>>>>>>>>>>>>>>>> Technical Lead
>>>>>>>>>>>>>>>>>> WSO2 Inc., http://wso2.com
>>>>>>>>>>>>>>>>>> lean.enterprise.middleware
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> E: [email protected]
>>>>>>>>>>>>>>>>>> P: +94 772534930
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Ramith Jayasinghe
>>>>>>>>>>>>> Technical Lead
>>>>>>>>>>>>> WSO2 Inc., http://wso2.com
>>>>>>>>>>>>> lean.enterprise.middleware
>>>>>>>>>>>>>
>>>>>>>>>>>>> E: [email protected]
>>>>>>>>>>>>> P: +94 772534930
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Sajini De SIlva
>>>>>>>>>>> Senior Software Engineer; WSO2 Inc.; http://wso2.com ,
>>>>>>>>>>> Email: [email protected]
>>>>>>>>>>> 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: [email protected]
>>>>>>>>> Blog: http://sajinid.blogspot.com/
>>>>>>>>> Git hub profile: https://github.com/sajinidesilva
>>>>>>>>>
>>>>>>>>> Phone: +94 712797729
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Architecture mailing list
>>>>>>>>> [email protected]
>>>>>>>>> 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
>>>>>>> [email protected]
>>>>>>> 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>
>



-- 
*Anjana Fernando*
Associate Director / Architect
WSO2 Inc. | http://wso2.com
lean . enterprise . middleware
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to