You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@gossip.apache.org by "Edward Capriolo (JIRA)" <ji...@apache.org> on 2017/06/21 15:56:00 UTC

[jira] [Commented] (GOSSIP-88) Data Replication Control

    [ 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)