code: private synchronized void failMap(TaskInProgress tip) {
      if (nonRunningMapCache == null) {
        LOG.warn("Non-running cache for maps missing!! "
                 + "Job details are missing.");
        return;
      }
  
      // 1. Its added everywhere since other nodes (having this split local)
      //    might have removed this tip from their local cache
      // 2. Give high priority to failed tip - fail early
  
      String[] splitLocations = tip.getSplitLocations();
  
      // Add the TIP in the front of the list for non-local non-running maps
      if (splitLocations.length == 0) {
        nonLocalMaps.add(0, tip);
        return;
      }
  
      for(String host: splitLocations) {
        Node node = jobtracker.getNode(host);
  
        for (int j = 0; j < maxLevel; ++j) {
          List<TaskInProgress> hostMaps = nonRunningMapCache.get(node);
          if (hostMaps == null) {
            hostMaps = new LinkedList<TaskInProgress>();
            nonRunningMapCache.put(node, hostMaps);
          }
          hostMaps.add(0, tip);
          node = node.getParent();
        }
      }
    }
docs: Adds the failed TIP in the front of the list for non-running maps
  @param tip the tip that needs to be failed