Closed
Description
Expected Behavior
A S3 HeadObjectRequest for a missing object throws NoSuchKeyException
Current Behavior
A S3 HeadObjectRequest for a missing object throws NPE
Possible Solution
Make behavior match v1.
Context
Using a HeadObjectRequest to check if the same object already exists before doing a put as to prevent an overwrite.
Your Environment
AWS Java SDK version used: https://mvnrepository.com/artifact/software.amazon.awssdk/bom/2.0.0-preview-5
JDK version used: Oracle JDK 1.8.0_u151
Operating System and version: Win 10 in Wildfly 11.0.0.Final Application Server
2017-11-18 19:24:47,259 INFO [software.amazon.awssdk.core.http.DefaultErrorResponseHandler] (EJB default - 1) Unable to read input stream to string (Invocation Id:016f1163-c297-ab01-0f2a-1ddf21c4694b): java.lang.NullPointerException
at software.amazon.awssdk.utils.IoUtils.toByteArray(IoUtils.java:46)
at software.amazon.awssdk.utils.IoUtils.toString(IoUtils.java:60)
at software.amazon.awssdk.core.http.DefaultErrorResponseHandler.contentToString(DefaultErrorResponseHandler.java:115)
at software.amazon.awssdk.core.http.DefaultErrorResponseHandler.documentFromContent(DefaultErrorResponseHandler.java:105)
at software.amazon.awssdk.core.http.DefaultErrorResponseHandler.createAse(DefaultErrorResponseHandler.java:83)
at software.amazon.awssdk.core.http.DefaultErrorResponseHandler.handle(DefaultErrorResponseHandler.java:70)
at software.amazon.awssdk.core.http.DefaultErrorResponseHandler.handle(DefaultErrorResponseHandler.java:45)
at software.amazon.awssdk.core.internal.http.response.AwsErrorResponseHandler.handleAse(AwsErrorResponseHandler.java:52)
at software.amazon.awssdk.core.internal.http.response.AwsErrorResponseHandler.handle(AwsErrorResponseHandler.java:43)
at software.amazon.awssdk.core.internal.http.response.AwsErrorResponseHandler.handle(AwsErrorResponseHandler.java:31)
at software.amazon.awssdk.core.http.pipeline.stages.HandleResponseStage.handleErrorResponse(HandleResponseStage.java:119)
at software.amazon.awssdk.core.http.pipeline.stages.HandleResponseStage.handleResponse(HandleResponseStage.java:76)
at software.amazon.awssdk.core.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:61)
at software.amazon.awssdk.core.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:44)
at software.amazon.awssdk.core.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:239)
at software.amazon.awssdk.core.http.pipeline.stages.TimerExceptionHandlingStage.execute(TimerExceptionHandlingStage.java:40)
at software.amazon.awssdk.core.http.pipeline.stages.TimerExceptionHandlingStage.execute(TimerExceptionHandlingStage.java:30)
at software.amazon.awssdk.core.http.pipeline.stages.RetryableStage$RetryExecutor.doExecute(RetryableStage.java:141)
at software.amazon.awssdk.core.http.pipeline.stages.RetryableStage$RetryExecutor.execute(RetryableStage.java:107)
at software.amazon.awssdk.core.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:66)
at software.amazon.awssdk.core.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:47)
at software.amazon.awssdk.core.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:239)
at software.amazon.awssdk.core.http.StreamManagingStage.execute(StreamManagingStage.java:62)
at software.amazon.awssdk.core.http.StreamManagingStage.execute(StreamManagingStage.java:46)
at software.amazon.awssdk.core.http.pipeline.stages.FailureProgressPublishingStage.execute(FailureProgressPublishingStage.java:41)
at software.amazon.awssdk.core.http.pipeline.stages.FailureProgressPublishingStage.execute(FailureProgressPublishingStage.java:30)
at software.amazon.awssdk.core.http.pipeline.stages.ClientExecutionTimedStage.executeWithTimer(ClientExecutionTimedStage.java:69)
at software.amazon.awssdk.core.http.pipeline.stages.ClientExecutionTimedStage.execute(ClientExecutionTimedStage.java:53)
at software.amazon.awssdk.core.http.pipeline.stages.ClientExecutionTimedStage.execute(ClientExecutionTimedStage.java:37)
at software.amazon.awssdk.core.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:239)
at software.amazon.awssdk.core.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:239)
at software.amazon.awssdk.core.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:35)
at software.amazon.awssdk.core.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:24)
at software.amazon.awssdk.core.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:325)
at software.amazon.awssdk.core.client.SyncClientHandlerImpl.doInvoke(SyncClientHandlerImpl.java:142)
at software.amazon.awssdk.core.client.SyncClientHandlerImpl.invoke(SyncClientHandlerImpl.java:124)
at software.amazon.awssdk.core.client.SyncClientHandlerImpl.execute(SyncClientHandlerImpl.java:99)
at software.amazon.awssdk.core.client.SyncClientHandlerImpl.execute(SyncClientHandlerImpl.java:75)
at software.amazon.awssdk.core.client.SdkClientHandler.execute(SdkClientHandler.java:47)
at software.amazon.awssdk.services.s3.DefaultS3Client.headObject(DefaultS3Client.java:1620)