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

TestS3AContractOpen#testOpenReadZeroByteFile fails due to negative range header

VotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Invalid
    • 2.7.0, 3.0.0-alpha1
    • None
    • fs/s3
    • None

    Description

      TestS3AContractOpen#testOpenReadZeroByteFile fails as follows.

      testOpenReadZeroByteFile(org.apache.hadoop.fs.contract.s3a.TestS3AContractOpen)  Time elapsed: 3.312 sec  <<< ERROR!
      com.amazonaws.services.s3.model.AmazonS3Exception: Status Code: 416, AWS Service: Amazon S3, AWS Request ID: A58A95E0D36811E4, AWS Error Code: InvalidRange, AWS Error Message: The requested range cannot be satisfied.
      	at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:798)
      	at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:421)
      	at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:232)
      	at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3528)
      	at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1111)
      	at org.apache.hadoop.fs.s3a.S3AInputStream.reopen(S3AInputStream.java:91)
      	at org.apache.hadoop.fs.s3a.S3AInputStream.openIfNeeded(S3AInputStream.java:62)
      	at org.apache.hadoop.fs.s3a.S3AInputStream.read(S3AInputStream.java:127)
      	at java.io.FilterInputStream.read(FilterInputStream.java:83)
      	at org.apache.hadoop.fs.contract.AbstractContractOpenTest.testOpenReadZeroByteFile(AbstractContractOpenTest.java:66)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      	at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74)
      

      This is because the header is wrong when calling S3AInputStream#read after S3AInputStream#open.

      Range: bytes=0--1
      * from 0 to -1
      

      Tested on the latest branch-2.7.

      $ git log
      commit d286673c602524af08935ea132c8afd181b6e2e4
      Author: Jitendra Pandey <Jitendra@Jitendra-Pandeys-MacBook-Pro-4.local>
      Date: Tue Mar 24 16:17:06 2015 -0700

      Attachments

        1. HADOOP-11753-branch-2.7.001.patch
          0.8 kB
          Tadayoshi Sato

        Activity

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

          People

            tsato Tadayoshi Sato
            tsato Tadayoshi Sato
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment