public Task<?> getAndInitBackupTask() {
    if (backupTask != null) {
      // first set back the backup task with its children task.
      if( backupChildrenTasks!= null) {
        for (Task<?> backupChild : backupChildrenTasks) {
          backupChild.getParentTasks().add(backupTask);
        }
      }

      // recursively remove task from its children tasks if this task doesn't have any parent task
      this.removeFromChildrenTasks();
    }
    return backupTask;
  }
This method is overridden in each Task. TODO execute should return a TaskHandle.

@return status of executing the task
ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java