You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@tez.apache.org by "Bikas Saha (JIRA)" <ji...@apache.org> on 2014/04/10 20:14:19 UTC

[jira] [Created] (TEZ-1036) Shuffle deduping should be global and not local to the MapHost

Bikas Saha created TEZ-1036:
-------------------------------

             Summary: Shuffle deduping should be global and not local to the MapHost
                 Key: TEZ-1036
                 URL: https://issues.apache.org/jira/browse/TEZ-1036
             Project: Apache Tez
          Issue Type: Bug
            Reporter: Bikas Saha


The following logic needs to be across all fetchers and not within a maphost.

{code}
List<InputAttemptIdentifier> origList = host.getAndClearKnownMaps();

    Map<Integer, InputAttemptIdentifier> dedupedList = new LinkedHashMap<Integer, InputAttemptIdentifier>();
    Iterator<InputAttemptIdentifier> listItr = origList.iterator();
    while (listItr.hasNext()) {
      // we may want to try all versions of the input but with current retry
      // behavior older ones are likely to be lost and should be ignored.
      // This may be removed after TEZ-914
      InputAttemptIdentifier id = listItr.next();
      if (inputShouldBeConsumed(id)) {
        Integer inputNumber = new Integer(id.getInputIdentifier().getInputIndex());
        InputAttemptIdentifier oldId = dedupedList.get(inputNumber);
        if (oldId == null || oldId.getAttemptNumber() < id.getAttemptNumber()) {
          dedupedList.put(inputNumber, id);
          if (oldId != null) {
            LOG.warn("Old Src for InputIndex: " + inputNumber + " with attemptNumber: "
                + oldId.getAttemptNumber()
                + " was not determined to be invalid. Ignoring it for now in favour of "
                + id.getAttemptNumber());
          }
        }
      } else {
        LOG.info("Ignoring finished or obsolete source: " + id);
      }
    }{code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)