Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-8614

IOUtils#skipFully hangs forever on EOF

VotersStop watchingWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 2.0.0-alpha
    • 0.23.3, 2.0.2-alpha
    • None
    • None

    Description

      IOUtils#skipFully contains this code:

        public static void skipFully(InputStream in, long len) throws IOException {
          while (len > 0) {
            long ret = in.skip(len);
            if (ret < 0) {
              throw new IOException( "Premature EOF from inputStream");
            }
            len -= ret;
          }
        }
      

      The Java documentation is silent about what exactly skip is supposed to do in the event of EOF. However, I looked at both InputStream#skip and ByteArrayInputStream#skip, and they both simply return 0 on EOF (no exception). So it seems safe to assume that this is the standard Java way of doing things in an InputStream.

      Currently IOUtils#skipFully will loop forever if you ask it to skip past EOF!

      Attachments

        1. HADOOP-8614.001.patch
          3 kB
          Colin McCabe

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            cmccabe Colin McCabe
            cmccabe Colin McCabe
            Votes:
            0 Vote for this issue
            Watchers:
            6 Stop watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment