code: private static long delayStartingTask(JobConf conf) {
      long delayMs =
          conf.getLong(MAPREDUCE_TASK_DELAY_MS, MAPREDUCE_TASK_DELAY_MS_DEFAULT);
      try {
        Thread.sleep(delayMs);
      } catch (InterruptedException e) {
        LOG.info("delayStartingTask: Unexpected interruption of " +
            delayMs + " ms");
      }
  
      return delayMs;
    }
docs: Corona will schedule tasks immediately after a failure, which can cause
  the new task to potentially coincide with the failed task JVM still
  running.  Concurrent running JVMs can cause failure if they expect an
  initial amount of memory available.  As a temporary workaround, there
  is an option to set a customizable delay to starting every task in
  milliseconds based on the cluster/job configuration.
  
  @return Milliseconds of delay