{"record":{"id":"e483c9a7b9aaf3a4","repo":"apache/hadoop","slug":"no-more-entry-in-f","errorCode":null,"errorMessage":"No more entry in \" + f","messagePattern":"No more entry in \" \\+ f","errorType":"exception","errorClass":"NoSuchElementException","httpStatus":null,"severity":"error","filePath":"hadoop-cloud-storage-project/hadoop-bos/src/main/java/org/apache/hadoop/fs/bos/BaiduBosFileSystem.java","lineNumber":168,"sourceCode":"      Progressable progress) throws IOException {\n    throw new UnsupportedOperationException(\n        \"Append is not supported by BaiduBosFileSystem\");\n  }\n\n  @Override\n  public RemoteIterator<LocatedFileStatus> listLocatedStatus(\n      final Path f, final PathFilter filter) throws IOException {\n    return new RemoteIterator<LocatedFileStatus>() {\n      private final FileStatus[] stats = listStatus(f, filter);\n      private int i = 0;\n\n      public boolean hasNext() {\n        return i < stats.length;\n      }\n\n      public LocatedFileStatus next() throws IOException {\n        if (!hasNext()) {\n          throw new NoSuchElementException(\n              \"No more entry in \" + f);\n        }\n        FileStatus result = stats[i++];\n        BlockLocation[] locs = result.isFile()\n            ? getFileBlockLocations(result, 0, result.getLen())\n            : null;\n        return new LocatedFileStatus(result, locs);\n      }\n    };\n  }\n\n  @Override\n  public FSDataOutputStream create(Path f, FsPermission permission,\n      boolean overwrite, int bufferSize, short replication,\n      long blockSize, Progressable progress) throws IOException {\n    Path absolutePath = makeAbsolute(f);\n    String key = pathToKey(absolutePath);\n","sourceCodeStart":150,"sourceCodeEnd":186,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-cloud-storage-project/hadoop-bos/src/main/java/org/apache/hadoop/fs/bos/BaiduBosFileSystem.java#L150-L186","documentation":"The legacy (mapred API) StreamXmlRecordReader reads records delimited by begin/end regex markers taken from job configuration. In its constructor init it calls checkJobGet('stream.recordreader.begin') and checkJobGet('stream.recordreader.end'); if either property is unset, job_.get(prop) returns null and checkJobGet throws IOException 'JobConf: missing required property'. It is a configuration-completeness guard: XML record reading cannot proceed without both markers.","triggerScenarios":"Selecting StreamXmlRecordReader via -inputreader org.apache.hadoop.streaming.StreamXmlRecordReader (or stream.recordreader.class) without also setting stream.recordreader.begin and stream.recordreader.end in the job conf; init is invoked on the task side per split.","commonSituations":"Streaming jobs that read XML/character-delimited records and forget the two -jobconf flags; porting a job between clusters where a job.xml customization was dropped; setting the properties under a typo'd key name (e.g. stream.recordreader.start) so get() returns null.","solutions":["Set both required properties, e.g. -jobconf stream.recordreader.begin='<page>' -jobconf stream.recordreader.end='</page>' on the streaming command line (or jobConf.set(...) for the mapred API).","Verify exact key spelling: the reader reads CONF_NS + 'begin' / CONF_NS + 'end' where CONF_NS is 'stream.recordreader.'.","If you intended plain line input, drop -inputreader StreamXmlRecordReader and use the default LineRecordReader.","Fail fast locally: assert job.get('stream.recordreader.begin') != null before submitting the job."],"exampleFix":"# before\n-inputreader org.apache.hadoop.streaming.StreamXmlRecordReader\n\n# after\n-inputreader org.apache.hadoop.streaming.StreamXmlRecordReader \\\n -jobconf stream.recordreader.begin='<record>' \\\n -jobconf stream.recordreader.end='</record>'","handlingStrategy":"validation","validationCode":"static void requireXmlReaderProps(JobConf job) {\n  for (String k : new String[]{\"stream.recordreader.begin\", \"stream.recordreader.end\"}) {\n    if (job.get(k) == null) throw new IllegalArgumentException(\"missing \" + k);\n  }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pair -inputreader StreamXmlRecordReader with both begin and end -jobconf flags.","Add a pre-submit assertion on the two required keys.","Copy-paste the exact key prefix 'stream.recordreader.'."],"tags":["hadoop","streaming","configuration","missing-property","xml-record-reader"],"backgroundTag":"missing-required-config","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}