[ 
https://issues.apache.org/jira/browse/GOSSIP-41?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16143745#comment-16143745
 ] 

ASF GitHub Bot commented on GOSSIP-41:
--------------------------------------

Github user edwardcapriolo commented on a diff in the pull request:

    https://github.com/apache/incubator-gossip/pull/68#discussion_r135516447
  
    --- Diff: 
gossip-base/src/main/java/org/apache/gossip/manager/AbstractActiveGossiper.java 
---
    @@ -92,22 +102,59 @@ public final void sendSharedData(LocalMember me, 
LocalMember member){
           UdpSharedDataMessage message = new UdpSharedDataMessage();
           message.setUuid(UUID.randomUUID().toString());
           message.setUriFrom(me.getId());
    -      message.setExpireAt(innerEntry.getValue().getExpireAt());
    -      message.setKey(innerEntry.getValue().getKey());
    -      message.setNodeId(innerEntry.getValue().getNodeId());
    -      message.setTimestamp(innerEntry.getValue().getTimestamp());
    -      message.setPayload(innerEntry.getValue().getPayload());
    -      message.setReplicable(innerEntry.getValue().getReplicable());
    +      copySharedDataMessage(innerEntry.getValue(), message);
           gossipCore.sendOneWay(message, member.getUri());
         }
    -    sharedDataHistogram.update(System.currentTimeMillis() - startTime);
       }
    -  
    +
    +  /** Send shared data by batching together several entries. */
    +  private void sendSharedDataInBulkInternal(LocalMember me, LocalMember 
member) {
    +    UdpSharedDataBulkMessage udpMessage = new UdpSharedDataBulkMessage();
    +    udpMessage.setUuid(UUID.randomUUID().toString());
    +    udpMessage.setUriFrom(me.getId());
    +    for (Entry<String, SharedDataMessage> innerEntry : 
gossipCore.getSharedData().entrySet()) {
    +      if (innerEntry.getValue().getReplicable() != null && 
!innerEntry.getValue().getReplicable()
    +              .shouldReplicate(me, member, innerEntry.getValue())) {
    +        continue;
    +      }
    +      SharedDataMessage message = new SharedDataMessage();
    +      copySharedDataMessage(innerEntry.getValue(), message);
    +      udpMessage.addMessage(message);
    +      if (udpMessage.getMessages().size() == 
gossipSettings.getBulkTransferSize()) {
    +        gossipCore.sendOneWay(udpMessage, member.getUri());
    +        udpMessage = new UdpSharedDataBulkMessage();
    +        udpMessage.setUuid(UUID.randomUUID().toString());
    +        udpMessage.setUriFrom(me.getId());
    +      }
    +    }
    +    if (udpMessage.getMessages().size() > 0) {
    +      gossipCore.sendOneWay(udpMessage, member.getUri());
    +    }
    +  }
    +
    +  private void copySharedDataMessage(SharedDataMessage original, 
SharedDataMessage copy) {
    +    copy.setExpireAt(original.getExpireAt());
    +    copy.setKey(original.getKey());
    +    copy.setNodeId(original.getNodeId());
    +    copy.setTimestamp(original.getTimestamp());
    +    copy.setPayload(original.getPayload());
    +    copy.setReplicable(original.getReplicable());
    +  }
    +
       public final void sendPerNodeData(LocalMember me, LocalMember member){
         if (member == null){
           return;
         }
         long startTime = System.currentTimeMillis();
    +    if (gossipSettings.isBulkTransfer()) {
    +      sendPerNodeDataInBulkInternal(me, member);
    +    } else
    --- End diff --
    
    same deal use { } even for one line if


> Transfer gossip data in bulk
> ----------------------------
>
>                 Key: GOSSIP-41
>                 URL: https://issues.apache.org/jira/browse/GOSSIP-41
>             Project: Gossip
>          Issue Type: Improvement
>            Reporter: Edward Capriolo
>            Assignee: Pooya Salehi
>
> Currently the process that transfers shared data and per node data iterates a 
> map transmitting a single datum at a time using one way communication.  We 
> could transmit more key values at once by simply saying if keys < 100 
> transfer all at once, or by collecting keys and sending in groups of 100. 
> This would greatly lower chatter communicating data.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to