private boolean processRow(Object key, Object value) {
    // reset the execContext for each new row
    execContext.resetRow();

    try {
      if (mergeOp.getDone()) {
        return false; //done
      } else {
        row[0] = key;
        row[1] = value;
        mergeOp.process(row, 0);
      }
    } catch (Throwable e) {
      setAborted(true);
      if (e instanceof OutOfMemoryError) {
        // Don't create a new object if we are already out of memory
        throw (OutOfMemoryError) e;
      } else {
        LOG.error("Failed to process row", e);
        throw new RuntimeException(e);
      }
    }
    return true; //give me more
  }
@param key   key to process
@param value value to process
@return true if it is not done and can take more inputs
ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MergeFileRecordProcessor.java