code: public void run() {
      while (running) {
        try {
          LOG.info("FileFixer continuing to run...");
          doFindFiles();
        } catch (Exception e) {
          LOG.error(StringUtils.stringifyException(e));
        } catch (Error err) {
          LOG.error("Exiting after encountering " +
                      StringUtils.stringifyException(err));
          shutdown();
          throw err;
        }
        try {
          // Sleep before proceeding to fix more files.
          Thread.sleep(blockFixInterval);
        } catch (InterruptedException ie) {
          LOG.error("Encountering InturruptedException " +
                     StringUtils.stringifyException(ie));
        }
      }
    }
docs: A singleton thread that finds corrupted files and then schedules
  blocks to be copied. This thread talks only to NameNodes and does
  not talk to any datanodes.