public void statusUpdate(TaskUmbilicalProtocol umbilical) 
  throws IOException {
    int retries = MAX_RETRIES;

    while (true) {
      try {
        if (!umbilical.statusUpdate(getTaskID(), taskStatus).getTaskFound()) {
          if (uberized) {
            LOG.warn("Task no longer available: " + taskId);
            break;
          } else {
            LOG.warn("Parent died.  Exiting " + taskId);
            ExitUtil.terminate(66);
          }
        }
        taskStatus.clearStatus();
        return;
      } catch (InterruptedException ie) {
        Thread.currentThread().interrupt(); // interrupt ourself
      } catch (IOException ie) {
        LOG.warn("Failure sending status update: " + 
                  StringUtils.stringifyException(ie));
        if (--retries == 0) {
          throw ie;
        }
      }
    }
  }
@Test(expected = ExitException.class)
  public void testStatusUpdateExitsInNonUberMode() throws Exception {
    setupTest(false);

    task.statusUpdate(umbilical);
  }