{"record":{"id":"d61da98aa911202d","repo":"apache/hadoop","slug":"55","errorCode":"55","errorMessage":"S3 Select is no longer supported","messagePattern":"S3 Select is no longer supported","errorType":"exception","errorClass":"ExitUtil.ExitException","httpStatus":null,"severity":"error","filePath":"hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/S3GuardTool.java","lineNumber":992,"sourceCode":"    if (UNSUPPORTED_COMMANDS.contains(subCommand)) {\n      throw s3guardUnsupported();\n    }\n    switch (subCommand) {\n\n    case BucketInfo.NAME:\n      command = new BucketInfo(conf);\n      break;\n    case BucketTool.NAME:\n      command = new BucketTool(conf);\n      break;\n    case MarkerTool.MARKERS:\n      command = new MarkerTool(conf);\n      break;\n    case Uploads.NAME:\n      command = new Uploads(conf);\n      break;\n    case SelectConstants.NAME:\n      throw new ExitUtil.ExitException(\n          EXIT_UNSUPPORTED_VERSION, SELECT_UNSUPPORTED);\n    default:\n      printHelp();\n      throw new ExitUtil.ExitException(E_USAGE,\n          \"Unknown command \" + subCommand);\n    }\n    try {\n      return ToolRunner.run(conf, command, otherArgs);\n    } finally {\n      IOUtils.cleanupWithLogger(LOG, command);\n    }\n  }\n\n  /**\n   * Main entry point. Calls {@code System.exit()} on all execution paths.\n   * @param args argument list\n   */\n  public static void main(String[] args) {","sourceCodeStart":974,"sourceCodeEnd":1010,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/S3GuardTool.java#L974-L1010","documentation":"The 'select' subcommand of the S3Guard tool throws immediately with exit code 55 (EXIT_UNSUPPORTED_VERSION). AWS retired the S3 Select service and Hadoop removed the S3A Select implementation; the switch case for SelectConstants.NAME exists solely to fail fast with 'S3 Select is no longer supported' instead of dispatching into deleted code.","triggerScenarios":"Running 'hadoop aws s3guard select ...'; any script or management tool that passes 'select' as the subcommand to S3GuardTool.run; jobs migrated from Hadoop 3.3.x or earlier that used S3 Select push-down (fs.s3a.select.* configuration, SelectQuerySpec-based readers).","commonSituations":"Upgrading a cluster from Hadoop 3.3.x where S3 Select CSV/JSON reads worked; AWS's retirement of S3 Select breaking pipelines that pushed SQL predicates into S3A reads; legacy Spark/Hive jobs or distcp-style scripts still invoking the select command.","solutions":["Remove the select subcommand from scripts and read whole objects through the normal S3A input stream, filtering rows in the compute engine","For server-side querying, run Amazon Athena (or another query engine) and write results back to S3, then read them with S3A","Grep code and configuration for 's3guard select', 'fs.s3a.select' and 'SelectQuerySpec' to find every removed usage","Note that pinning to old Hadoop does not help long term - AWS retired the underlying service itself, so all usages must move off S3 Select"],"exampleFix":"# before\nhadoop aws s3guard select -query \"SELECT * FROM S3Object s\" s3a://bucket/data.csv\n# after: read the object and filter client-side\nhadoop fs -text s3a://bucket/data.csv | grep 'pattern'","handlingStrategy":"validation","validationCode":"String sub = firstRemainingArg(conf, args);\nif (SelectConstants.NAME.equals(sub)) {\n  throw new IllegalArgumentException(\"S3 Select usage removed - use plain S3A reads or Athena\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  int rc = S3GuardTool.run(conf, args);\n} catch (ExitUtil.ExitException e) {\n  if (e.getExitCode() == 55) {\n    // EXIT_UNSUPPORTED_VERSION: permanently removed feature, do not retry\n  }\n}","preventionTips":["Sweep for 's3guard select' and 'fs.s3a.select' before planning any Hadoop upgrade","Treat exit code 55 as a hard failure - the AWS service is retired, retries cannot succeed"],"tags":["s3a","s3-select","removed-feature","aws","hadoop-aws","exit-code-55"],"backgroundTag":"removed-feature-unsupported","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}