code: synchronized void removeJobTasks(JobInProgress job) {
      // iterate over all the task types
      for (TaskType type : TaskType.values()) {
        // iterate over all the tips of the type under consideration
        for (TaskInProgress tip : job.getTasks(type)) {
          // iterate over all the task-ids in the tip under consideration
          for (TaskAttemptID id : tip.getAllTaskAttemptIDs()) {
            // remove the task-id entry from the jobtracker
            removeTaskEntry(id);
          }
        }
      }
    }
docs: Call {@link #removeTaskEntry(org.apache.hadoop.mapred.TaskAttemptID)}
  for each of the
  job's tasks.
  When the JobTracker is retiring the long-completed
  job, either because it has outlived {@link #RETIRE_JOB_INTERVAL}
  or the limit of {@link #MAX_COMPLETE_USER_JOBS_IN_MEMORY} jobs
  has been reached, we can afford to nuke all it's tasks; a little
  unsafe, but practically feasible.
  
  @param job the job about to be 'retired'