Uploaded image for project: 'Hama'
  1. Hama
  2. HAMA-794

When aggregator is enabled, resending message in each message receiving round impacts the iteration performance.

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • None
    • 0.7.0
    • graph
    • None

    Description

      When aggregator is enabled, in each message receiving round, all received message have been resent to put them behind the aggregate message. doAggregationUpdates method of GraphJobRunner Class:

          if (aggregationRunner.isEnabled() && iteration > 1) {
            // in case we need to sync, we need to replay the messages that already
            // are added to the queue. This prevents loosing messages when using
            // aggregators.
            if (firstVertexMessage != null) {
              peer.send(peer.getPeerName(), firstVertexMessage);
            }
            GraphJobMessage msg = null;
            while ((msg = peer.getCurrentMessage()) != null) {
              peer.send(peer.getPeerName(), msg);
            }
            // now sync
            peer.sync();
            ...
      

      Should we do some improvement here? Record the original receiveQueue before the sync, and after sync operation, read the aggregator updated value firstly, then restore the original receiveQueue such that avoiding the message resending operations.

      Attachments

        Issue Links

          Activity

            People

              kennethxian MaoYuan Xian
              kennethxian MaoYuan Xian
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: