[ https://issues.apache.org/jira/browse/GOSSIP-88?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16057741#comment-16057741 ]
Edward Capriolo commented on GOSSIP-88: --------------------------------------- These are our notes from the conversation we had 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. 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; } [~mirage20] what do you think of this design? > Data Replication Control > ------------------------ > > Key: GOSSIP-88 > URL: https://issues.apache.org/jira/browse/GOSSIP-88 > Project: Gossip > Issue Type: New Feature > Reporter: Mirage Abeysekara > Assignee: Mirage Abeysekara > Labels: gsoc2017 > > Currently shared data and per node data get replicated on all nodes. It is > better to have data replication control with following requirements > * Data should never get replicated > * Data should only get replicated on given set of nodes > * Data should only replicated on its Datacenter > In implementation the AbstractActiveGossiper is currently sending its shared > data and per node data to a randomly selected live member. To control this > replication we add a new property to the message (eg: SharedDataMessage has > a property which says whether this datum need to be replicated or not with a > given member.) and use that property in the AbstractActiveGossiper when > sending data to a member. -- This message was sent by Atlassian JIRA (v6.4.14#64029)