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
- Verify the path exists: 'hadoop fs -ls s3a://bucket/parent/' and correct the argument
- Check the bucket spelling and that the bucket is reachable with current credentials
- 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
- Pre-check path existence with fs.exists before launching audit/clean jobs
- Treat exit 44 from the markers tool as a path bug, not a transient S3 error
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
- 42
- Specified path ${path}does not exist
- Source path %s does not exist
- No such file or directory
- No such file or directory
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/246eeac5f3893182.
Report an issue: GitHub.