Why do we pass message object to the shouldRepicated method?

*Mirage Abeysekara*
Undergraduate
Computer Science and Engineering
University of Moratuwa
Twitter: https://twitter.com/MiRAGECreator
GooglePlus: https://plus.google.com/u/0/+MirageAbeysekara

On 24 May 2017 at 20:39, Edward Capriolo <edlinuxg...@gmail.com> wrote:

>
>
> On Wed, May 24, 2017 at 10:24 AM, Mirage Abeysekara <
> mirage...@cse.mrt.ac.lk> wrote:
>
>> Hi Edward,
>>
>> Yes, In the design documentation[1] I wrote a sample of creating a data
>> object which is only replicated in one data center by adding meta-data to
>> the key.
>>
>> For case 1 we can use empty values to dataCenter and replicateNodes
>>
>> {
>> key: lock/foo,
>> replicateNodes: <List of all nodes in ds1>,
>> dataCenter: ds1,
>> expireOn: 2 min
>> }
>>
>> For case 3 we can use a * (star) like special character for the
>> replicateNodes to indicate that value needs to be replicate in this data
>> center.
>>
>> {
>> key: lock/foo,
>> replicateNodes: *,
>> dataCenter: ds1,
>> expireOn: 2 min
>> }
>>
>> I didn't get the case 2, Can you please give an example for case 2 ?
>>
>> [1] https://docs.google.com/document/d/1sKbDs3aLcJxjKeEjXVRt9BnI
>> 1zKIPQTDN6RkDL_jEZc/edit?usp=sharing
>>
>> Thanks,
>>
>> *Mirage Abeysekara*
>> Undergraduate
>> Computer Science and Engineering
>> University of Moratuwa
>> Twitter: https://twitter.com/MiRAGECreator
>> GooglePlus: https://plus.google.com/u/0/+MirageAbeysekara
>>
>> On 22 May 2017 at 20:48, Edward Capriolo <edlinuxg...@gmail.com> wrote:
>>
>>> Mirage,
>>>
>>> We can keep a majority of communication on list but our mentor-mentee
>>> specific communications like updates can probably be personal to you and me.
>>>
>>> During reading your paper we discussed a need for a feature that would
>>> be tangential but important for your work.
>>>
>>> Currently all the shared and per node data are replicated to all nodes.
>>> We need a way to control this that should account for three cases
>>>
>>> 1) Data should never be replicated
>>> 2) Data should only be replicated to nodes in white list/ black list
>>> 3) Data should be replicated to nodes that are in the same
>>> datacenter/cluster (using the map of key value properties that is part of
>>> each gossip member)
>>>
>>> Do you remember this conversation and can you share your thoughts?
>>>
>>> Thanks,
>>> Edward
>>>
>>>
>>>
>>> On Mon, May 22, 2017 at 11:11 AM, Mirage Abeysekara <
>>> mirage...@cse.mrt.ac.lk> wrote:
>>>
>>>> What I worked on since last meeting?
>>>>
>>>>    - None
>>>>
>>>> What am I going to work on next?
>>>>
>>>>    - Go through the new multi-module project structure
>>>>
>>>> Any blockers?
>>>>
>>>>    - None
>>>>
>>>> Thanks,
>>>>
>>>> *Mirage Abeysekara*
>>>> Undergraduate
>>>> Computer Science and Engineering
>>>> University of Moratuwa
>>>> Twitter: https://twitter.com/MiRAGECreator
>>>> GooglePlus: https://plus.google.com/u/0/+MirageAbeysekara
>>>>
>>>
>>>
>>
> Yes I want to refine this a bit:
>
> Note:
> https://github.com/apache/incubator-gossip/blob/master/
> gossip-base/src/main/java/org/apache/gossip/manager/
> AbstractActiveGossiper.java#L72
>
> https://github.com/apache/incubator-gossip/blob/master/
> gossip-base/src/main/java/org/apache/gossip/manager/
> AbstractActiveGossiper.java#L87
>
> https://github.com/apache/incubator-gossip/blob/master/
> gossip-base/src/main/java/org/apache/gossip/model/SharedDataMessage.java
>
> A role of the ActiveGossiper is to periodically sweep through data and
> re-transmit it. What we need is an interface that will be a member of
> SharedDataMessage and PerNodeMessage.
>
> Something like this:
>
> public interface Replicatable {
>    boolean shouldRepicated(LocalMember me, LocalMember destination,
> SharedDataMessage)
> }
>
> public class NotReplicatable implements Replicatable {
>   boolean shouldRepicated(LocalMember me, LocalMember destination,
> SharedDataMessage) {
>   return false
>   }
> }
>
> public class OnlySameDcReplicatable implements Replicatable {
>     boolean shouldRepicated(LocalMember me, LocalMember destination,
> SharedDataMessage) {
>      return me.getProperties().equals(destination.getProperties())
>   }
> }
>
>
> When someone creates a SharedDataMessage this would be set as a required
> property.
>
> So the loop changes to:
>
> for (Entry<String, SharedDataMessage> innerEntry : gossipCore.
> getSharedData().entrySet()){
>
> if (!innerEntry.getReplication.shouldReplicate(me, other, innerEntry){
> continue;
> }
>
> Does this make sense? We should be able to do this and ticket it as a
> separate entity.
>

Reply via email to