apache/hadoop · error · ExitUtil.ExitException

44

44

Error message

Not found: {target}

What it means

Before scanning, the markers tool qualifies the supplied path against the filesystem URI (path.makeQualified(fs.getUri(), new Path("/"))) and calls getFileStatus(target) as a safety check. FileNotFoundException is converted to ExitUtil.ExitException EXIT_NOT_FOUND (44) with 'Not found: <qualified target>'; a missing bucket surfaces separately as UnknownStoreException with the exception text as the message.

Source

Thrown at hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/tools/MarkerTool.java:364

      throws IOException {
    S3AFileSystem fs = bindFilesystem(scanArgs.getSourceFS());

    // extract the callbacks needed for the rest of the work
    storeContext = fs.createStoreContext();
    // qualify the path
    Path path = scanArgs.getPath();
    Path target = path.makeQualified(fs.getUri(), new Path("/"));
    // initial safety check: does the path exist?
    try {
      getFilesystem().getFileStatus(target);
    } catch (UnknownStoreException ex) {
      // bucket doesn't exist.
      // replace the stack trace with an error code.
      throw new ExitUtil.ExitException(EXIT_NOT_FOUND,
          ex.toString(), ex);

    } catch (FileNotFoundException ex) {
      throw new ExitUtil.ExitException(EXIT_NOT_FOUND,
          "Not found: " + target, ex);
    }

    // the default filter policy is that all entries should be deleted
    int minMarkerCount = scanArgs.getMinMarkerCount();
    int maxMarkerCount = scanArgs.getMaxMarkerCount();
    // extract the callbacks needed for the rest of the work
    operations = fs.createMarkerToolOperations(
        target.toString());
    return scan(target,
        scanArgs.isDoPurge(),
        minMarkerCount,
        maxMarkerCount,
        scanArgs.getLimit()
    );
  }

  /**

View on GitHub (pinned to 2add963021)

Solutions

  1. Verify the path exists: 'hadoop fs -ls s3a://bucket/parent/' and correct the argument
  2. Check the bucket spelling and that the bucket is reachable with current credentials
  3. Run -audit before -clean to confirm the tree exists and see the marker count

Example fix

# before
hadoop aws s3guard markers -clean s3a://my-bucket/tabls
# after (typo fixed)
hadoop aws s3guard markers -clean s3a://my-bucket/tables
Defensive patterns

Strategy: validation

Validate before calling

FileSystem fs = path.getFileSystem(conf);
Path target = path.makeQualified(fs.getUri(), new Path("/"));
if (!fs.exists(target)) {
  System.err.println("refusing to scan missing path: " + target);
  return 44;
}

Try / catch

try {
  int rc = new MarkerTool(conf).exec(args);
} catch (ExitUtil.ExitException e) {
  if (e.getExitCode() == 44) {
    // EXIT_NOT_FOUND: verify/list the parent, fix the path; do not blind-retry
  }
}

Prevention

When it happens

Trigger: Running markers -audit or -clean on a path that does not exist: a typo in the directory name, a directory deleted since the last audit, or the wrong bucket name (bucket missing entirely takes the UnknownStoreException branch).

Common situations: Rerunning a cleanup after the tree was already removed; copy-pasted paths from old jobs; trailing whitespace or wrong path separators in the argument.

Related errors


AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22). Data as JSON: /api/errors/246eeac5f3893182. Report an issue: GitHub.