{"record":{"id":"246eeac5f3893182","repo":"apache/hadoop","slug":"44-246eea","errorCode":"44","errorMessage":"Not found: {target}","messagePattern":"Not found: (.+?)","errorType":"error_code","errorClass":"ExitUtil.ExitException","httpStatus":null,"severity":"error","filePath":"hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/tools/MarkerTool.java","lineNumber":364,"sourceCode":"      throws IOException {\n    S3AFileSystem fs = bindFilesystem(scanArgs.getSourceFS());\n\n    // extract the callbacks needed for the rest of the work\n    storeContext = fs.createStoreContext();\n    // qualify the path\n    Path path = scanArgs.getPath();\n    Path target = path.makeQualified(fs.getUri(), new Path(\"/\"));\n    // initial safety check: does the path exist?\n    try {\n      getFilesystem().getFileStatus(target);\n    } catch (UnknownStoreException ex) {\n      // bucket doesn't exist.\n      // replace the stack trace with an error code.\n      throw new ExitUtil.ExitException(EXIT_NOT_FOUND,\n          ex.toString(), ex);\n\n    } catch (FileNotFoundException ex) {\n      throw new ExitUtil.ExitException(EXIT_NOT_FOUND,\n          \"Not found: \" + target, ex);\n    }\n\n    // the default filter policy is that all entries should be deleted\n    int minMarkerCount = scanArgs.getMinMarkerCount();\n    int maxMarkerCount = scanArgs.getMaxMarkerCount();\n    // extract the callbacks needed for the rest of the work\n    operations = fs.createMarkerToolOperations(\n        target.toString());\n    return scan(target,\n        scanArgs.isDoPurge(),\n        minMarkerCount,\n        maxMarkerCount,\n        scanArgs.getLimit()\n    );\n  }\n\n  /**","sourceCodeStart":346,"sourceCodeEnd":382,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/tools/MarkerTool.java#L346-L382","documentation":"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.","triggerScenarios":"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).","commonSituations":"Rerunning a cleanup after the tree was already removed; copy-pasted paths from old jobs; trailing whitespace or wrong path separators in the argument.","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"],"exampleFix":"# before\nhadoop aws s3guard markers -clean s3a://my-bucket/tabls\n# after (typo fixed)\nhadoop aws s3guard markers -clean s3a://my-bucket/tables","handlingStrategy":"validation","validationCode":"FileSystem fs = path.getFileSystem(conf);\nPath target = path.makeQualified(fs.getUri(), new Path(\"/\"));\nif (!fs.exists(target)) {\n  System.err.println(\"refusing to scan missing path: \" + target);\n  return 44;\n}","typeGuard":null,"tryCatchPattern":"try {\n  int rc = new MarkerTool(conf).exec(args);\n} catch (ExitUtil.ExitException e) {\n  if (e.getExitCode() == 44) {\n    // EXIT_NOT_FOUND: verify/list the parent, fix the path; do not blind-retry\n  }\n}","preventionTips":["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"],"tags":["s3a","path-not-found","directory-markers","exit-code-44"],"backgroundTag":"path-not-found","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}